草庐IT

android - View.onDraw() --- 它什么时候被调用?

我将Log.d()调用放入扩展View的onDraw()中,这样我就可以看到调用的频率和时间。它在View的实例化时被调用,这并不奇怪。但后来我注意到,它会在onTouchEvent()处理的每次点击时被调用,即使我的代码没有做任何与图形远程相关的事情。然而,在documentation对于View,我似乎找不到任何关于何时实际调用onDraw()的信息。我并不真正关心我在这里的特定项目(这对我来说不会造成问题),我只想知道某处是否有一个列表或显示View操作顺序的东西,特别是什么原因onDraw()被调用。 最佳答案 AFAIK,

android - View.onDraw() --- 它什么时候被调用?

我将Log.d()调用放入扩展View的onDraw()中,这样我就可以看到调用的频率和时间。它在View的实例化时被调用,这并不奇怪。但后来我注意到,它会在onTouchEvent()处理的每次点击时被调用,即使我的代码没有做任何与图形远程相关的事情。然而,在documentation对于View,我似乎找不到任何关于何时实际调用onDraw()的信息。我并不真正关心我在这里的特定项目(这对我来说不会造成问题),我只想知道某处是否有一个列表或显示View操作顺序的东西,特别是什么原因onDraw()被调用。 最佳答案 AFAIK,

android - 试图在 ImageView 中获取图像的显示大小

我正在尝试获取ImageView中显示的图像的实际大小。实际上我的图像比屏幕大,并且ImageView正在调整图像大小以显示它。我正在寻找这种新尺寸。我尝试在自定义View中覆盖ImageView的onDraw方法,但没有得到正确的高度和宽度...publicclassLandImageViewextendsImageView{publicLandImageView(Contextcontext){super(context);}publicLandImageView(Contextcontext,AttributeSetattrs){super(context,attrs);}pub

android - 试图在 ImageView 中获取图像的显示大小

我正在尝试获取ImageView中显示的图像的实际大小。实际上我的图像比屏幕大,并且ImageView正在调整图像大小以显示它。我正在寻找这种新尺寸。我尝试在自定义View中覆盖ImageView的onDraw方法,但没有得到正确的高度和宽度...publicclassLandImageViewextendsImageView{publicLandImageView(Contextcontext){super(context);}publicLandImageView(Contextcontext,AttributeSetattrs){super(context,attrs);}pub

android - RecyclerView.itemDecoration onDraw c.drawLine 与 Lollipop 之前的设备不兼容?

我正在尝试创建我自己的扩展到RecyclerView的CustomDivider类。ItemDecoration基于Google的示例,其中有一个分隔线。幸运的是,我试过的代码可以运行,但我只在运行于Lollipop的模拟器中尝试过,我发现它在我的Kitkat设备上不起作用。这是模拟器和结果的屏幕截图。这是我运行Kitkat的AsusZenfone4的屏幕截图。这是我的代码:publicclassCustomDividerextendsRecyclerView.ItemDecoration{publicstaticfinalintLINEAR_HORIZONTAL_LIST=Linea

android - 从 onDraw() 调用 getDrawingCache() 时发生 StackOverflowError

我有一个手动绘制的自定义View。我正在将东西绘制到位图中,然后在onDraw()中使用该位图。我意识到,如果我启用绘图缓存,我可以使用该缓存而不是创建我自己的位图。这主要有效。目前我的onDraw方法是这样的:protectedvoidonDraw(Canvascanvas){canvas.drawBitmap(getDrawingCache(),0,0,null);}这适用于我试过的模拟器。但是我收到了关于StackOverflowError的崩溃报告。报告看起来像这样:java.lang.StackOverflowErroratandroid.view.View.getDrawi

java - Android 自定义 View 只调用 onDraw 一次

我制作了一个自定义View,该View应根据一些外部数据为背景上的一个点设置动画。(就像TextView的魅力一样工作)然后在xml中添加View并设置android:background。View得到正确呈现但不更新。一些调试显示onDraw只被调用一次。缺少什么?我的自定义View的代码:publicclassGmeterextendsImageView{privateBitmapdot;privatefloatdotHeight,dotWidth;publicGmeter(Contextcontext,AttributeSetattrs){super(context,attrs)

android - 如何定时调用onDraw?

我在我的应用程序中使用ScrollView类。我从指南针在Canvas上绘制了一些数据,这些数据会通过用户的交互定期更新。如何在用户不触摸显示器的情况下定期调用onDraw方法?我可以在没有其他线程和调用view.postInvalidate()的情况下定期刷新Canvas的内容吗? 最佳答案 Handler类对于此类事情非常方便。HandlerviewHandler=newHandler();RunnableupdateView=newRunnable(){@Overridepublicvoidrun(){globalView.i

android - 为什么 onDraw() 不断调用?

我有一个使用自定义LinearLayout的小应用程序,称为LinearlayoutOutlined。我想在其中绘制不同大小和颜色的框。它还具有两个指示时间间隔的文本标签。某些用户操作后必须重新绘制布局。因此我按原样刷新布局slotPanel.setDayBoundariesInMinutes(db,dw);TimeSlot[]tSlots=nextDaysSlots.getGaps(dayOfWeek);slotPanel.setItems(tSlots);slotPanel.invalidate();slotpanel是LinearLayoutOutlined实例。我检测到不断调用

Android onDraw() 是一个可疑的方法调用

对于Androidcanvas游戏,我使用以下(最小化)方法请求重绘SurfaceView:privatevoidrefreshView(){c=surfaceView.getHolder().lockCanvas();synchronized(surfaceView.getHolder()){surfaceView.onDraw(c);}但自从上一个androidsdk(22.2.1)以来,它在surfaceView.onDraw上给了我一个Lint警告Suspiciousmethodcall;shouldprobablycall"draw"ratherthan"onDraw"当我使