首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Drawable对象的mutate()步骤为什么不起作用

2012-08-28 
Drawable对象的mutate()方法为什么不起作用?要在两个ImageView中显示用一张图片,而使它们的透明度不一样,

Drawable对象的mutate()方法为什么不起作用?
要在两个ImageView中显示用一张图片,而使它们的透明度不一样,利用Drawable对象的setAlpha()方法可以改变透明度,但是由于是同一张图片,底层只有一个Drawable对象,所以改变透明度的时候,所有显示的图片的透明度均会被更改,调用mutate()方法,可以使Drawable对象生成不同的constantstate对象,修改时就不会影响其它drawable对象的状态,但是调用后,不起作用,请会的朋友帮忙解答一下,先行谢过!
测试代码

package com.zhou.activity;import android.app.Activity;import android.content.res.Resources;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.widget.ImageView;public class DrawableActivity extends Activity {    ImageView myImageView;    ImageView myImageView2;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        myImageView = (ImageView) this.findViewById(R.id.myImageView);        myImageView2 = (ImageView) this.findViewById(R.id.myImageView2);                //取得图片        Resources res = this.getResources();        Drawable drawable = res.getDrawable(R.drawable.link);            //不透明        drawable.mutate().setAlpha(255);        myImageView.setImageDrawable(drawable);        //透明        drawable.mutate().setAlpha(55);        myImageView2.setImageDrawable(drawable);    }} 

1 楼 Cuba_Libre 6 小时前   怎么说呢,
你要设置两个drawable (d1,d2),然后再分别mutate.setAlpha(255或者55),这样不同了。
你可以试验下,不用mutate()的话,即使d1.setAlpha(255),当d2.setAlpha(55)的时候,d1的alpha也会变成55的,因为貌似setalpha是直接在改变引用对象的。

热点排行