现在我继续我的屏幕背景颜色变化,同时在(x,y)坐标中拖动我的图像,布局也应根据它改变屏幕的不透明度。
我接受了以下教程:
http://android-er.blogspot.in/2009/08/change-background-color-by-seekbar.html
http://android-er.blogspot.in/2012/02/animate-fade-infade-out-by-changing.html
然后通过progrmatically设置尝试如下:
layout.getBackground().setAlpha(30);
以下是代码:
public class MyActivity extends Activity {
public boolean status = false;
Button first,second;
LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
layout = (LinearLayout) findViewById(R.id.trans);
first = (Button) findViewById(R.id.first_theme);
second = (Button) findViewById(R.id.second_theme);
// if(status==true)
// {setTheme( android.R.style.ThemeFirst );
// }
// else
{
// setTheme( android.R.style.ThemeSecond );
// }
first.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
status = true;
layout.getBackground().setAlpha(30);
}
});
second.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
second.getBackground().setAlpha(00);
}
});
}
}
但是没有它导致我NullPointerException
错误怎么能解决这个问题,如果有人有这个想法,请帮助我的朋友。
答案 0 :(得分:0)
setAlpha工作,api +11你可以为每个版本使用这样的东西:
first.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
status = true;
AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f,0.3f);
alphaAnimation.setFillAfter(true);
alphaAnimation.setDuration(10);//duration in millisecond
layout.startAnimation(alphaAnimation);
}
});
更新:
为了恢复原始的不透明度,你可以这样做:
AlphaAnimation alphaAnimation = new AlphaAnimation(0.3f,1.0f);
alphaAnimation.setFillAfter(true);
alphaAnimation.setDuration(10);
layout.startAnimation(alphaAnimation);