我正在尝试做类似wiki的活动,其中有一个褪色的背景图像,从回购下载并逐渐淡入线性布局后面的背景。我遇到了三个问题。
XML:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/bg_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cropToPadding="true"
android:scaleType="centerCrop" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:textColor="#FFFFFF" >
<LinearLayout>Several layouts within here....</LinearLayout>
</LinearLayout>
</FrameLayout>
1)我可以显示图像,但是在我打开另一个应用程序之前,LinearLayout中的某些元素是不透明的,然后返回到我的应用程序。我认为在android中可能会有一些奇怪的视图缓存,这会导致像linearlayout这样的东西具有扎实的背景。
2)我无法让图像在后台“褪色”。我几乎想让图像变暗,所以它上面的文字更突出。这会对图像不透明吗?
3)淡入的动画不起作用。我正在使用AsyncTask回调一个监听器来设置背景。以下是我在活动中使用的代码,InfoActivity:
bg =(ImageView)findViewById(R.id.bg_image);
public void onBgImageResponse(Bitmap background) {
if(background != null) {
bg.setAlpha(50);
bg.setImageBitmap(background);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(InfoActivity.this, R.anim.fadein_bg);
bg.setBackgroundDrawable(new BitmapDrawable(this.getResources(), background));
bg.startAnimation(myFadeInAnimation);
}
}
在fadein_bg.xml中我有:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0"
android:toAlpha=".5"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2000" android:repeatCount="infinite"/>
</set>
非常感谢任何帮助。如果需要,我会给你一笔赏金。
答案 0 :(得分:1)
这很可能不是由于缓存造成的。我会检查图像是否实际设置正确。听起来好像你没有正确设置/刷新你的观点。
您需要在此图片上设置alpha: image.setAlpha(X); // x是您想要的alpha
删除'bg.setImageBitmap(background);'并将alpha设置为最后一次。
在你的fadedin xml中尝试删除repeatCount和插值器,看看是否有帮助。