Android alpha和AlphaAnimation

时间:2014-12-15 11:08:12

标签: android animation opacity alpha

在imageAdapter类中,我在try / catch中将图像alpha设置为0.5 handler.imageView.setAlpha(0.5f);。 它是这样的,而不是在布局xml中,因为以前版本的android有int而不是float,因此,在catch中,setAlpha是128。

在活动中,我有一个AlphaAnimation(float from, float to),这样我可以在项目之间滑动时进行更平滑的过渡。我已将from = 0.5f与初始值匹配,并to = 1.0f为完全不透明图像。我真的从中获得了一分。未选中的项目显示的是0.5的alpha,但是当它被选中时,它不是100%不透明,只是更多。

活动代码:

private View antView = null; //Last view seen
...
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
        if(antView != null)
            setItemViewMode(antView, false);
        antView = v;
        setItemViewMode(v, true);
    }
});

//This method is to detect the item selected, and change styles to selected and the view from before
public void setItemViewMode(View item, boolean selected) {
    Animation animationImage;
    ImageView img = (ImageView) item.findViewById(R.id.imageView1);
    if(selected) {
        animationImage = new AlphaAnimation(0.5f, 1.0f);
    }
    else {
        animationImage = new AlphaAnimation(1.0f, 0.5f);
    }
    animationImage.setDuration(250);
    animationImage.setFillAfter(true);

    img.startAnimation(animationImage);
}

如上所述,动画会出现,但是,所选图像中的alpha不是100%不透明的。

在动画中设置不透明度可能有问题吗?

2 个答案:

答案 0 :(得分:1)

找到它,无论如何,我认为在添加动画之前,我应该将不透明度设置为1.0f,然后将动画从0.5f变为1.0f,这样就可以了。

所以它会是:

if(selected)
    animationImage = new AlphaAnimation(0.5f, 1.0f);
else
    animationImage = new AlphaAnimation(1.0f, 0.5f);

img.setAlpha(1.0f);
img.startAnimation(animationImage);

答案 1 :(得分:0)

试试这个......

public void setItemViewMode(View item, boolean selected) {
Animation animationImage;
ImageView img = (ImageView) item.findViewById(R.id.imageView1);
if(selected) {
    animationImage = new AlphaAnimation(0f, 1.0f);
}
else {
    animationImage = new AlphaAnimation(1.0f, 0f);
}
animationImage.setDuration(250);
animationImage.setFillAfter(true);

img.startAnimation(animationImage);

}