我想知道使用一个按钮支持多种功能的最佳方式是什么。
假设我有播放音乐的应用程序。有一个“播放/暂停”按钮。 我应该:
1)使用一个按钮覆盖其onClickListener
以执行不同的操作(播放或暂停音乐)
2)使用一个按钮和一个onClickListener
,其中我检查当前状态是什么,并根据此状态执行操作
3)使用两个按钮,每个按钮只有一个onClickListener
s,显示/隐藏只有一个按钮的按钮
4)还有别的吗?
是否有任何模式或可能取决于具体情况?
答案 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)
:
<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
}
}
});