1
のために、私はちょうどここに私のレイアウトファイル内の1つのビューを作成しました:onDraw()閲覧
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent">
<com.shawntesting.MyView android:layout_above="@+id/button1" android:layout_alignParentTop="true" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/myview1"></com.shawntesting.MyView>
<Button android:id="@+id/button1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Button" android:layout_alignParentBottom="true" ></Button>
<Button android:id="@+id/button2" android:text="button2" android:layout_alignParentBottom="true" android:layout_toRightOf="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</RelativeLayout>
を、これは私の見解コードです:
public class MyView extends View{
Paint paint;
public MyView(Context context, AttributeSet attrs){
super(context,attrs);
paint=new Paint();
paint.setColor(Color.WHITE);
}
public void setblue(){
paint.setColor(Color.BLUE);
this.postInvalidate();
}
public void setgreen(){
paint.setColor(Color.GREEN);
this.postInvalidate();
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawRect(x, y, 100, 50, paint);
String i=new String();
Log.i("getColor",i.valueOf(paint.getColor()));
}
}
そして最後は私の主な活動です:
public class Activity2 extends Activity{
MyView mv;
AttributeSet attributes;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
XmlPullParser parser = getResources().getXml(R.layout.main);
attributes = Xml.asAttributeSet(parser);
mv=new MyView(this,attributes);
setContentView(R.layout.main);
Button b1=(Button)findViewById(R.id.button1);
Button b2=(Button)findViewById(R.id.button2);
b1.setOnClickListener(new Button.OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
mv.setblue();
//mv=(MyView)findViewById(R.id.myview1);
//mv.invalidate();
}
});
b2.setOnClickListener(new Button.OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
mv.setgreen();
//mv=(MyView)findViewById(R.id.myview1);
//mv.invalidate();
}
});
}
}
私の質問は、ボタンをクリックした後で、ビューは更新されません。 また、ボタンをクリックした後、onDraw()が2回実行されていることがわかりました(最初はボタンを押し下げ、次にクリックを緩めます)。