首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android SDK-11之前版本的视图透明度(alpha)如何更改?

Android SDK-11之前版本的视图透明度(alpha)如何更改?
EN

Stack Overflow用户
提问于 2012-02-01 06:05:21
回答 5查看 18.4K关注 0票数 33

Android SDK-11之前版本的视图透明度(alpha)如何更改?

在您建议使用具有一定透明度的背景色之前,请注意,此方法不包含视图中的所有元素,例如按钮的文本或视图组的子视图。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-01 06:56:30

编辑-下面的例子指的是Android pre-SDK11,但我刚刚发现了一个非常棒的库,叫做Nine Old Androids,它所做的惊人的事情是为所有版本的android3.0启用动画功能!

上一个答案

当我想要在复杂的布局上动态设置alpha时,我实际上遇到了这种问题。我创建了一个覆盖onSetAlpha(),并添加了另一个递归函数,用于检查背景图像、可绘制内容和文本颜色的每种视图。

代码语言:javascript
运行
复制
    @Override
public boolean onSetAlpha(int alpha)
{
    return onSetAlpha(alpha, theLayoutYouWantToSetAlphaTo);
}

public boolean onSetAlpha(int alpha, View view)
{
    if (view instanceof ViewGroup)
    {
        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++)
        {
            onSetAlpha(alpha, ((ViewGroup) view).getChildAt(i));
            if (((ViewGroup) view).getBackground() != null) ((ViewGroup) view).getBackground().setAlpha(alpha);
        }
    }
    else if (view instanceof ImageView)
    {
        if (((ImageView) view).getDrawable() != null) ((ImageView) view).getDrawable().setAlpha(alpha);
        if (((ImageView) view).getBackground() != null) ((ImageView) view).getBackground().setAlpha(alpha);
    }
    else if (view instanceof TextView)
    {
        ((TextView) view).setTextColor(((TextView) view).getTextColors().withAlpha(alpha));
        if (((TextView) view).getBackground() != null) ((TextView) view).getBackground().setAlpha(alpha);
    }
    else if (view instanceof EditText)
    {
        ((EditText) view).setTextColor(((EditText) view).getTextColors().withAlpha(alpha));
        if (((EditText) view).getBackground() != null) ((EditText) view).getBackground().setAlpha(alpha);
    }
    return true;
}

您可以根据需要添加其他类型的视图。

票数 15
EN

Stack Overflow用户

发布于 2012-02-01 06:12:46

尝试使用AlphaAnimation:http://developer.android.com/reference/android/view/animation/AlphaAnimation.html

/*必须使用动画才能使卡片褪色。*/

代码语言:javascript
运行
复制
AlphaAnimation alpha = new AlphaAnimation(0.7F, 0.7F);
alpha.setDuration(0); // Make animation instant
alpha.setFillAfter(true); // Tell it to persist after the animation ends
view.startAnimation(alpha);
票数 47
EN

Stack Overflow用户

发布于 2013-04-25 16:34:43

我使用的是NineOldAndroids的ViewHelper,它是一个静态的助手类,也是一个真正的宝石!这里有很多人推荐NineOldAndroids,但我没看到有人提到ViewHelper。它真的很容易使用。

代码语言:javascript
运行
复制
import com.nineoldandroids.view.ViewHelper;
...

ViewHelper.setAlpha(myView, .2f);

您还可以使用它来设置其他属性,如x,y等,在设置动画或构建UI时非常方便。非常感谢Jake与社区分享他的工作!

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9087676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档