• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 作文大全 > 正文

    android为按钮添加事件的三种方法_android按钮点击事件

    时间:2020-05-26来源:山茶花美文网 本文已影响 山茶花美文网手机站

    Android中为按钮添加事件一般有三种方法,这里总结一下,当然其实这完全是java基础内容。

    1、内部类:

    ?

    代码片段,双击复制

    btn.setOnClickListener(new OnClickListener()

    {

    public void onClick(View v)

    {

    ...

    }

    });

    这种方法适合只为单个按钮添加事件,当按钮较多的时候,就要重复写onClick()方法,这样不是最佳的在做法。

    2、创建独立的类:

    ?

    代码片段,双击复制

    btn.setOnClickListener(new MyListener());

    class MyListener implements OnClickListener

    {

    public void onClick(View v)

    {

    ...

    }

    }

    这种做法其实和内部类的做法差不多,一般的做法并不需要单独声明一个类。相反用内部类对类中的隐藏了实现部分。当然这个比内部类好的地方就是能复用。

    3、只实现接口

    ?

    代码片段,双击复制

    btn.setOnClickListener(listener);

    OnClickListener listener = new OnClickListener()

    {

    public void onClick(View v)

    {

    ...

    }

    };

    这种做法能节省代码,当有多个按钮时,可以同用一个listener,减少了onClick()方法的调用。而只需在onClick()方法里进行判断是哪个按钮就可以了。

    ?

    代码片段,双击复制

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

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

    btn1.setOnClickListener(listener);

    btn2.setOnClickListener(listener);

    OnClickListener listener = new OnClickListener()

    {

    public void onClick(View v)

    {

    btn = (Button)v;

    switch(btn.getId())

    {

    case R.id.btn1:

    ...;

    break;

    case R.id.btn2:

    ...;

    break;

    ...

    }

    }

    };

    Android拍照、录像、录音代码范例

    import java.io.File;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import android.app.Activity;

    import android.content.Intent;

    import android.database.Cursor;

    import .Uri;

    import android.os.Bundle;

    import android.os.Environment;

    import android.provider.MediaStore;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.Toast;

    public class ActivityMedia extends Activity implements OnClickListener {

    private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCode

    private static final int REQUEST_CODE_TAKE_VIDEO = 2;// 摄像的照相的requestCode

    private static final int RESULT_CAPTURE_RECORDER_SOUND = 3;// 录音的requestCode

    private String strImgPath = "";// 照片文件绝对路径

    private String strVideoPath = "";// 视频文件的绝对路径

    private String strRecorderPath = "";// 录音文件的绝对路径

    Button buttonShot;

    Button buttonVideo;

    Button buttonRecorder;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    this.setContentView(yout.media);

    buttonShot = (Button)findViewById(R.id.ButtonShot);

    buttonShot.setOnClickListener(this);

    buttonVideo = (Button)findViewById(R.id.ButtonVideo);

    buttonVideo.setOnClickListener(this);

    buttonRecorder = (Button)findViewById(R.id.ButtonRecorder);

    buttonRecorder.setOnClickListener(this);

    }

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {

    case RESULT_CAPTURE_IMAGE://拍照

    if (resultCode == RESULT_OK) {

    Toast.makeText(this, strImgPath, Toast.LENGTH_SHORT).show();

    }

    break;

    case REQUEST_CODE_TAKE_VIDEO://拍摄视频

    if (resultCode == RESULT_OK) {

    Uri uriVideo = data.getData();

    Cursor cursor=this.getContentResolver().query(uriVideo, null, null, null, null);

    if (cursor.moveToNext()) {

    /* _data:文件的绝对路径 ,_display_name:文件名 */

    strVideoPath = cursor.getString(cursor.getColumnIndex("_data"));

    Toast.makeText(this, strVideoPath, Toast.LENGTH_SHORT).show();

    }

    }

    break;

    case RESULT_CAPTURE_RECORDER_SOUND://录音

    if (resultCode == RESULT_OK) {

    Uri uriRecorder = data.getData();

    Cursor cursor=this.getContentResolver().query(uriRecorder, null, null, null, null);

    if (cursor.moveToNext()) {

    /* _data:文件的绝对路径 ,_display_name:文件名 */

    strRecorderPath = cursor.getString(cursor.getColumnIndex("_data"));

    Toast.makeText(this, strRecorderPath, Toast.LENGTH_SHORT).show();

    }

    }

    break;

    }

    }

    /**

    * 照相功能

    */

    private void cameraMethod() {

    Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    strImgPath = Environment.getExternalStorageDirectory().toString() + "/CONSDCGMPIC/";//存放照片的文件夹

    String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg";//照片命名

    File out = new File(strImgPath);

    if (!out.exists()) {

    out.mkdirs();

    }

    out = new File(strImgPath, fileName);

    strImgPath = strImgPath + fileName;//该照片的绝对路径

    Uri uri = Uri.fromFile(out);

    imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

    imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

    startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);

    }

    /**

    * 拍摄视频

    */

    private void videoMethod() {

    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);

    startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO);

    }

    /**

    * 录音功能

    */

    private void soundRecorderMethod() {

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

    intent.setType("audio/amr");

    startActivityForResult(intent, RESULT_CAPTURE_RECORDER_SOUND);

    }

    /**

    * 提示信息

    * @param text

    * @param duration

    */

    private void showToast(String text, int duration) {

    Toast.makeText(ActivityMedia.this, text, duration).show();

    }

    public void onClick(View v) {

    int id = v.getId();

    switch(id){

    case R.id.ButtonShot:

    cameraMethod();

    break;

    case R.id.ButtonVideo:

    videoMethod();

    break;

    case R.id.ButtonRecorder:

    soundRecorderMethod();

    break;

    }

    }

    }

    复制代码

    界面布局:

    xmlns:android="/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    android:id="@+id/ButtonShot"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="拍照"/>

    android:id="@+id/ButtonVideo"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="录像"/>

    android:id="@+id/ButtonRecorder"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="录音"/>

    • android为按钮添加事件的三种方法_android按钮点击事件 相关文章:
    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全