java–Android自定义视图只能调用onDraw一次

java–Android自定义视图只能调用onDraw一次,第1张

概述我做了一个自定义视图,它应该根据一些外部数据为背景上的点设置动画.(就像带有textviews的魅力一样)然后在xml中添加视图并设置android:background.视图正确呈现但不更新.一些调试显示onDraw只被调用一次.缺什么?我的自定义视图的代码:publicclassGmeterextendsImageView{

我做了一个自定义视图,它应该根据一些外部数据为背景上的点设置动画. (就像带有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一次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1112845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存