我希望能够将多张图片加载到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);
-OR -
layers.getDrawable(5).setVisible(on,true);
有没有更好的方法来控制图层?
答案 0 :(得分:1)
尝试使用layerDrawable.setLayerInset
修改:附加OP解决方案
if(on) {
layers.getDrawable(5).setBounds(normal_bounds);
}
else{
layers.getDrawable(5).setBounds(out_of_bounds);
}