1、电话拨号器案例

2017-12-17  本文已影响0人  Jarvis_zhu

电话拨号器


1、画UI

UI.png

2、根据UI写业务逻辑,在MainActivity里面写 在onCreate方法里面写逻辑

        // 加载一个布局
        setContentView(R.layout.activity_main);
        et_number = (EditText) findViewById(R.id.editText1);
        // [2]找到按钮
        Button btn_call = (Button) findViewById(R.id.button1);

3、给按钮设置一个点击事件

        // [3]给按钮设置一个点击事件
        btn_call.setOnClickListener(new MyClickListener());

4、设置按钮的点击事件

4.1 按钮的四种点击事件

  1. 自己定义一个类去实现方法需要的参数类型
        // 定义一个类去实现按钮需要的接口类型
        private class MyClickListener implements OnClickListener {

            @Override
            public void onClick(View v) {
                // [4]获取edittext文本内容
                String number = et_number.getText().toString().trim();
                if ("".equals(number)) {
                    // Context 上下文
                    Toast.makeText(MainActivity.this, "number不能为空", Toast.LENGTH_LONG).show();
                    return;
                }

                // [5]进行拨打电话 意图 Intent
                Intent intent = new Intent();// 创建一个意图对象
                // [5.1]设置动作
                intent.setAction(Intent.ACTION_CALL);
                // [5.2]设置要拨打的数据
                // uri:统一资源标识符 自己定义的路径 想代表什么就代表什么
                // url:统一资源定位符www.baidu.com
                intent.setData(Uri.parse("tel:" + number));

                // [6]开启意图
                startActivity(intent);

            }

        }
  1. 设置按钮的第二种点击事件,采用匿名内部类的方式
        // ☆按钮的第二种点击事件 匿名内部类的方式
        btn_call.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                callPhone();
            }
        });
  1. 设置按钮的第三种点击事件,让当前类去实现onClickListener接口

如果界面上的按钮数量比较多,采用这种方法非常好,我们只要在实现的方法里面去判断一下按钮的ID就好了。

public class MainActivity extends Activity implements OnClickListener {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 加载一个布局
        setContentView(R.layout.activity_main);
        et_number = (EditText) findViewById(R.id.editText1);
        // [2]找到按钮
        Button btn_call = (Button) findViewById(R.id.button1);
        Button btn_call1 = (Button) findViewById(R.id.button2);
        Button btn_call2 = (Button) findViewById(R.id.button3);
        Button btn_call3 = (Button) findViewById(R.id.button4);
        // [3]给按钮设置一个点击事件
        // btn_call.setOnClickListener(new MyClickListener());

        // ☆按钮的第三种点击事件 主类实现onClickListener的方式
        btn_call.setOnClickListener(this);
        btn_call1.setOnClickListener(this);
        btn_call2.setOnClickListener(this);
        btn_call3.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            callPhone();
            break;
        case R.id.button2:
            callPhone();
            break;
        case R.id.button3:
            callPhone();
            break;
        case R.id.button4:
            System.out.println("你点击了我");
            break;

        default:
            break;
        }
    }
  1. 在布局文件里面增加onClick属性,同时添加属性对应的方法click
        android:text="test"
        android:onClick="click"
    // [5]按钮的第四种点击事件,申明一个方法,方法名和你要点击的这个按钮在布局中申明的属性一样
    public void click(View v) {
        // 拨打电话
        callPhone();
    }

5、一定要记得加上拨打电话的权限

<uses-permission android:name="android.permission.CALL_PHONE"/>
上一篇下一篇

猜你喜欢

热点阅读