Android的按钮setAlpha [英] Android Button setAlpha

查看:124
本文介绍了Android的按钮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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆