Android: наложение картинки (jpg) с прозрачностью - PullRequest
9 голосов
/ 06 марта 2011

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

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

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

Ответы [ 2 ]

19 голосов
/ 06 марта 2011

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

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
2 голосов
/ 06 марта 2011

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