Android-LayerDrawable实现图片选中效果

来源:互联网 发布:一级建造师 网络教育 编辑:程序博客网 时间:2024/06/07 02:50

1.选中图片与未选中的对比
未选中时

选中时:

其实就是选中时用如下所示的一张半透明图片覆盖,再次点击还原。判断点击以后怎么变化可根据ImageView.getDrawable()判断是BitmapDrawable的实例还是LayerDrawable的实例即可。
这里写图片描述
(img_selector.png)
2.重要代码如下
layout.xml

     <!--第一行图片-->               <LinearLayout                   android:layout_weight="4"                   android:layout_width="match_parent"                   android:padding="10dp"                   android:layout_height="0dp"                   android:orientation="horizontal"                   >                         <ImageView                             android:id="@+id/img_select01"                             android:layout_weight="3"                             android:layout_width="0dp"                             android:background="#ffffff"                             android:src="@drawable/img_selector"                             android:layout_height="match_parent" />                         <ImageView                             android:id="@+id/img_select02"                             android:layout_marginLeft="10dp"                             android:layout_marginRight="10dp"                             android:layout_weight="3"                             android:background="#ffffff"                             android:layout_width="0dp"                             android:src="@drawable/img_selector"                             android:layout_height="match_parent" />                         <ImageView                             android:id="@+id/img_select03"                             android:layout_weight="3"                             android:background="#ffffff"                             android:layout_width="0dp"                             android:src="@drawable/img_selector"                             android:layout_height="match_parent" />               </LinearLayout>               <!--第二行图片-->               <LinearLayout                   android:layout_weight="4"                   android:layout_width="match_parent"                   android:padding="10dp"                   android:layout_height="0dp"                   android:orientation="horizontal"                   >                    <ImageView                        android:id="@+id/img_select04"                        android:layout_weight="3"                        android:background="#ffffff"                        android:layout_width="0dp"                        android:src="@drawable/img_selector"                        android:layout_height="match_parent" />                    <ImageView                        android:id="@+id/img_select05"                        android:layout_marginLeft="10dp"                        android:layout_marginRight="10dp"                        android:layout_weight="3"                        android:background="#ffffff"                        android:layout_width="0dp"                        android:src="@drawable/img_selector"                        android:layout_height="match_parent" />                    <ImageView                        android:id="@+id/img_select06"                        android:layout_weight="3"                        android:background="#ffffff"                        android:layout_width="0dp"                        android:src="@drawable/img_selector"                        android:layout_height="match_parent" />               </LinearLayout>               <!--第三行图片-->               <LinearLayout                   android:layout_weight="4"                   android:layout_width="match_parent"                   android:padding="10dp"                   android:layout_height="0dp"                   android:orientation="horizontal"                   >                    <ImageView                        android:id="@+id/img_select07"                        android:layout_weight="3"                        android:layout_width="0dp"                        android:background="#ffffff"                        android:src="@drawable/img_selector"                        android:layout_height="match_parent" />                    <ImageView                        android:id="@+id/img_select08"                        android:layout_marginLeft="10dp"                        android:layout_marginRight="10dp"                        android:layout_weight="3"                        android:layout_width="0dp"                        android:background="#ffffff"                        android:src="@drawable/img_selector"                        android:layout_height="match_parent" />                    <ImageView                        android:id="@+id/img_select09"                        android:layout_weight="3"                        android:background="#ffffff"                        android:layout_width="0dp"                        android:src="@drawable/img_selector"                        android:layout_height="match_parent" />               </LinearLayout>

Activity中的核心代码:
声明图片资源

int []drawables={R.drawable.img001,R.drawable.img002,R.drawable.img003,R.drawable.img004,R.drawable.img005,        R.drawable.img006,R.drawable.img007,R.drawable.img008,R.drawable.img008};ImageView imageViews[]=new ImageView[9];int []imageViewIds={R.id.img_select01,R.id.img_select02,R.id.img_select03,R.id.img_select04,R.id.img_select05,R.id.img_select06,R.id.img_select07,R.id.img_select08,R.id.img_select09};

初始化

  for (int i=0;i<9;i++){            imageViews[i]=(ImageView)findViewById(imageViewIds[i]);            imageViews[i].setImageResource(drawables[i]);            imageViews[i].setOnClickListener(this);        }

点击事件实例,比如点击了第一张图片,id为img_select01:

    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.img_select01:                changeImageView(0);                break;                }     }

LayDrawable实现图片切换

    private void changeImageView(int index) {        if (imageViews[index].getDrawable() instanceof BitmapDrawable) {            Resources res = this.getResources();            Drawable[] layers = new Drawable[2];            layers[0] = res.getDrawable(drawables[index]);            layers[1] = res.getDrawable(R.drawable.img_selector);            LayerDrawable layerDrawable = new LayerDrawable(layers);            imageViews[index].setImageDrawable(layerDrawable);        } else if (imageViews[index].getDrawable() instanceof LayerDrawable) {            Resources res = this.getResources();            Drawable drawable = res.getDrawable(drawables[index]);            imageViews[index].setImageDrawable(drawable);        }    }
原创粉丝点击