Android: наложение картинки (jpg) с прозрачностью

У меня есть картинка (jpg), которую я хочу отобразить на экране. Кроме того, изображение должно быть частично покрыто прозрачным эффектом. Прозрачная крышка должна быть динамичной. Так, например, каждый день все больше и больше картинок. Вот картинка, чтобы показать, что я имею в виду:

У меня есть изображение без серой обложки, и я хочу добавить эту обложку, но разными шагами.

Может кто-нибудь дать мне подсказку, как это сделать.

2 ответа

Решение

Вы можете сделать это просто с помощью виджетов:

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

Вы можете сделать что-то вроде этого, где холст исходит от 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
Другие вопросы по тегам