Android拨号器的实现(四中点击事件)

首先看看需要达到的效果:

                                                                                  Android拨号器的实现(四中点击事件)_第1张图片

 

 

 

 

 

对应的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)
	 */
	@Override
	protected 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 stub
				System.out.println("MainActivity2拨打电话");
				call();
				
			}
		});


 

第三种方法:

	/*
	 * 当界面刚创建时回调此方法
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected 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{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			System.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借口肯定要实现接口中的方法:

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		System.out.println("第四种单击事件!");
		call();
		
	}


 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Android拨号器的实现(四中点击事件))