设置背景图像在背景中褪色

时间:2011-12-22 15:06:35

标签: android animation imageview android-linearlayout

我正在尝试做类似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>

非常感谢任何帮助。如果需要,我会给你一笔赏金。

1 个答案:

答案 0 :(得分:1)

  1. 这很可能不是由于缓存造成的。我会检查图像是否实际设置正确。听起来好像你没有正确设置/刷新你的观点。

  2. 您需要在此图片上设置alpha:     image.setAlpha(X); // x是您想要的alpha

  3. 删除'bg.setImageBitmap(background);'并将alpha设置为最后一次。

  4. 在你的fadedin xml中尝试删除repeatCount和插值器,看看是否有帮助。