Я нашел, как изменить непрозрачность View
, но мне нужно фактически затемнить View
. Моя лучшая идея - поместить на него прозрачный черный прямоугольник, а затем медленно увеличить непрозрачность прямоугольника.
Знаете ли вы более хороший способ сделать это?
public class Page07AnimationView extends ParentPageAnimationView {
private final String TAG = this.getClass().getSimpleName();
private ImageView overlay;
private int mAlpha = 0;
public Page07AnimationView(Context context) {
super(context);
}
public Page07AnimationView(Context context, AttributeSet attrs) {
super(context, attrs);
}
protected void init()
{
overlay = new ImageView(mContext);
overlay.setImageResource(R.drawable.black_background);
overlay.setAlpha(0);
overlay.setWillNotDraw(false);
// make the PageAniSurfaceView focusable so it can handle events
setFocusable(true);
}
protected void draw_bitmaps(Canvas canvas)
{
overlay.draw(canvas);
update_bitmaps();
invalidate();
}
public void update_bitmaps()
{
if(mAlpha < 250)
{
mAlpha += 10;
overlay.setAlpha(mAlpha);
}
}
}
Этот код не делает то, что я надеялся. Page07AnimationView
добавляется к FrameLayout
по представлению, которое мне нужно затемнить. R.drawable.black_background
указывает на черно-белое изображение размером 787px x 492px.
Я добавил overlay.setWillNotDraw(false);
, но это не помогло.
Я изменил первый setAlpha(0)
на setAlpha(255)
, но это не помогло.
Я вообще удалил вызовы setAlpha()
, но это не помогло.
Эта базовая методика добавления PageNNAnimationView
работает над рисованием Bitmaps
, но не для рисования ImageView overlay
. (Я бы использовал Bitmaps
, но у них, похоже, нет альфа-компонента.)
Edit2: это родительский класс выше:
public class ParentPageAnimationView extends View {
private final String TAG = this.getClass().getSimpleName();
protected Context mContext;
public ParentPageAnimationView(Context context) {
super(context);
mContext = context;
init();
}
public ParentPageAnimationView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
init();
}
protected void init()
{
}
protected void draw_bitmaps(Canvas canvas)
{
// will be overridden by child classes
}
@Override
protected void onDraw(Canvas canvas) {
if(this.getVisibility() == View.VISIBLE)
{
if(canvas != null)
{
draw_bitmaps(canvas);
}
}
}
public void update_bitmaps()
{
// will be overridden by child classes
}
public void elementStarted(PageElement _pageElement) {
// Nothing in parent class
}
public void elementFinished(PageElement mElement) {
// Nothing in parent class
}
}