main.xml文件:
           <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />    <FrameLayout
        android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|bottom">
        </Button>
       
         
    </FrameLayout></LinearLayout>        activity如下:
      public class Test_CircleActivity extends Activity {
private Button btn;
private FrameLayout layout;
private ListView lv;
private String items[] = {"a","b","c","d","e","f","g","h","i"};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btn = (Button)findViewById(R.id.button1);
        layout = (FrameLayout)findViewById(R.id.layout);
        MyView myView = new MyView(this);
        MyView1 myView1 = new MyView1(this);
        layout.addView(myView);
        layout.addView(myView1);
        myView.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
Toast.makeText(getApplicationContext(), "click right", 1).show();
}
});
        myView1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
Toast.makeText(getApplicationContext(), "right clidk", 1).show();
}
});        lv = (ListView)findViewById(R.id.listView1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, items);
        lv.setAdapter(adapter);
    }
    public class MyView extends View{ public MyView(Context context) {
super(context);
}
     @Override
     protected void onDraw(Canvas canvas) {
    
     super.onDraw(canvas);
     Paint paint = new Paint();
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.ic_launcher);

canvas.drawBitmap(bitmap, 200, 200, paint);
     }
    }
    public class MyView1 extends View{ public MyView1(Context context) {
super(context);
}
     @Override
     protected void onDraw(Canvas canvas) {
    
     super.onDraw(canvas);
     Paint paint = new Paint();
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.ic_launcher);
canvas.drawBitmap(bitmap, 100, 100, paint);
     }
    }
}    这个小测试程序运行后,屏幕上有两个小图标,都是继承自View,我想点击不同图标出现不同的Toast提示,可是不管点击哪儿,只能出现一种效果。。求高手帮忙解决

解决方案 »

  1.   

    同一界面中只能有一个view能够接收到触摸(点击)事件
    你可以这么处理
    把触摸(点击)放在activity中,然后activity中判断坐标在哪个view中,然后做触发你想要的效果。
      

  2.   

    activity中重载onTouch事件,然后这个事件中根据坐标判断点中的是view1还是view2.
    其中在view中定义一个Rect,在onDraw的时候绘制这个Rect的大小,宽和高就是图片的宽和高。判断是就看坐标是否在Rect.contains内,如果在范围内就是点中了这个view.