gpt4 book ai didi

android - 以编程方式使 View 变暗

转载 作者:IT王子 更新时间:2023-10-28 23:28:15 27 4
gpt4 key购买 nike

我找到了 change the opacity of a 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 被添加到我需要变暗的 View 上方的 FrameLayout 中。 R.drawable.black_background 指向一个 787px x 492px 黑色 png 图像。

我添加了 overlay.setWillNotDraw(false); 但它没有帮助。我将第一个 setAlpha(0) 更改为 setAlpha(255) 但这没有帮助。我完全删除了 setAlpha() 调用,但没有帮助。

这种添加 PageNNAnimationView 的基本技术一直用于绘制 Bitmaps,但不能绘制 ImageView 叠加层。 (我会使用 Bitmaps,但它们似乎没有 alpha 组件。)

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
}
}

最佳答案

如果是 ImageView,这是实现它的一种方法:

imageView.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY);

关于android - 以编程方式使 View 变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com