Android的事件处理机制: 



1.基于监听器的事件处理 --- 组件绑定特定的事件监听器   --- 重点

  2.基于回调的事件处理   --- 主要做法是重写Android组件特定的回调函数,

  Android大部分界面组件都提供了事件响应的回调函数。我们仅仅要重写它们即可





监听器模型:

  (1)事件源Event Source:产生事件的来源,一般是各种组件,如button。窗体等。

 (2)事件Event:事件封装了界面组件上发生的特定事件的详细信息,假设监听器须要获取界面组件上所发生事件的相关信息。一般通过事件Event对象来传递。





 (3)事件监听器Event Listener:负责监听事件源发生的事件,并对不同的事件做对应的处理。





基于监听器的事件处理:

   1.内部类作为监听器

2.匿名内部类作为事件监听器类

3.XML布局文件里指定处理方法

1.  btnLogin=(Button)super.findViewById(R.id.login);  

  

     //为button注冊监听事件  

    btnLogin.setOnClickListener(new LoginOnClickListener());  

         }  

         //事件监听器  

    private class LoginOnClickListener implements OnClickListener{  

        public void onClick(View v){  

            String username=tvUserName.getText().toString();  

            String password=tvPassword.getText().toString();  

            String info="用户名:"+username+"☆☆☆密码:"+password;  

            Toast.makeText(getApplicationContext(), info,Toast.LENGTH_SHORT).show();  

        }  

    }  

    

2.  btnLogin=(Button)super.findViewById(R.id.login);  

    btnLogin.setOnClickListener(new OnClickListener(){  

       public void onClick(View v){  

          String username=tvUserName.getText().toString();  

          String password=tvPassword.getText().toString();  

          String info="用户名:"+username+"☆☆☆密码:"+password;  

          Toast.makeText(getApplicationContext(), info,Toast.LENGTH_SHORT).show();  

      }  

    });     

















  Button事件处理方法:

 

 1.

        myButton1=(Button)findViewById(R.id.myButton1);  

        myButton2=(Button)findViewById(R.id.myButton2);  

          

        //使用匿名类注冊Button事件  

        myButton1.setOnClickListener(new OnClickListener()  

        {         

            public void onClick(View v)  

            {  

                Toast.makeText(ButtonDemoActivity.this, "你点击了button1",Toast.LENGTH_LONG).show();  

            }  

        });  

        myButton2.setOnClickListener(new OnClickListener()  

        {         

            public void onClick(View v)  

            {  

                Toast.makeText(ButtonDemoActivity.this, "你点击了button2",Toast.LENGTH_LONG).show();  

            }  

        });  









2. 

   myButton1.setOnClickListener(new ButtonClick());  

   myButton2.setOnClickListener(new ButtonClick()); 





  //创建一个类。来响应OnClickListener  

    class ButtonClick implements OnClickListener  

    {  

        public void onClick(View v)  

        {  

            switch (v.getId()) {  

            case R.id.myButton1:  

                Toast.makeText(ButtonDemoActivity.this, "你点击了button1",Toast.LENGTH_LONG).show();  

                break;  

            case R.id.myButton2:  

                Toast.makeText(ButtonDemoActivity.this, "你点击了button2",Toast.LENGTH_LONG).show();  

                break;  

            default:  

                break;  

            }  

        }         

    }  









3. 

    XML中定义处理方法:

    <Button 

           android:onClick="clickIt">

           

    public void clickIt(View view){

      //处理button点击事件的方法

    }





定义圆角的Button





1.res->drawable-mdpi -> shape.xml





       shape.xml   --- button样式定制文件XML





<?xml version="1.0" encoding="UTF-8"?> 

<shape 

    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:shape="rectangle"> 

<!--定义填充颜色-->

<solid android:color="#FFFFFF"/>

<!--设置button的四个角为弧形-->

<!--android:radius 弧形半径-->

<corners android:radius="5dip">





<!--padding:button 里边的文字与Button边界的间距-->

<padding

   android:left="10dp"

   android:top="10dp" 

   android:right="10dp" 

   android:bottom="10dp"/>

</shape>





      mainLayout.xml    ---- 布局文件





在通过android:background="@drawable/shape"中使用shape.xml资源





<Button

       android:id="@+id/button1"

       android:text="圆角button"

       android:layout_width="wrap_content"   

       android:layout_height="wrap_content"  

       android:background="@drawable/shape"/>

Android开发学习之事件处理和Button具体解释的更多相关文章

  1. android开发学习笔记:圆角的Button

    转自:http://www.cnblogs.com/gzggyy/archive/2013/05/17/3083218.html 在res目录下的drawable-mdpi建立xml文件shape.x ...

  2. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  3. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  4. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  5. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  6. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  7. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  8. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

  9. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

随机推荐

  1. crm 系统项目(二) admin 后台操作表格

    crm 系统项目(二) admin 后台操作表格 1. app下创建 templates  运行的时候 先找全局的templates——> 按照app的注册顺序找templates中的文件 2. ...

  2. VUE:事件处理和表单输入绑定

    事件处理 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  3. (转载)springboot集成httpinvoker的客户端

    原文:https://blog.csdn.net/geanwan/article/details/51505679 由于新项目采用了springboot,需要调用之前远程服务(之前项目用的spring ...

  4. ASP.NET-JSON.NET技巧

    第一个技巧,字符串转JSON 单条的json数据可以使用JObject.Parse将对象转化成JObject对象,你可以接着使用JsonConvert.SerializeObject方法把这个对象序列 ...

  5. 使用BabeLua在cocos2d-x中编辑和调试Lua

    使用BabeLua在cocos2d-x中编辑和调试Lua BabeLua是一款基于VS2012/2013的Lua集成开发环境,具有Lua语法高亮,语法检查.自己主动补全.高速搜索,注入宿主程序内对Lu ...

  6. oracle学习之第一个存储过程:打印Hello World

    数据库对象:表.视图.索引.序列.同义词.存储过程.存储函数 存储过程:指的是存储在数据库中供全部用户程序调用的子程序叫存储过程.存储函数 存储过程和存储函数的同样点:完毕特定功能的程序 存储过程和存 ...

  7. 玩转oracle学习第六天

     1.上节回想 2.PL/SQL的介绍 3.PL/SQL的基础 理解oracle的pl/sql概念 掌握PL/SQL编程技术(包含编写过程,函数,触发器.包... ) PL/SQL是什么? PL/ ...

  8. CSS3弹性布局内容对齐(justify-content)属性使用具体解释

    内容对齐(justify-content)属性应用在弹性容器上.把弹性项沿着弹性容器的主轴线(main axis)对齐. 该操作发生在弹性长度以及自己主动边距被确定后. 它用来在存在剩余空间时怎样加以 ...

  9. 【动态树问题】LCT学习笔记

    我居然还不会LCT QAQ真是太弱了 必须学LCT QAQ ------------------线割分是我www------------ LinkCut-Tree是基于Splay(由于Splay能够非 ...

  10. silverlight wpf Command提交时输入验证

    silverlight 或WPF在MVVM模式中使用INotifyDataErrorInfo接口对输入进行验证时 控件lostFocus时会触发验证,但在提交动作(例如button的Command)时 ...