Android拨号器的实现(四中点击事件)
16lz
2021-12-04
首先看看需要达到的效果:
对应的main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" /> <EditText android:id="@+id/number" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:layout_below="@id/title" /> <Button android:id="@+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/number" android:text="@string/callNumber" /> </RelativeLayout>
对于上面这段代码:需要了解相对布局,android:text=需要在哪里配置【alter+1】,为什么需要android:id,一个布局组件相对于另外一个布局组件是总么相对的。android:id="@+id/btn_call中后面的@+i是代表创建一个id的,而android:layout_below="@id/title"这个@id是代表使用一个id。
第一种单击事件:
在main.xml中要这样配置:android:onClick="call",
然后Activity中需要这样实现代码:
public void call(View v){System.out.println("请拨打电话");//取出输入框中的号码EditText etNumber=(EditText) findViewById(R.id.number);String number=etNumber.getText().toString();//根据号码拨打电话Intent intent=new Intent(); //创建一个意图intent.setAction(Intent.ACTION_CALL); //指定要播出的号码intent.setData(Uri.parse("tel:"+number));startActivity(intent); //执行这个动作}
方法里面的代码为拨号器的核心代码。
第二种方法:
这个时候我们将call方法变成私有,private来修饰
/* * 拨打电话的私有方法 */private void call(){System.out.println("请拨打电话");//取出输入框中的号码EditText etNumber=(EditText) findViewById(R.id.number);String number=etNumber.getText().toString();//根据号码拨打电话Intent intent=new Intent(); //创建一个意图intent.setAction(Intent.ACTION_CALL); //指定要播出的号码intent.setData(Uri.parse("tel:"+number));startActivity(intent); //执行这个动作}
在onCreate方法中内部类来调用:让按钮Button来实现触发调用call方法
/* * 当界面刚创建时回调此方法 * @see android.app.Activity#onCreate(android.os.Bundle) */@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); //必须执行此句代码,执行父类的初始化方法setContentView(R.layout.main); //执行当前几面Button btnCall=(Button) findViewById(R.id.btn_call);btnCall.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("MainActivity2拨打电话");call();}});
第三种方法:
/* * 当界面刚创建时回调此方法 * @see android.app.Activity#onCreate(android.os.Bundle) */@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); //必须执行此句代码,执行父类的初始化方法setContentView(R.layout.main); //执行当前几面Button btnCall=(Button) findViewById(R.id.btn_call);btnCall.setOnClickListener(new MyOnClickListener());}class MyOnClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("第三种方式实现");call();}}
自己写一个类来实现这个类,这样就可以避免使用内部类。
第四种方法:让Activity实现这个接口OnClickListener
public class MainActivity4 extends Activity implements OnClickListener
在onCreate方法中让Button触发单击事件:
Button btnCall=(Button) findViewById(R.id.btn_call);btnCall.setOnClickListener(this);
实现了OnClickListener借口肯定要实现接口中的方法:
@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("第四种单击事件!");call();}
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android(安卓)- Animation(二)
- Android完全退出应用程序的方法
- view-ListView学习
- [置顶] Android资源文件分析
- Android欢迎界面的创建方法
- android 设置全屏的两种方法