ImageView:用alpha覆盖多个图像

时间:2014-07-02 20:37:05

标签: android imageview layer

我希望能够将多张图片加载到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);

有没有更好的方法来控制图层?

1 个答案:

答案 0 :(得分:1)

尝试使用layerDrawable.setLayerInset

修改:附加OP解决方案

 if(on) {
      layers.getDrawable(5).setBounds(normal_bounds); 
 }
 else{
      layers.getDrawable(5).setBounds(out_of_bounds);
 }