Android开发学习之事件处理和Button详解

时间:2021-01-27 16:04:33

Android的事件处理机制: 


  1.基于监听器的事件处理 --- 组件绑定特定的事件监听器   --- 重点
  2.基于回调的事件处理   --- 主要做法是重写Android组件特定的回调函数,
  Android大部分界面组件都提供了事件响应的回调函数,我们只要重写它们就行


监听器模型:
  (1)事件源Event Source:产生事件的来源,通常是各种组件,如按钮,窗口等。


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


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


基于监听器的事件处理:
   1.内部类作为监听器

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

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



1.  btnLogin=(Button)super.findViewById(R.id.login);  
  
     //为按钮注册监听事件  
    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, "你点击了按钮1",Toast.LENGTH_LONG).show();  
            }  
        });  
        myButton2.setOnClickListener(new OnClickListener()  
        {         
            public void onClick(View v)  
            {  
                Toast.makeText(ButtonDemoActivity.this, "你点击了按钮2",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, "你点击了按钮1",Toast.LENGTH_LONG).show();  
                break;  
            case R.id.myButton2:  
                Toast.makeText(ButtonDemoActivity.this, "你点击了按钮2",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   --- 按钮样式定制文件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"/>
<!--设置按钮的四个角为弧形-->
<!--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="圆角按钮"
       android:layout_width="wrap_content"   
       android:layout_height="wrap_content"  
       android:background="@drawable/shape"/>