Android SDK-11之前版本的视图透明度(alpha)如何更改?
在您建议使用具有一定透明度的背景色之前,请注意,此方法不包含视图中的所有元素,例如按钮的文本或视图组的子视图。
发布于 2012-02-01 06:56:30
编辑-下面的例子指的是Android pre-SDK11,但我刚刚发现了一个非常棒的库,叫做Nine Old Androids,它所做的惊人的事情是为所有版本的android3.0启用动画功能!
上一个答案
当我想要在复杂的布局上动态设置alpha时,我实际上遇到了这种问题。我创建了一个覆盖onSetAlpha(),并添加了另一个递归函数,用于检查背景图像、可绘制内容和文本颜色的每种视图。
@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;
}您可以根据需要添加其他类型的视图。
发布于 2012-02-01 06:12:46
尝试使用AlphaAnimation:http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
/*必须使用动画才能使卡片褪色。*/
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);发布于 2013-04-25 16:34:43
我使用的是NineOldAndroids的ViewHelper,它是一个静态的助手类,也是一个真正的宝石!这里有很多人推荐NineOldAndroids,但我没看到有人提到ViewHelper。它真的很容易使用。
import com.nineoldandroids.view.ViewHelper;
...
ViewHelper.setAlpha(myView, .2f);您还可以使用它来设置其他属性,如x,y等,在设置动画或构建UI时非常方便。非常感谢Jake与社区分享他的工作!
https://stackoverflow.com/questions/9087676
复制相似问题