改变视图的一部分的不透明度

时间:2015-02-06 23:36:49

标签: android android-custom-view

我想获得以下效果。我的屏幕上有一个图像。当导航抽屉(或另一个遮挡视图)出现在我的图像顶部时,我希望不是覆盖图像,而是显示图像的负片。

下面的图片可能有助于显示我的意思。

state0 state1 state2

关于如何实现这一目标的任何想法?我想为菜单图标获得相同的效果。

2 个答案:

答案 0 :(得分:1)

我会这样做:

  1. 在要应用否定视图的视图上启用绘图缓存:

    view.setDrawingCacheEnabled(真);

  2. 单击或拖动抽屉时获取视图的快照:

    位图bmp = view.getDrawingCache();

  3. 最后覆盖抽屉的onDraw()方法并在其上绘制位图。应用着色器以执行“负面”效果。请参阅:http://chiuki.github.io/android-shaders-filters/#/

答案 1 :(得分:-1)

canvas.drawColor(Color.WHITE);   
BitmapDrawable bd = (BitmapDrawable) getResources().getDrawable(R.drawable.your_drawable);    
Bitmap bm = bd.getBitmap();  

Paint paint = new Paint();    
Where the INT ranges from 0 (fully transparent) to 255 (fully opaque).
paint.setAlpha(0);    

canvas.drawBitmap(bm, 0, 0, paint);