使用具有多个功能的单个按钮的最佳做法是什么

时间:2016-05-04 14:17:48

标签: android

我想知道使用一个按钮支持多种功能的最佳方式是什么。

假设我有播放音乐的应用程序。有一个“播放/暂停”按钮。 我应该:

1)使用一个按钮覆盖其onClickListener以执行不同的操作(播放或暂停音乐)

2)使用一个按钮和一个onClickListener,其中我检查当前状态是什么,并根据此状态执行操作

3)使用两个按钮,每个按钮只有一个onClickListener s,显示/隐藏只有一个按钮的按钮

4)还有别的吗?

是否有任何模式或可能取决于具体情况?

5 个答案:

答案 0 :(得分:1)

Android已经有ToggleButton,它会自动跟踪已检查的内容。州。如果你想要超过2个状态,那么你应该考虑一个更合适的UI元素,如Spinner

答案 1 :(得分:0)

我会使用一个按钮,它会覆盖OnClickListener。从那里使用switch或if子句来决定它所服务的功能。

答案 2 :(得分:0)

我认为你的第二种方式是最好的方式。最小代码冗余和状态机。这是最干净的方式。

在Android中,您也可以使用第三种方式。单击按钮,使其不可见,执行某些操作并使另一个按钮可见。两个按钮都有自己的onClickListener。这并不复杂,但也不是很漂亮。

答案 3 :(得分:0)

让我们说这个例子是在音乐应用上设置的,就像你提到的那样。在每个音乐应用程序上,都有一个用于播放和暂停的按钮,左侧和右侧的两个按钮可以跳到下一个音轨或跳到上一个音轨,还有一个音量按钮。

你可以做的是让用户长按播放/暂停按钮,使音乐完全停止(因此应该向用户短暂显示停止图标,表示按钮长按功能供将来使用)。长按左右按钮,快退音乐曲目。长按音量图标,然后静音。你明白了。

但我们如何实施呢?首先,在活动布局xml中声明onClick是不够的,因为它只会检测点击次数。你应该做的是给所有的按钮一个ID(@+id/play_button),然后在代码中引用它(Button play_button = (Button) findViewById(R.id.play_button);)然后,设置一个onClickListener,然后使用MotionEvent检测长 - 按住。 A good idea to get is from here。 (你应该使用Google!哈哈)

这将是一个很好的起点。如果您需要示例,请尝试PowerAMP,它具有类似的保持功能。

答案 4 :(得分:0)

你的xml中的

<Button
android:tag="Play"
../>

在您的活动中:

button.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
     if(((String)v.getTag()).equals("Play")){
        v.setTag("Pause");
         //DO YOUR WORK

     }else{
        v.setTag("Play");
       //DO YOUR WORK
     }       
     }  
});