在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%不透明的。
在动画中设置不透明度可能有问题吗?
答案 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);
}