当前位置: 编程技术>移动开发
本页文章导读:
▪关于移动设备下的一些按键值及其对应的事件 关于移动设备上的一些按键值及其对应的事件
按键及触屏的事件: Java代码 1.package com.yarin.Android.Examples_04_01; 2. 3.import android.app.Activity; 4.import android.os.Bundle; 5.import android.view.KeyEv.........
▪ DatePickerDialog的应用 DatePickerDialog的使用
布局:<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "fill_parent"
android:layout_height = "wrap_content" > .........
▪ [转]Java多线程的Thread种和Runnable接口 [转]Java多线程的Thread类和Runnable接口
Thread 类 Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员.........
[1]关于移动设备下的一些按键值及其对应的事件
来源: 互联网 发布时间: 2014-02-18
关于移动设备上的一些按键值及其对应的事件
按键及触屏的事件:
Java代码
1.package com.yarin.Android.Examples_04_01;
2.
3.import android.app.Activity;
4.import android.os.Bundle;
5.import android.view.KeyEvent;
6.import android.view.MotionEvent;
7.import android.view.View;
8.import android.widget.Button;
9.import android.widget.Toast;
10./**
11. *
12. * 控件事件通过设置其控件的监听器来监听并处理事件
13. * 按键按下事件:通过重写onKeyDown方法
14. * 按键弹起事件:通过重写onKeyUp方法
15. * 触笔点击事件:通过实现onTouchEvent方法
16. * 示例中使用了Toast控件:
17. * Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
18. * 显示提示信息
19. *
20. */
21.
22.public class Activity01 extends Activity
23.{
24.
25. public void onCreate(Bundle savedInstanceState)
26. {
27.
28. super.onCreate(savedInstanceState);
29.
30. setContentView(R.layout.main);
31. //获得Button对象
32. Button button_ok = (Button) findViewById(R.id.ok);
33. //设置Button控件监听器
34. button_ok.setOnClickListener(new Button.OnClickListener() {
35. public void onClick(View v)
36. {
37. //这里处理事件
38. DisplayToast("点击了OK按钮");
39. }
40. });
41.
42. }
43.
44. /* 按键按下所触发的事件 */
45. public boolean onKeyDown(int keyCode, KeyEvent event)
46. {
47. switch (keyCode)
48. {
49. case KeyEvent.KEYCODE_DPAD_CENTER:
50. DisplayToast("按下:中键");
51. break;
52. case KeyEvent.KEYCODE_DPAD_UP:
53. DisplayToast("按下:上方向键");
54. break;
55. case KeyEvent.KEYCODE_DPAD_DOWN:
56. DisplayToast("按下:下方向键");
57. break;
58. case KeyEvent.KEYCODE_DPAD_LEFT:
59. DisplayToast("按下:左方向键");
60. break;
61. case KeyEvent.KEYCODE_DPAD_RIGHT:
62. DisplayToast("按下:右方向键");
63. break;
64. }
65. return super.onKeyDown(keyCode, event);
66. }
67. /* 按键弹起所触发的事件 */
68. public boolean onKeyUp(int keyCode, KeyEvent event)
69. {
70. switch (keyCode)
71. {
72. case KeyEvent.KEYCODE_DPAD_CENTER:
73. DisplayToast("弹起:中键");
74. break;
75. case KeyEvent.KEYCODE_DPAD_UP:
76. DisplayToast("弹起:上方向键");
77. break;
78. case KeyEvent.KEYCODE_DPAD_DOWN:
79. DisplayToast("弹起:下方向键");
80. break;
81. case KeyEvent.KEYCODE_DPAD_LEFT:
82. DisplayToast("弹起:左方向键");
83. break;
84. case KeyEvent.KEYCODE_DPAD_RIGHT:
85. DisplayToast("弹起:右方向键");
86. break;
87. }
88.
89. return super.onKeyUp(keyCode, event);
90. }
91.
92. public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
93. {
94.
95. return super.onKeyMultiple(keyCode, repeatCount, event);
96. }
97.
98. /* 触笔事件 */
99. public boolean onTouchEvent(MotionEvent event)
100. {
101. int iAction = event.getAction();
102. if (iAction == MotionEvent.ACTION_CANCEL ||
103. iAction == MotionEvent.ACTION_DOWN ||
104. iAction == MotionEvent.ACTION_MOVE)
105. {
106. return false;
107. }
108. //得到触笔点击的位置
109. int x = (int) event.getX();
110. int y = (int) event.getY();
111.
112. DisplayToast("触笔点击坐标:("+Integer.toString(x)+","+Integer.toString(y)+")");
113.
114. return super.onTouchEvent(event);
115. }
116.
117. /* 显示Toast */
118. public void DisplayToast(String str)
119. {
120. Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
121. }
122.}
@Override
public void onBackPressed() {
// 这里处理逻辑代码,cwj提示大家注意该方法仅适用于2.0或更新版的sdk
return;
}
按键及触屏的事件:
Java代码
1.package com.yarin.Android.Examples_04_01;
2.
3.import android.app.Activity;
4.import android.os.Bundle;
5.import android.view.KeyEvent;
6.import android.view.MotionEvent;
7.import android.view.View;
8.import android.widget.Button;
9.import android.widget.Toast;
10./**
11. *
12. * 控件事件通过设置其控件的监听器来监听并处理事件
13. * 按键按下事件:通过重写onKeyDown方法
14. * 按键弹起事件:通过重写onKeyUp方法
15. * 触笔点击事件:通过实现onTouchEvent方法
16. * 示例中使用了Toast控件:
17. * Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
18. * 显示提示信息
19. *
20. */
21.
22.public class Activity01 extends Activity
23.{
24.
25. public void onCreate(Bundle savedInstanceState)
26. {
27.
28. super.onCreate(savedInstanceState);
29.
30. setContentView(R.layout.main);
31. //获得Button对象
32. Button button_ok = (Button) findViewById(R.id.ok);
33. //设置Button控件监听器
34. button_ok.setOnClickListener(new Button.OnClickListener() {
35. public void onClick(View v)
36. {
37. //这里处理事件
38. DisplayToast("点击了OK按钮");
39. }
40. });
41.
42. }
43.
44. /* 按键按下所触发的事件 */
45. public boolean onKeyDown(int keyCode, KeyEvent event)
46. {
47. switch (keyCode)
48. {
49. case KeyEvent.KEYCODE_DPAD_CENTER:
50. DisplayToast("按下:中键");
51. break;
52. case KeyEvent.KEYCODE_DPAD_UP:
53. DisplayToast("按下:上方向键");
54. break;
55. case KeyEvent.KEYCODE_DPAD_DOWN:
56. DisplayToast("按下:下方向键");
57. break;
58. case KeyEvent.KEYCODE_DPAD_LEFT:
59. DisplayToast("按下:左方向键");
60. break;
61. case KeyEvent.KEYCODE_DPAD_RIGHT:
62. DisplayToast("按下:右方向键");
63. break;
64. }
65. return super.onKeyDown(keyCode, event);
66. }
67. /* 按键弹起所触发的事件 */
68. public boolean onKeyUp(int keyCode, KeyEvent event)
69. {
70. switch (keyCode)
71. {
72. case KeyEvent.KEYCODE_DPAD_CENTER:
73. DisplayToast("弹起:中键");
74. break;
75. case KeyEvent.KEYCODE_DPAD_UP:
76. DisplayToast("弹起:上方向键");
77. break;
78. case KeyEvent.KEYCODE_DPAD_DOWN:
79. DisplayToast("弹起:下方向键");
80. break;
81. case KeyEvent.KEYCODE_DPAD_LEFT:
82. DisplayToast("弹起:左方向键");
83. break;
84. case KeyEvent.KEYCODE_DPAD_RIGHT:
85. DisplayToast("弹起:右方向键");
86. break;
87. }
88.
89. return super.onKeyUp(keyCode, event);
90. }
91.
92. public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
93. {
94.
95. return super.onKeyMultiple(keyCode, repeatCount, event);
96. }
97.
98. /* 触笔事件 */
99. public boolean onTouchEvent(MotionEvent event)
100. {
101. int iAction = event.getAction();
102. if (iAction == MotionEvent.ACTION_CANCEL ||
103. iAction == MotionEvent.ACTION_DOWN ||
104. iAction == MotionEvent.ACTION_MOVE)
105. {
106. return false;
107. }
108. //得到触笔点击的位置
109. int x = (int) event.getX();
110. int y = (int) event.getY();
111.
112. DisplayToast("触笔点击坐标:("+Integer.toString(x)+","+Integer.toString(y)+")");
113.
114. return super.onTouchEvent(event);
115. }
116.
117. /* 显示Toast */
118. public void DisplayToast(String str)
119. {
120. Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
121. }
122.}
@Override
public void onBackPressed() {
// 这里处理逻辑代码,cwj提示大家注意该方法仅适用于2.0或更新版的sdk
return;
}
[2] DatePickerDialog的应用
来源: 互联网 发布时间: 2014-02-18
DatePickerDialog的使用
布局:
代码:
布局:
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "fill_parent" android:layout_height = "wrap_content" > <TextView android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = " 查询日期: " android:textSize = "18sp"/> <TextView android:id = "@+id/tvDate" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentTop = "true" /> <Button android:id = "@+id/btnDatePicker" android:text = " 编辑 " android:layout_width = "wrap_content" android:layout_height = "wrap_content" /> </LinearLayout>
代码:
public class MainActivity extends Activity{ private Button button; Calendar cal; SimpleDateFormat df; TextView tvDate; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); cal = Calendar.getInstance(); tvDate = (TextView)findViewById(R.id.tvDate); button = (Button)findViewById(R.id.btnDatePicker); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { new DatePickerDialog(MainActivity. this , listener, cal .get(Calendar. YEAR ), cal .get(Calendar. MONTH ), cal .get(Calendar. DAY_OF_MONTH ) ).show(); } }); } // 日期选择对话框的 DateSet 事件监听器 private DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener(){ public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { cal .set(Calendar. YEAR , arg1); cal .set(Calendar. MONTH , arg2); cal .set(Calendar. DAY_OF_MONTH , arg3); updateDate(); } }; // 当 DatePickerDialog 关闭,更新日期显示 private void updateDate(){ df = new SimpleDateFormat( "yyyy-MM-dd" ); tvDate.setText( df.format(cal.getTime())); } //这样,当DatePickerDialog中的日期被改变后,textview中的日期也做相应改变。 //接下来,在onCreate方法中,绑定button的onClickListener: // 选择日期按钮 // 构建一个 DatePickerDialog 并显示 }
1 楼
枫叶灬紫云
2011-08-24
你好 请问你这DatePickerDialog的样式是怎么定义的? 它的样式能不能自定义啊? 像按钮文字之类的
[3] [转]Java多线程的Thread种和Runnable接口
来源: 互联网 发布时间: 2014-02-18
[转]Java多线程的Thread类和Runnable接口
Thread 类
Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员必须覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是必须调用 Thread 的 start() 函数,该函数再调用 run()。下面的代码说明了它的用法:
创建两个新线程
import java.util.*;
class TimePrinter extends Thread {
int pauseTime;
String name;
public TimePrinter(int x, String n) {
pauseTime = x;
name = n;
}
public void run() {
while(true) {
try {
System.out.println(name + ":" + new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);
} catch(Exception e) {
System.out.println(e);
}
}
}
static public void main(String args[]) {
TimePrinter tp1 = new TimePrinter(1000, "Fast Guy");
tp1.start();
TimePrinter tp2 = new TimePrinter(3000, "Slow Guy");
tp2.start();
}
}
在本例中,我们可以看到一个简单的程序,它按两个不同的时间间隔(1 秒和 3 秒)在屏幕上显示当前时间。这是通过创建两个新线程来完成的,包括 main() 共三个线程。但是,因为有时要作为线程运行的类可能已经是某个类层次的一部分,所以就不能再按这种机制创建线程。虽然在同一个类中可以实现任意数量的接口,但 Java 编程语言只允许一个类有一个父类。同时,某些程序员避免从 Thread 类导出,因为它强加了类层次。对于这种情况,就要 runnable 接口。Runnable 接口只有一个方法,所以更加安全。不会产生恶意的更改。
Runnable 接口
此接口只有一个函数,run(),此函数必须由实现了此接口的类实现。但是,就运行这个类而论,其语义与前一个示例稍有不同。我们可以用 runnable 接口改写前一个示例。(不同的部分用蓝色表示。)
创建两个新线程而不强加类层次
import java.util.*;
class TimePrinter implements Runnable {
int pauseTime;
String name;
public TimePrinter(int x, String n) {
pauseTime = x;
name = n;
}
public void run() {
while(true) {
try {
System.out.println(name + ":" + new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);
} catch(Exception e) {
System.out.println(e);
}
}
}
static public void main(String args[]) {
Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy"));
t1.start();
Thread t2 = new Thread(new TimePrinter(3000, "Slow Guy"));
t2.start();
}
}
请注意,当使用 runnable 接口时,您不能直接创建所需类的对象并运行它;必须从 Thread 类的一个实例内部运行它。许多程序员更喜欢 runnable 接口,因为从 Thread 类继承会强加类层次。
相关内容目录:
http://www.cnblogs.com/hoojo/archive/2011/05/05/2038141.html
Thread 类
Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员必须覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是必须调用 Thread 的 start() 函数,该函数再调用 run()。下面的代码说明了它的用法:
创建两个新线程
import java.util.*;
class TimePrinter extends Thread {
int pauseTime;
String name;
public TimePrinter(int x, String n) {
pauseTime = x;
name = n;
}
public void run() {
while(true) {
try {
System.out.println(name + ":" + new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);
} catch(Exception e) {
System.out.println(e);
}
}
}
static public void main(String args[]) {
TimePrinter tp1 = new TimePrinter(1000, "Fast Guy");
tp1.start();
TimePrinter tp2 = new TimePrinter(3000, "Slow Guy");
tp2.start();
}
}
在本例中,我们可以看到一个简单的程序,它按两个不同的时间间隔(1 秒和 3 秒)在屏幕上显示当前时间。这是通过创建两个新线程来完成的,包括 main() 共三个线程。但是,因为有时要作为线程运行的类可能已经是某个类层次的一部分,所以就不能再按这种机制创建线程。虽然在同一个类中可以实现任意数量的接口,但 Java 编程语言只允许一个类有一个父类。同时,某些程序员避免从 Thread 类导出,因为它强加了类层次。对于这种情况,就要 runnable 接口。Runnable 接口只有一个方法,所以更加安全。不会产生恶意的更改。
Runnable 接口
此接口只有一个函数,run(),此函数必须由实现了此接口的类实现。但是,就运行这个类而论,其语义与前一个示例稍有不同。我们可以用 runnable 接口改写前一个示例。(不同的部分用蓝色表示。)
创建两个新线程而不强加类层次
import java.util.*;
class TimePrinter implements Runnable {
int pauseTime;
String name;
public TimePrinter(int x, String n) {
pauseTime = x;
name = n;
}
public void run() {
while(true) {
try {
System.out.println(name + ":" + new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);
} catch(Exception e) {
System.out.println(e);
}
}
}
static public void main(String args[]) {
Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy"));
t1.start();
Thread t2 = new Thread(new TimePrinter(3000, "Slow Guy"));
t2.start();
}
}
请注意,当使用 runnable 接口时,您不能直接创建所需类的对象并运行它;必须从 Thread 类的一个实例内部运行它。许多程序员更喜欢 runnable 接口,因为从 Thread 类继承会强加类层次。
相关内容目录:
http://www.cnblogs.com/hoojo/archive/2011/05/05/2038141.html
最新技术文章: