我做了一个自定义视图,它应该根据一些外部数据为背景上的点设置动画. (就像带有textvIEws的魅力一样)
然后在xml中添加视图并设置android:background.
视图正确呈现但不更新.一些调试显示onDraw只被调用一次.缺什么?
我的自定义视图的代码:
public class Gmeter extends ImageVIEw { private Bitmap dot; private float dotHeight, dotWIDth; public Gmeter(Context context, AttributeSet attrs) { super(context, attrs); dot = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.g_dot); dotWIDth = dot.getWIDth(); dotHeight = dot.getHeight(); } @OverrIDe protected voID onDraw(Canvas canvas){ super.onDraw(canvas); float datax =(float) Data.getX(); float x = (getWIDth()-dotWIDth)/2f; float y = (getHeight()-dotHeight)/2f; x+= datax * getWIDth() /2f; canvas.drawBitmap(dot, x, y, null); }}
解决方法:
无论在数据中设置x都需要调用invalIDate()来告诉VIEw它需要根据新数据重绘.当新数据可用时,VIEw无法读懂您的想法:).
并且肯定将它与数据更新联系起来……如果你从onDraw()中调用invalIDate(),你将有一个浪费cpu周期的好方法.
总结以上是内存溢出为你收集整理的java – Android自定义视图只能调用onDraw一次全部内容,希望文章能够帮你解决java – Android自定义视图只能调用onDraw一次所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)