Android开发-监听器

        一共有四种监听方式:

1.创建内部类

          创建内部类,implements View.OnClickListener,并重写其onClick(View view)方法。

public class SendBroadcastActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sendbroadcast_layout);
        Button btn = (Button)findViewById(R.id.addressbook_btn_delete);
        btn.setOnClickListener(new MyButtonListener());
    }
    //内部类
    class MyButtonListener implements View.OnClickListener{
        public void onClick(View view){
            //重写该方法,将在绑定的按钮被点击时调用,view对象为绑定的空阿金
        }
    }
}

2.创建匿名内部类

           

public class SendBroadcastActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sendbroadcast_layout);
        Button btn = (Button)findViewById(R.id.addressbook_btn_delete);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //重写方法
            }
        });
    }
}

3.Activity直接实现监听器接口

       implements View.OnClickListener,然后重写其onClick(View view)方法。

public class AddressBookActivity extends AppCompatActivity implements View.OnClickListener{
    private Button mBtnAdd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addressbook_layout);     
        init();
    }
    //初始化方法
    private void init(){    
        mBtnAdd = (Button)findViewById(R.id.addressbook_btn_add);     
        mBtnAdd.setOnClickListener(this);      
    }
    public void onClick(View v){
        //重写方法内容
    }
}

4. XML方式

     1)第一步,在XML布局文件汇中为控件添加onClick属性:android:onClick="方法名",

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:onClick="send"
        android:layout_marginTop="50dp"
        android:text="发送消息"/>

     2)第二步,在对应的Activity中,创建一个以onClick属性值为名字的方法,修饰符为public,传入的参数为View

public void send(View view){
    Intent intent = new Intent();
    intent.setAction("Intercept_Stitch");
    //参数1为意图对象,参数2为指定接收者权限
    sendOrderedBroadcast(intent,null);
}

           内部类和匿名内部类在开发中最常使用。

 

5. 为多个控件添加监听器

      使用switch(v.getId())匹配。

 public void onClick(View v) {
    //......
     switch (v.getId()) {
        case R.id.musicplayer_tv_paly:
            if (file.exists() && file.length() > 0) {
                binder.play(path);
            } else {
                Toast.makeText(this, "找不到音乐文件", Toast.LENGTH_SHORT).show();
            }
             break;
        case R.id.musicplayer_tv_pause:
             binder.pause();
             break;
        default:
             break;
    }
}

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
步数记录器可以通过以下步骤实现: 1. 添加传感器权限和计步器传感器类型声明到AndroidManifest.xml文件中。 ``` <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> <uses-feature android:name="android.hardware.sensor.stepcounter" /> <uses-feature android:name="android.hardware.sensor.stepdetector" /> ``` 2. 在Activity中获取传感器服务的实例。 ``` SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); ``` 3. 获取计步器传感器的实例,并注册监听器。 ``` Sensor stepSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); sensorManager.registerListener(this, stepSensor, SensorManager.SENSOR_DELAY_NORMAL); ``` 4. 在监听器中,实现步数的记录和更新。 ``` @Override public void onSensorChanged(SensorEvent event) { Sensor sensor = event.sensor; if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) { int stepCount = (int) event.values[0]; updateStepCount(stepCount); } } private void updateStepCount(int stepCount) { // 记录步数并更新UI mStepCount = stepCount; mStepCountTextView.setText(String.valueOf(mStepCount)); } ``` 5. 在Activity中,可以添加计时器,定期记录步数并更新UI。 ``` private Timer mTimer; private TimerTask mTimerTask; private void startRecord() { mTimer = new Timer(); mTimerTask = new TimerTask() { @Override public void run() { updateStepCount(mStepDetector.getStepCount()); } }; mTimer.schedule(mTimerTask, 0, 1000); } private void stopRecord() { if (mTimer != null) { mTimer.cancel(); mTimer = null; } if (mTimerTask != null) { mTimerTask.cancel(); mTimerTask = null; } } ``` 以上是一个简单的步数记录器的实现示例。需要注意的是,计步器传感器的精度和准确性可能会受到设备硬件和软件版本的影响,因此需要进行测试和验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值