自定义Imageview用于不规则形状的可绘制或图像

时间:2014-08-12 03:24:43

标签: android imageview touch

enter image description here 这是原始图像,并结合了29件其他小图像和最终结果。

例如,当我点击特定区域时,小块将变为另一种颜色。

enter image description here 是否有任何解决方案可以检测特定区域的触摸并知道应该更改哪一块图像?

2 个答案:

答案 0 :(得分:0)

为您的类设置实现OnTouchListener添加unimplement方法然后将所有图像视图放在数组中并设置setOnTouchListener

ImageView[] image = new ImageView[9];//for exapmle 9
image[i].setOnTouchListener(this);


@Override
public boolean onTouch(View v, MotionEvent event) {

    boolean eventConsumed = true;
    int x = (int)event.getX();
    int y = (int)event.getY();
    int action = event.getAction();

    if (action == MotionEvent.ACTION_DOWN) {
        for (int i=0;i<=8;i++)//change the loop size to image array size
        {
            if (v == image[i]) {
                point=i;
                // here i'm getting which image i have touched
                System.out.println(" image"+i+i+i+i+i+i+i+i+i+i+"is clicked");

                }
        }else if (action == MotionEvent.ACTION_UP) {

       //here wright the condition for which image what color have to give
        }

答案 1 :(得分:0)

如果您只想通过更改颜色来显示触摸的部分,那么您可能应该为每个图像使用选择器

selector.xml - &gt;可绘制的文件夹。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/colored_image"  
 android:state_pressed="true"/>  
<item android:drawable="@drawable/normal_image" >
</selector>

ImageView的:

     <ImageView
            android:id="@+id/change_city_small_down_ImageView"
            android:clickable="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/changeCityRelativeLayout"
            android:layout_marginLeft="5dp"
            android:src="@drawable/selector"
   </ImageView>

它有效,我只是通过重叠imageviews

来使用它

enter image description here enter image description here enter image description here