ClipDrawable如何更改图像

时间:2016-11-15 16:24:15

标签: android android-drawable

我试图通过点击差异图像来实现ClipDrawable

我使用简单的图像

代码:

MainActivity.java

    ImageView imageview = (ImageView) findViewById(R.id.image);
    drawable = (ClipDrawable) imageview.getDrawable();
    drawable.setLevel(0);
    imageview.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            drawable.setLevel(drawable.getLevel()+1000);
        }
    });

activity_main.xml中

<ImageView
    android:id="@+id/image"
    android:src="@drawable/clip_source"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
 />

clip_source.xml

<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/tree"
    android:clipOrientation="vertical"
    android:gravity="bottom"
 />

这是有效的,但对于我的项目,我需要更改用变量显示的图像,以根据用户输入显示不同的图像

1 个答案:

答案 0 :(得分:0)

我只找到一种方法,为每个ClipDraw使用不同的文件

MainActivity.java

if(aa == false){
    t = (ClipDrawable) getResources().getDrawable(R.drawable.clip1);
}else{
    t = (ClipDrawable) getResources().getDrawable(R.drawable.clip2);
}

setContentView(R.layout.activity_main);

ImageView imageview = (ImageView) findViewById(R.id.image);
imageview.setBackgroundDrawable(back);
imageview.setImageDrawable(t);
t.setLevel(0);
imageview.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        t.setLevel(t.getLevel()+1000);
    }
});

activity_main.xml中

<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
/>

clip1.xml

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/farm"
    android:clipOrientation="vertical"
    android:gravity="bottom"
 />

clip2.xml

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/werehouse"
    android:clipOrientation="vertical"
    android:gravity="bottom"
 />

这解决了我的问题但是缺点是每个图像都需要一个文件,而且我需要至少20个