zoukankan      html  css  js  c++  java
  • [安卓] 2、使用2中方法做按钮监听和图片按钮使用

     


    第一种方法是使用点击监听器来实现(代码中注释掉的部分):这种方法要在初始化的函数中将按钮绑定在点击监听器上(23,24)btn_ok.setOnClickListener(this);。然后处理统一写在抽象函数onClick(View v) 中,并用v == btn_ok来判别是哪一个按钮的点击。(28~34)

    第二种方法是使用内部类实现按键监听,具体如下(这个看起来要代码多一点,各个处理是单独的)

     1 package com.himi.button;//包路径
     2 //import导入类库
     3 
     4 import android.app.Activity;
     5 import android.os.Bundle;
     6 import android.view.View;
     7 import android.view.View.OnClickListener;
     8 import android.widget.Button;
     9 import android.widget.TextView;
    10 
    11 /* 使用点击监听器接口进行监听
    12  public class MainActivity extends Activity implements OnClickListener {//使用点击监听器
    13      private Button btn_ok, btn_cancel;
    14      private TextView tv;
    15     
    16      @Override
    17      public void onCreate(Bundle savedInstanceState) {
    18          super.onCreate(savedInstanceState);
    19          setContentView(R.layout.main);
    20          btn_ok = (Button) findViewById(R.id.btn_ok);
    21          btn_cancel = (Button) findViewById(R.id.btn_cancel);
    22          tv = (TextView) findViewById(R.id.tv);
    23          btn_ok.setOnClickListener(this);//将btn_ok按钮绑定在点击监听器上
    24          btn_cancel.setOnClickListener(this);//将btn_cancel按钮绑定在点击监听器上
    25      }
    26     
    27      @Override
    28      public void onClick(View v) {//使用监听器就要重写其抽象函数 
    29          if (v == btn_ok) {
    30              tv.setText("确定按钮触发事件!");
    31          } else if (v == btn_cancel) {
    32              tv.setText("取消按钮触发事件!");
    33          }
    34     }
    35  }
    36  */
    37 //内部类实现按键监听
    38 public class MainActivity extends Activity {// 使用点击监听器
    39     private Button btn_ok, btn_cancel;
    40     private TextView tv;
    41 
    42     @Override
    43     public void onCreate(Bundle savedInstanceState) {
    44         super.onCreate(savedInstanceState);
    45         setContentView(R.layout.main);
    46         btn_ok = (Button) findViewById(R.id.btn_ok);
    47         btn_cancel = (Button) findViewById(R.id.btn_cancel);
    48         tv = (TextView) findViewById(R.id.tv);
    49         btn_ok.setOnClickListener(new OnClickListener() {// 将btn_ok按钮绑定在点击监听器上
    50             @Override
    51             public void onClick(View v) {
    52                 tv.setText("确定按钮触发事件!");
    53             }
    54         });
    55         btn_cancel.setOnClickListener(new OnClickListener() {// 将btn_cancel按钮绑定在点击监听器上
    56             @Override
    57             public void onClick(View v) {
    58                 tv.setText("取消按钮触发事件!");
    59             }
    60         });
    61     }
    62 
    63 }

    理解了上面的下面的图片按钮也就很简单啦:如下第9行可见我这里用的不是鼠标的点击监听了,而是触屏监听。其中根据触屏事件来更换ImageButton的背景来实现上述效果。这里的图片资源是存起来的,通过调用getResources().getDrawable(R.drawable.xxx)来获取资源。

     1 public class MainActivity extends Activity {
     2     private ImageButton Ibtn;
     3     @Override
     4     public void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     6         setContentView(R.layout.main);
     7         Ibtn = (ImageButton)findViewById(R.id.imageBtn); 
     8         //为图片按钮添加触屏监听
     9         Ibtn.setOnTouchListener(new OnTouchListener() {
    10             @Override
    11             public boolean onTouch(View v, MotionEvent event) {
    12                 //用户当前为按下
    13                 if(event.getAction()==MotionEvent.ACTION_DOWN){
    14                     //设置图片按钮背景图
    15                     Ibtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.press));
    16                 //用户当前为抬起
    17                 }else if(event.getAction()==MotionEvent.ACTION_UP){
    18                     Ibtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.nopress));
    19                 }
    20                 return false;
    21             }
    22         });
    23     }
    24 }

    注意:这里的按钮是ImageButton!

      

    本文链接:http://www.cnblogs.com/zjutlitao/p/4229564.html

    更多精彩:http://www.cnblogs.com/zjutlitao

  • 相关阅读:
    Centos 6.5 Install Mysql 8.0.0
    Django根据现有数据库建立/更新model
    Python之路【第十七篇】:Django【进阶篇 】
    Django之Model操作
    Django之Form组件
    Appium+python自动化获取toast消息(windows版)的方法
    'sudo'不是内部或外部命令,,,,的解决办法
    LookupError: unknown encoding: cp65001解决方案
    进程和线程(5)-分布式进程
    进程和线程(4)-进程 vs. 线程
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/4229564.html
Copyright © 2011-2022 走看看