Android:覆盖透明的图片(jpg)

时间:2011-03-06 16:57:48

标签: android image transparency

我有一张想要在屏幕上显示的图片(jpg)。 此外,图片应部分由透明效果覆盖。 透明的封面应该是动态的。所以例如每天都会显示更多的图片。 这张图片展示了我的意思: enter image description here

我的照片没有灰色封面,想要添加这个封面,但步骤不同。

有人可以给我一个如何做到这一点的提示。

2 个答案:

答案 0 :(得分:19)

您只需使用小部件即可完成此操作:

FrameLayout是将视图叠加在另一个视图之上的一般机制:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<ImageView  
    android:id="@+id/image"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/my_image"/>
<View
    android:id="@+id/overlay"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
</FrameLayout>

然后在Java代码中,您可以动态设置叠加层的透明度:

View overlay = (View) findViewById(R.id.overlay);
int opacity = 200; // from 0 to 255
overlay.setBackgroundColor(opacity * 0x1000000); // black with a variable alpha
FrameLayout.LayoutParams params =
    new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 100);
params.gravity = Gravity.BOTTOM;
overlay.setLayoutParams(params);
overlay.invalidate(); // update the view

答案 1 :(得分:2)

您可以执行以下操作:画布来自onDraw()请求:

Paint paint = new Paint();
Rect r = new Rect(); 
paint.setColor(0x80808080); // translucent gray 
r.right = iDisplayWidth-1; 
r.left = 0; 
r.top = iDisplayHeight/2; 
r.bottom = iDisplayHeight-1; 
canvas.drawRect(r, paint); // fill with gray