【发布时间】:2014-07-02 20:37:04
【问题描述】:
我希望能够将多个图像加载到ImageView 并根据需要打开/关闭它们。看起来很简单,但给我带来了很多麻烦,因为我发现图像在更改后没有更新,即使我使用invalidate()。
在自定义ImageView内:
private Drawable[] drawables = new Drawable[6];
private Context _context;
private LayerDrawable layers;
private void ourClassDef(Context context)
{
_context=context;
Resources r = _context.getResources();
// TODO Auto-generated constructor stub
drawables[0] = r.getDrawable(R.drawable.gun_blank);
drawables[1] = r.getDrawable(R.drawable.gun_base_green);
drawables[2] = r.getDrawable(R.drawable.gun_base_red);
drawables[3] = r.getDrawable(R.drawable.gun_coil_green);
drawables[4] = r.getDrawable(R.drawable.gun_coil_red);
drawables[5] = r.getDrawable(R.drawable.gun_trigger);
layers = new LayerDrawable(drawables);
setImageDrawable(layers);
}
public GunIconControl(Context context) {
super(context);
ourClassDef(context);
}
...
然后,打开\关闭每一层
layers.getDrawable(5).setAlpha(on?1:0);
-或-
layers.getDrawable(5).setVisible(on,true);
有没有更好的方法来控制图层?
【问题讨论】: