Android学习笔记——KeyEvnet、ListView以及如何增加收到消息提醒。

1、KeyEvnet

可以在主界面中监听键盘事件,来判断点击了什么键。关于配置文件的设置省略。

package com.keyevent;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.keyevent.R;


/**
 * 
 * 控件事件通过设置其控件的监听器来监听并处理事件
 * 按键按下事件:通过重写onKeyDown方法
 * 按键弹起事件:通过重写onKeyUp方法
 * 触笔点击事件:通过实现onTouchEvent方法
 * 示例中使用了Toast控件:
 * Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
 * 显示提示信息
 *
 */
public class KeyEventActivity extends Activity {
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		//获取Button对象
		Button button = (Button)findViewById(R.id.click);
		
		//设置Button控件监听器
		button.setOnClickListener(new Button.OnClickListener() {
		public void onClick(View v)
			{
				//这里处理事件
				DisplayToast("点击了OK按钮");
			}
		});
	}
	
	/* 按键按下所触发的事件 */
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		//这里构建keyEvent对象,其功能为返回键
		//按任意键都会执行返回功能。
		
		KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK);
		
		//这里传入的参数就是我们自己构建的keyEvent对象
		super.onKeyDown(keyEvent.getKeyCode(), keyEvent);
		
		switch (keyCode)
		{
			case KeyEvent.KEYCODE_DPAD_CENTER:
				DisplayToast("按下:中键");
				break;
			case KeyEvent.KEYCODE_DPAD_UP:
				DisplayToast("按下:上方向键");
				break;
			case KeyEvent.KEYCODE_DPAD_DOWN:
				DisplayToast("按下:下方向键");
				break;
			case KeyEvent.KEYCODE_DPAD_LEFT:
				DisplayToast("按下:左方向键");
				break;
			case KeyEvent.KEYCODE_DPAD_RIGHT:
				DisplayToast("按下:右方向键");
				break;
		}
		return super.onKeyDown(keyCode, event);
	}
	/* 按键弹起所触发的事件 */
	public boolean onKeyUp(int keyCode, KeyEvent event)
	{
		switch (keyCode)
		{
			case KeyEvent.KEYCODE_DPAD_CENTER:
				DisplayToast("弹起:中键");
				break;
			case KeyEvent.KEYCODE_DPAD_UP:
				DisplayToast("弹起:上方向键");
				break;
			case KeyEvent.KEYCODE_DPAD_DOWN:
				DisplayToast("弹起:下方向键");
				break;
			case KeyEvent.KEYCODE_DPAD_LEFT:
				DisplayToast("弹起:左方向键");
				break;
			case KeyEvent.KEYCODE_DPAD_RIGHT:
				DisplayToast("弹起:右方向键");
				break;
		}
		
		return super.onKeyUp(keyCode, event);
	}
	
	public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
	{
		
		return super.onKeyMultiple(keyCode, repeatCount, event);
	}
	
	/* 触笔事件 */
    public boolean onTouchEvent(MotionEvent event)
    {
    	int iAction = event.getAction();
		if (iAction == MotionEvent.ACTION_CANCEL || 
			iAction == MotionEvent.ACTION_DOWN || 
			iAction == MotionEvent.ACTION_MOVE) 
		{
			return false;
		}
		//得到触笔点击的位置
		int x = (int) event.getX();
		int y = (int) event.getY();
		
		DisplayToast("触笔点击坐标:("+Integer.toString(x)+","+Integer.toString(y)+")");
		
		return super.onTouchEvent(event);
	}
	
	/* 显示Toast  */
	public void DisplayToast(String str)
	{
		Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
	}

}
2、ListView

通过一个ListView来显示通讯录的信息。这里需要在manifest中增加一个读取通讯录的权限设置:

<uses-permission android:name="android.permission.READ_CONTACTS"/>
主要的代码如下:

package com.androidcomponent;

import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ComponentActivity01 extends Activity {
	// 声明TextView对象
	private TextView textview;
	private LinearLayout m_LinearLayout;
	private ListView m_ListView;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

//		setContentView(R.layout.main);
//
//		textview = (TextView) findViewById(R.id.textview);
//		String text = "TextView示例,欢迎使用";
//
//		textview.setTextColor(Color.RED);
//
//		textview.setTextSize(20);
//
//		textview.setBackgroundColor(Color.BLUE);
//
//		textview.setText(textview.getText() + "\n" + text);
		listUserContactList();
	}

	private void listUserContactList() {
		// 创建linearLayout布局对象
		m_LinearLayout = new LinearLayout(this);
		// 设置属性
		m_LinearLayout.setOrientation(LinearLayout.VERTICAL);
		m_LinearLayout.setBackgroundColor(android.graphics.Color.BLACK);

		// 创建ListView对象
		m_ListView = new ListView(this);
		LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
				LinearLayout.LayoutParams.FILL_PARENT,
				LinearLayout.LayoutParams.WRAP_CONTENT);
		m_ListView.setBackgroundColor(Color.BLUE);

		// 添加m_ListView到m_LinearLayour布局
		m_LinearLayout.addView(m_ListView, param);

		// 设置显示m_LinearLayout 这里在前面已经设置
		 setContentView(m_LinearLayout);
		// 获取数据库phonede cursor
//		Cursor cur = getContentResolver().query(
//				ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
		Cursor cur = getContentResolver().query(
				 ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
		startManagingCursor(cur);
		
//		 //取得电话号码
//        String ContactId = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
//        Cursor phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
//        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
//         
//        while(phone.moveToNext())
//        {
//            String PhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//            string += (contact + ":" + PhoneNumber + "\n");
//        }

		// ListAdapter是ListView和后台数据的桥梁
		ListAdapter adapter = new SimpleCursorAdapter(this,
				android.R.layout.simple_list_item_2, cur, new String[] {
				ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER  },
				new int[] { android.R.id.text1, android.R.id.text2 });
		
		//将Adapter添加到m_ListView中
		m_ListView.setAdapter(adapter);
		
		//为m_ListView视图添加setOnItemSelectedLister监听
		m_ListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				DisplayToast("滚动到第"+Long.toString(arg0.getSelectedItemId())+"项");
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				//没有选中
			}
			
		});
	}
	
	public void DisplayToast(String str){
		Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
	}
}
3、收到短信提醒:

需要配置一个Receiver来接收信息:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name="MainActivity">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <receiver android:name="SMSReceiver" android:enabled="true">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
    </application>
接收器代码如下:

package com.example.receivemessage;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.view.Gravity;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver{

	@Override
	public void onReceive(Context context, Intent intent) {
		Bundle bundle = intent.getExtras();
		Object messages[] = (Object[]) bundle.get("pdus");
		SmsMessage smsMessage[] = new SmsMessage[messages.length];
		for( int i = 0 ;i < messages.length;i++){
			smsMessage[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
		}
		
		//toast
		Toast toast = Toast.makeText(context, "短信内容:"+smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
		
		//设置Toast的显示位置
		toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 200);
		//显示
		toast.show();
	}
	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值