android开发 View的onDraw函数调用

在View上绘制Canvas对象 一般会在onDraw函数

但是onDraw是一个触发事件产生的调用 只能通过特定的方法 触发事件后来调用onDraw

这样就需要调用invalidate或者postInvalidate方法

可以在绘制完Canvas对象时 调用这2个方法就可以自动调用onDraw

发布了24 篇原创文章 · 获赞 1 · 访问量 11万+
展开阅读全文

为什么TextView.onDraw会被调用???

09-02

[code="xml"] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="----" /> <com.myTextViewDemo.MyTextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="change" /> </LinearLayout> [/code] [code="java"] public class MyTextViewDemo extends Activity { private MyTextView mt; private Button btn; private TextView tv; private int i = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mt = (MyTextView) findViewById(R.id.text); tv = (TextView) findViewById(R.id.title); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { tv.setText("adsf:" + i++); } }); } } [/code] 自定义TextView [code="java"] public class MyTextView extends TextView { public MyTextView(Context context) { super(context); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); } public MyTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { System.out.println("--------------- onDraw --------------"); super.onDraw(canvas); } } [/code] 现在的问题是,当点击button时,会改变title的值,但是MyTextView.onDraw也会被调用,而且点击几次就调用几次,这是为什么?? 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览