jjzjj

Android 按钮 setAlpha

coder 2023-12-08 原文

有一组按钮,我要得到结果:

当我点击其中一个时,首先我将它们分成两部分:被点击的部分和其他部分。我正在尝试为它们设置不同的颜色或 alpha 值。

现在我使用 setAlpha,但是当我将值从 0 更改为 255 时,它起作用了,但是当我将值从 255 更改为 0 ,它不起作用。我不知道为什么。

也许在调用方法Button.setAlpha() 之后,我需要调用另一个方法?

我的代码:

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);
 }
}

最佳答案

使用 AlphaAnimation 应该可以;在我的设备上验证。

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);
        }
    }
}

关键是调用 setFillAfter(true) 以便 alpha 更改持续存在。

关于Android 按钮 setAlpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3262118/

有关Android 按钮 setAlpha的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby-on-rails - Rails 单选按钮 - 模型中多列的一种选择 - 2

    我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模

  3. ruby-on-rails - 如何从按钮或链接单击的 View 调用 Rails 方法 - 2

    基本上,我试图在用户单击链接(或按钮或某种类型的交互元素)时执行Rails方法。我试着把它放在View中:但这似乎没有用。它最终只是在用户甚至没有点击“添加”链接的情况下调用该函数。我也用link_to试过了,但也没用。我开始认为没有一种干净的方法可以做到这一点。无论如何,感谢您的帮助。附言。我在ApplicationController中定义了该方法,它是一个辅助方法。 最佳答案 View和Controller是相互独立的。为了使链接在Controller内执行函数调用,您需要对应用程序中的端点执行ajax调用。该路由应调用rub

  4. ruby-on-rails - 如何在 Rails 中添加禁用的提交按钮 - 2

    我在ruby​​表单中有一个提交按钮f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id"我想在不使用任何javascript的情况下通过ruby​​禁用此按钮 最佳答案 添加disabled:true选项。f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id",disabled:true 关于ruby-on-rails-如何在Rails中添加禁用的提交按钮,我们在St

  5. ruby-on-rails - 从 ActiveAdmin has_many 表单助手中删除 "Add new"按钮 - 2

    我在事件管理员编辑页面中有嵌套资源,但我只想允许管理员编辑现有资源的内容,而不是添加新的嵌套资源。我的代码看起来像这样:formdo|f|f.inputsdof.input:authorf.input:contentf.has_many:commentsdo|comment_form|comment_form.input:contentcomment_form.input:_destroy,as::boolean,required:false,label:'Remove'endendf.actionsend但它在输入下添加了“添加新评论”按钮。我怎样才能禁用它,并只为主窗体保留f.ac

  6. ruby - 按 Enter 键而不是用鞋子单击按钮(Ruby) - 2

    正如标题所暗示的那样,我只是在寻找一种无需单击即可按下Shoes中的按钮的方法。我已经搜索了论坛,但不幸的是找不到任何东西。谢谢 最佳答案 这在Windows下的红色鞋子中不起作用,因为Windows控件窃取了所有事件。不过,我设法在window下穿着绿鞋工作。举个例子['green_shoes'].each(&method(:require))Shoes.app{e=edit_linebutton("Clickme!"){alert("Youclickedme.")}keypress{|k|alert("YoupressedEnt

  7. ruby - 如何使用 Mechanize 保存通过单击按钮下载的文件 - 2

    我正在尝试使用Mechanize来模拟点击网页上的按钮,然后会在浏览器中启动文件下载。这是我的代码片段form=page.forms.first#=>Mechanize::Formform=agent.page.form_with(:name=>"aspnetForm")button=form.button_with(:value=>"GPXfile")ppbuttonagent.submit(form,button)pp按钮的输出是这样显示的,这意味着它是右键:#但是在发出“agent.submit(form,button)”之后,我怎样才能让Mechanize检索单击该按钮时将发送

  8. ruby-on-rails - 将 Bootstrap 图标添加到 Ruby on Rails 中的按钮 - 2

    我想在RubyonRails中为按钮添加图标。目前我尝试了以下方法:"),{:controller=>'events',:action=>"upvoteEvent",:method=>"put",:id=>@event.id,:uid=>current_user.id},{:class=>"btnbtn-success"}%>生成以下html:"/>我遵循了此处发布的解决方案:https://stackoverflow.com/a/10468935/1385324,但这对我不起作用。我还测试了BootstrapCSS是否正常工作,只需在网站的其他任何地方插入一个图标即可。感谢您的帮助!

  9. ruby-on-rails - 在 Facebook、转推等上分享直接 Ruby gem 中的按钮? - 2

    注意http://techcrunch.com/2010/04/04/he-even-makes-coldplay-sound-fun/顶部的那些按钮在社交网络上分享网址?我想为我正在构建的网站做一些非常相似的事情。ShareThis提供了一个可以做同样事情的小部件,但它是品牌化的和外部的。我正在寻找纯Ruby解决方案。包含可包含在RailsApplicationHelper类中的模块的gem将是完美的。在我重新发明轮子之前,感谢您的建议!想象一下: 最佳答案 我能找到的最好的是:http://www.addthis.com/这里有

  10. ruby - 可以将操作按钮添加到 activeadmin 上的仪表板表吗? - 2

    我有这段代码可以在activeadmin仪表板上创建一个表:columnsdocolumndopanel"NewMentor'srequests"dotable_forUser.where(mentor_request:true)do|t|t.column("Id"){|user|user.id}t.column("Name"){|user|user.account.full_name}t.column("Email"){|user|user.account.email}t.column("Organization"){|user|user.organization.name}ende

随机推荐