如何增加对Android的动作栏按钮单击按钮弹出对话框事件的连锁反应

12507人阅读
Android(50)
第一种方法:
public void onBackPressed() {
&& &&&& //code......
第二种方法:
&& &public boolean onKeyDown(int keyCode, KeyEvent event) {
&& &&& &if(keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
&& &&& &&&& //code........
两种方法都定义在activity中,只要在我们自己写的activity中重写就可以了,第一种方法是后退按钮独有的,第二种方法可以根据不同的keycode来捕捉不同按钮的点击事件。
补充说明:如果这两种方法同时使用了,那么当用户点击返回按钮时,程序会先调用onKeyDown方法,后调用onBackPressed方法
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:374772次
积分:4012
积分:4012
排名:第6206名
原创:34篇
转载:128篇
评论:76条
(1)(5)(3)(4)(6)(7)(1)(2)(7)(1)(1)(6)(2)(9)(5)(11)(3)(1)(6)(3)(6)(3)(5)(8)(24)(7)(8)(18)22764人阅读
android(5)
//获取屏幕大小,以合理设定 按钮 大小及位置
& DisplayMetrics dm = new DisplayMetrics();
&&getWindowManager().getDefaultDisplay().getMetrics(dm);
&&int width = dm.widthP
&&int height = dm.heightP
&//自定义layout组件
&&RelativeLayout layout = new RelativeLayout(this); &&&&&&&
&//这里创建16个按钮,每行放置4个按钮
&&Button Btn[] = new Button[16];
&&int j = -1;
&&for& (int i=0; i&=15; i++) {&&&&&
&&&&&&& Btn[i]=new Button(this);
&&&&&&& Btn[i].setId(2000+i);
&&&&&&& Btn[i].setText(&按钮&+i);&&
&&&&&&& RelativeLayout.LayoutParams btParams = new RelativeLayout.LayoutParams ((width-50)/4,40);&&//设置按钮的宽度和高度
&&&&&&& if (i%4 == 0) {
&&&&& && j++;
&&&&&&& btParams.leftMargin = 10+ ((width-50)/4+10)*(i%4);& &//横坐标定位&&&&&&&
&&&&&&& btParams.topMargin = 20 + 55*j;&& //纵坐标定位&&&&&&
&&&&&&& layout.addView(Btn[i],btParams);& &//将按钮放入layout组件
&&&& this.setContentView(layout);
&&& //批量设置监听
&&for (int k = 0; k &= Btn.length-1; k++) {
&&&//这里不需要findId,因为创建的时候已经确定哪个按钮对应哪个Id
&&&Btn[k].setTag(k);&&&&&&&&&&&&&&&&//为按钮设置一个标记,来确认是按下了哪一个按钮
&&&Btn[k].setOnClickListener(new Button.OnClickListener() {
&&&&@Override
&&&&&& &public void onClick(View v) {
&&&&&&&&&&& int i = (Integer) v.getTag();&& //这里的i不能在外部定义,因为内部类的关系,内部类好多繁琐的东西,要好好研究一番
&&&&&&&&&&&&Intent intent = new Intent();
&&&&&&&&&&&&intent.setClass(Work_01.this, Work_02.class);
&&& &&&&& &&Bundle bundle = new Bundle();
&&& &&&&&& &bundle.putInt(&count&, i);
&&& &&&&& &&intent.putExtras(bundle);
&&&&&&&&&&&&startActivity(intent);
&&&&&&&&&&&&Work_01.this.finish();&&&&&&&&&&&&&&&&&&
然后,可以在Work_02里将“按下的按钮为:” i 打印出来,以确认设置的监听是否正确。
比如,按下 按钮0 ,在Work_02对应的页面里,应该打印出 “按下的按钮为:0 ”。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:124138次
积分:1310
积分:1310
排名:千里之外
原创:19篇
转载:16篇
评论:17条
(1)(1)(1)(2)(1)(3)(1)(1)(1)(6)(1)(1)(4)(1)(3)(2)(4)(1)Android开发(4)
第一种:匿名内部类作为事件监听器类
大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!!
对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。
第二种:内部类作为监听器
将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!!
第三种:Activity本身作为事件监听器
这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。
上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。
第四种:外部类作为监听器
ButtonTest类
当用户单击button按钮时,程序将会触发MyButtonListener监听器
外部MyButtonListener类
使用顶级类定义事件监听器类的形式比较少见,主要因为如下两个原因:
1、事件监听器通常属于特定的gui界面,定义成外部类不篮球提高程序的内聚性。
2、外部类形式的事件监听器不能自由访问创建gui界面的类中的组件,编程不够简洁。
但如果某个事件监听器确实需要被多个gui界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。
第五种:直接绑定到标签
还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx
(View source)
的方法的方法名。在布局文件中为button添加属性,如一代码:
为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。
下面是该界面布局对应的java代码:
自己做的一个实例:
package ******;
import android.app.A
import android.os.B
import android.util.L
import android.view.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.ImageB
public class MainActivity extends Activity implements OnClickListener {
private Button loginB
private ImageButton loginImageB
private Button confirmB
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//监听事件
匿名内部类实现
loginButton = (Button)findViewById(R.id.button1);
loginButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//System.out.println(&Button is clicked!(内部类)&);
Log.i(&tag&,&Button is clicked!(内部类)&);
//监听事件
独立类实现
loginImageButon = (ImageButton) findViewById(R.id.imageButton1);
loginImageButon.setOnClickListener(listener);
//监听事件
接口类实现
confirmButton = (Button) findViewById(R.id.button2);
confirmButton.setOnClickListener(this);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//System.out.println(&ImageButton is clicked!(独立类)&);
Log.i(&tag&,&ImageButton is clicked!(独立类)&);
public void onClick(View v){
//System.out.println(&Button2 is clicked!(接口类)&);
Log.i(&tag&,&Button2 is clicked!(接口类)&);
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:54733次
积分:1092
积分:1092
排名:千里之外
原创:46篇
转载:67篇
(2)(3)(5)(3)(9)(10)(40)(31)(10)19438人阅读
android(10)
我们在的过程中,往往为了美化的需要,会修改的默认外观,而因为Android中的按钮有三种状态—默认,被点击,被选中。所以,如果要改变按钮的外观,需要对这三种情况都做出修改,也许在以往,我们最容易想到的就是,手动监听按钮的选中和点击事件,然后写来替换按钮的背景,但是在中,我们不需要这么麻烦,android早就替我们想好了方案,那就是selector资源。如果我们要实现按钮的三种背景,只需在res/drawable目录中建立这样一个:
  selector.xml
&selector xmlns:android=&&&
&&&&&&&&&item android:state_window_focused=&false&
&&&&&&&&android:drawable=&@drawable/t3&/&
&&&&&&&&&item android:state_focused=&true&
&&&&&&&&android:drawable=&@drawable/t1&/&
&&&&&&&&&item android:state_pressed=&true&
&&&&&&&&android:drawable=&@drawable/t2&/&
&&&&&&&&&item android:drawable=&@drawable/t3&/&
&/selector&
&& &正如上面的资源文件所描述的,我们在这里了三种行为各自的图片资源,接下来,我们只需要在相应的按钮中,将背景资源指定为drawable/selector,就完成我们需要做的一切了~
&ImageButton&&&&&&&&&
android:layout_width=&100px&&&&&&
&&&android:layout_height=&50px&&&&&&&&&
android:src=&@drawable/selector&&&&&&&&&/&
&&这一切就这么简单,不用写任何的逻辑代码,android开发是不是很方便呢~,下面是图:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:39514次
排名:千里之外
转载:12篇
(1)(1)(10)

我要回帖

更多关于 易语言按钮被单击 的文章

 

随机推荐