Android的按钮setAlpha [英] Android Button setAlpha
问题描述
有一组按钮,我想要得到的结果是:
当我点击其中的一个,首先我将它们分为两部分:点击一个和其他人。我想设置不同的颜色或Alpha值不同的它们。
现在我用 setAlpha
,但是当我从更改值 0〜255 ,它的工作原理,但是当我改变的值< STRONG> 255至0 ,它亘古不变的工作。我不知道为什么。
也许以后我调用该方法 Button.setAlpha()
,我需要调用其他方法?
我的code:
公共类MainActivity延伸活动{
//按钮alpha值:减少值
公共静态INT BUTTON_ALPHA_MIN = 0;
//按钮alpha值:实现价值最大化
公共静态INT BUTTON_ALPHA_MAX = 255;
私人的LinearLayout centerRegion;
私人的LinearLayout bottomRegion;
私人按钮btnCheckIn;
私人按钮btnReview;
私人按钮btnMyCircles;
私人按钮btnSettings;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
//获取所有的部件
getAllWidgets();
//设置按钮点击响应函数
btnCheckIn.setOnClickListener(新OnClickListener(){
公共无效的onClick(视图v){
centerRegion.setBackgroundColor(android.graphics.Color.RED);
。btnReview.getBackground()setAlpha(BUTTON_ALPHA_MIN);
。btnMyCircles.getBackground()setAlpha(BUTTON_ALPHA_MIN);
。btnSettings.getBackground()setAlpha(BUTTON_ALPHA_MIN);
。btnCheckIn.getBackground()setAlpha(BUTTON_ALPHA_MAX);
}
});
btnReview.setOnClickListener(新OnClickListener(){
公共无效的onClick(视图v){
centerRegion.setBackgroundColor(android.graphics.Color.BLUE);
。btnCheckIn.getBackground()setAlpha(BUTTON_ALPHA_MIN);
。btnMyCircles.getBackground()setAlpha(BUTTON_ALPHA_MIN);
。btnSettings.getBackground()setAlpha(BUTTON_ALPHA_MIN);
。btnReview.getBackground()setAlpha(BUTTON_ALPHA_MAX);
}
});
btnMyCircles.setOnClickListener(新OnClickListener(){
公共无效的onClick(视图v){
centerRegion.setBackgroundColor(android.graphics.Color.YELLOW);
。btnCheckIn.getBackground()setAlpha(BUTTON_ALPHA_MAX);
。btnReview.getBackground()setAlpha(BUTTON_ALPHA_MAX);
。btnSettings.getBackground()setAlpha(BUTTON_ALPHA_MAX);
。v.getBackground()setAlpha(BUTTON_ALPHA_MIN);
}
});
btnSettings.setOnClickListener(新OnClickListener(){
公共无效的onClick(视图v){
centerRegion.setBackgroundColor(android.graphics.Color.MAGENTA);
。btnCheckIn.getBackground()setAlpha(BUTTON_ALPHA_MAX);
。btnReview.getBackground()setAlpha(BUTTON_ALPHA_MAX);
。btnMyCircles.getBackground()setAlpha(BUTTON_ALPHA_MAX);
。v.getBackground()setAlpha(BUTTON_ALPHA_MIN);
}
});
}
/ **
*让所有的部件
* /
公共无效getAllWidgets(){
this.centerRegion =(的LinearLayout)this.findViewById(R.id.center_region);
this.bottomRegion =(的LinearLayout)this.findViewById(R.id.bottom_region);
this.btnCheckIn =(按钮)this.findViewById(R.id.button_check_in);
this.btnReview =(按钮)this.findViewById(R.id.button_review);
this.btnMyCircles =(按钮)this.findViewById(R.id.button_my_circles);
this.btnSettings =(按钮)this.findViewById(R.id.button_setting);
}
}
使用AlphaAnimation应该工作;验证我的设备上。
公共类测试扩展活动实现OnClickListener {
私人AlphaAnimation alphaDown;
私人AlphaAnimation alphaUp;
私人按钮B1;
私人按钮B2;
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
的LinearLayout LL =(的LinearLayout)findViewById(R.id.linear_layout);
B1 =新的按钮(这一点);
b1.setText(按钮1);
b1.setOnClickListener(本);
ll.addView(B1);
B2 =新的按钮(这一点);
b2.setText(按钮2);
b2.setOnClickListener(本);
ll.addView(B2);
alphaDown =新AlphaAnimation(1.0F,0.3f);
alphaUp =新AlphaAnimation(0.3f,1.0F);
alphaDown.setDuration(1000);
alphaUp.setDuration(1000);
alphaDown.setFillAfter(真正的);
alphaUp.setFillAfter(真正的);
}
公共无效的onClick(视图v){
如果(V == B1){
b1.startAnimation(alphaUp);
b2.startAnimation(alphaDown);
} 其他 {
b1.startAnimation(alphaDown);
b2.startAnimation(alphaUp);
}
}
}
关键是呼吁 setFillAfter(真)
使得α变化仍然存在。
There are a set of buttons, I want to get the result:
When I click one of them, first I divide them into two parts: the clicked one and the others. I'm trying to set different color or alpha value to different them.
Now I use setAlpha
, but when I change the value from 0 to 255, it works, but when I change the value from 255 to 0 , it doesnot work. I don't know why.
Maybe after I invoke the methodButton.setAlpha()
, I need invoke another method?
my code:
public class MainActivity extends Activity {
// button alpha value: minimize value
public static int BUTTON_ALPHA_MIN = 0;
// button alpha value: maximize value
public static int BUTTON_ALPHA_MAX = 255;
private LinearLayout centerRegion;
private LinearLayout bottomRegion;
private Button btnCheckIn;
private Button btnReview;
private Button btnMyCircles;
private Button btnSettings;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// get all the widgets
getAllWidgets();
// set buttons click response function
btnCheckIn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
centerRegion.setBackgroundColor(android.graphics.Color.RED);
btnReview.getBackground().setAlpha(BUTTON_ALPHA_MIN);
btnMyCircles.getBackground().setAlpha(BUTTON_ALPHA_MIN);
btnSettings.getBackground().setAlpha(BUTTON_ALPHA_MIN);
btnCheckIn.getBackground().setAlpha(BUTTON_ALPHA_MAX);
}
});
btnReview.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
centerRegion.setBackgroundColor(android.graphics.Color.BLUE);
btnCheckIn.getBackground().setAlpha(BUTTON_ALPHA_MIN);
btnMyCircles.getBackground().setAlpha(BUTTON_ALPHA_MIN);
btnSettings.getBackground().setAlpha(BUTTON_ALPHA_MIN);
btnReview.getBackground().setAlpha(BUTTON_ALPHA_MAX);
}
});
btnMyCircles.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
centerRegion.setBackgroundColor(android.graphics.Color.YELLOW);
btnCheckIn.getBackground().setAlpha(BUTTON_ALPHA_MAX);
btnReview.getBackground().setAlpha(BUTTON_ALPHA_MAX);
btnSettings.getBackground().setAlpha(BUTTON_ALPHA_MAX);
v.getBackground().setAlpha(BUTTON_ALPHA_MIN);
}
});
btnSettings.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
centerRegion.setBackgroundColor(android.graphics.Color.MAGENTA);
btnCheckIn.getBackground().setAlpha(BUTTON_ALPHA_MAX);
btnReview.getBackground().setAlpha(BUTTON_ALPHA_MAX);
btnMyCircles.getBackground().setAlpha(BUTTON_ALPHA_MAX);
v.getBackground().setAlpha(BUTTON_ALPHA_MIN);
}
});
}
/**
* get all the widgets
*/
public void getAllWidgets() {
this.centerRegion = (LinearLayout) this.findViewById(R.id.center_region);
this.bottomRegion = (LinearLayout) this.findViewById(R.id.bottom_region);
this.btnCheckIn = (Button) this.findViewById(R.id.button_check_in);
this.btnReview = (Button) this.findViewById(R.id.button_review);
this.btnMyCircles = (Button) this.findViewById(R.id.button_my_circles);
this.btnSettings = (Button) this.findViewById(R.id.button_setting);
}
}
Using AlphaAnimation should work; verified on my device.
public class Test extends Activity implements OnClickListener {
private AlphaAnimation alphaDown;
private AlphaAnimation alphaUp;
private Button b1;
private Button b2;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout ll = (LinearLayout) findViewById(R.id.linear_layout);
b1 = new Button(this);
b1.setText("Button 1");
b1.setOnClickListener(this);
ll.addView(b1);
b2 = new Button(this);
b2.setText("Button 2");
b2.setOnClickListener(this);
ll.addView(b2);
alphaDown = new AlphaAnimation(1.0f, 0.3f);
alphaUp = new AlphaAnimation(0.3f, 1.0f);
alphaDown.setDuration(1000);
alphaUp.setDuration(1000);
alphaDown.setFillAfter(true);
alphaUp.setFillAfter(true);
}
public void onClick(View v) {
if (v == b1) {
b1.startAnimation(alphaUp);
b2.startAnimation(alphaDown);
} else {
b1.startAnimation(alphaDown);
b2.startAnimation(alphaUp);
}
}
}
The key is calling setFillAfter(true)
so that the alpha change persists.
这篇关于Android的按钮setAlpha的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!