当前位置: 编程技术>移动开发
本页文章导读:
▪通报示例1 通知示例1
Java代码
public class MainActivity extends Activity {
private Button send, cancel;
private Notification n;
private NotificationManager mn;
Vibrator vibrator;
@Override
public void onCreate(Bundle savedInstanceState.........
▪ 并发访问事例 并发访问例子
假设在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data类,同时,将有多个访问类,专门用于在同一时刻访问这同.........
▪ AlertDialog 运用 扩展 AlertDialog 使用 扩展
AlertDialog
[功能]
也是一种Dialog
[原理]
1. AlertDialog 本身并没有构造函数 即 不可以通过 new AlertDialog(...) 来初始化 而只能通过 AlertDialog.Builder
2. 而 AlertDialog.Builder 比.........
[1]通报示例1
来源: 互联网 发布时间: 2014-02-18
通知示例1
Java代码
public class MainActivity extends Activity { private Button send, cancel; private Notification n; private NotificationManager mn; Vibrator vibrator;@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);send = (Button) findViewById(R.id.btn1); cancel = (Button) findViewById(R.id.btn2);String service = NOTIFICATION_SERVICE; mn = (NotificationManager) getSystemService(service);n = new Notification(); int icon = n.icon = R.drawable.ss;String tickerText = "您有新的消息,请查收"; n.flags =Notification.FLAG_ONGOING_EVENT;//如果添加这一句,则用户删除不了,出现在正在运行中,不加就等于是一个通知, long when = System.currentTimeMillis(); n.icon = icon; n.tickerText = tickerText; n.when = when;send.setOnClickListener(sends); cancel.setOnClickListener(cancels); }private OnClickListener sends = new OnClickListener() {@Override public void onClick(View arg0) {// vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); // long[] pattern = { 800, 50, 400, 30 }; // 根据指定的模式进行震动 // // //第一个参数:该数组中第一个元素是等待多长的时间才启动震动, // // //之后将会是开启和关闭震动的持续时间,单位为毫秒 // // //第二个参数:重复震动时在pattern中的索引,如果设置为-1则表示不重复震动<P>//vVi.vibrate( // // 500 ); // 震动0.5 秒 // // //启动震动,并持续指定的时间 // vibrator.vibrate(pattern, 2);// 根据指定的模式进行震动 // //第一个参数:该数组中第一个元素是等待多长的时间才启动震动, // //之后将会是开启和关闭震动的持续时间,单位为毫秒 // //第二个参数:重复震动时在pattern中的索引,如果设置为-1则表示不重复震动<P>//vVi.vibrate( // 500 ); // 震动0.5 秒 // //启动震动,并持续指定的时间 System.out.println("11111111111111"); // vibrator.vibrate(pattern, 2); // -1不重复,非-1为从pattern的指定下标开始重复 Intent intent = new Intent(MainActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pi = PendingIntent.getActivity(MainActivity.this,R.string.app_name, intent, PendingIntent.FLAG_UPDATE_CURRENT); n.setLatestEventInfo(MainActivity.this, "有急事", "请您马上到办公司开会", pi); mn.notify(R.string.app_name, n);} };private OnClickListener cancels = new OnClickListener() {@Override public void onClick(View arg0) { mn.cancel(R.string.app_name); } };}
[2] 并发访问事例
来源: 互联网 发布时间: 2014-02-18
并发访问例子
假设在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data类,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。
为了完成上述并发访问同一资源的功能,需要引入锁(Lock)的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁(Locked),用完后就立即解锁(unLocked),再供其它访问类访问。
对访问共享数据的类创建一个基类,所有的数据访问类均继承这个基类。
多个访问类同时访问一个共享数据对象时,每个访问类在访问这个数据对象时,需要将数据对象上锁,访问完成后,再实行解锁,供其它并发线程访问
假设在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data类,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。
为了完成上述并发访问同一资源的功能,需要引入锁(Lock)的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁(Locked),用完后就立即解锁(unLocked),再供其它访问类访问。
对访问共享数据的类创建一个基类,所有的数据访问类均继承这个基类。
多个访问类同时访问一个共享数据对象时,每个访问类在访问这个数据对象时,需要将数据对象上锁,访问完成后,再实行解锁,供其它并发线程访问
[3] AlertDialog 运用 扩展
来源: 互联网 发布时间: 2014-02-18
AlertDialog 使用 扩展
ab = new AlertDialog.Builder(this);
ab.setTitle("HelloAlert").setMessage("Warning: its Alert Demo!").setIcon(R.drawable.robot);
aDialog = ab.create();
findViewById(R.id.button).setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
aDialog.show();
}
});
aDialog.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(DialogInterface arg0, int arg1, KeyEvent arg2) {
// TODO Auto-generated method stub
aDialog.dismiss();
return true;
}
});
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="/blog_article/@drawable/robot/index.html" />
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HelloAlert!"
/>
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dip"
/>
</LinearLayout>
</LinearLayout>
view = this.getLayoutInflater().inflate(R.layout.hello, null);
ab.setView(view);
aDialog = ab.create();
TextView title = (TextView) view.findViewById(R.id.title);
title.setTextSize(20);
title.setTextColor(Color.RED);
title.setText("HelloAlert");
TextView message = (TextView) view.findViewById(R.id.message);
message.setText("Warning: it's Alert Demo!");
findViewById(R.id.button).setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
aDialog.show();
}
});
view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
aDialog.dismiss();
}
});
AlertDialog
[功能]
也是一种Dialog
[原理]
1. AlertDialog 本身并没有构造函数 即 不可以通过 new AlertDialog(...) 来初始化 而只能通过 AlertDialog.Builder
2. 而 AlertDialog.Builder 比较像是AlertDialog的构造器 用于接收各种和 AlertDialog 有关的参数 然后通过 create() 来创建目标 AlertDialog
[代码 步骤]
1. 定义 AlertDialog.Builder 实例 并接受一些参数 如:图片 标题 正文
Java代码
ab = new AlertDialog.Builder(this);
Java代码
ab.setTitle("HelloAlert").setMessage("Warning: its Alert Demo!").setIcon(R.drawable.robot);
2. 根据AlertDialog.Builder 创建 相应的 AlertDialog
Java代码
aDialog = ab.create();
3. 弹出 AlertDialog
Java代码
findViewById(R.id.button).setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub aDialog.show(); } });
4. 取消 AlertDialog
写道
因为该AlertDialog 所采用的布局是系统的 其只接受Text 不接受Button 但是发现可以在AlertDialog 上面注册按键监听 即AlertDialog.setOnKeyListener()
不过因为该监听器只负责监听按键事件 而鼠标点击是不管的 所以请点击任意按键关闭之
Java代码
aDialog.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(DialogInterface arg0, int arg1, KeyEvent arg2) { // TODO Auto-generated method stub aDialog.dismiss(); return true; } });
* emulator 运行截图:
5. 以上所采用的都是AlertDialog 系统默认的布局 现在说自定义布局的情况 并添加一个用于取消AlertDialog 的 Button
* 定义其布局 hello.main
Xml代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/robot/index.html" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="HelloAlert!" /> <TextView android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dip" /> </LinearLayout> </LinearLayout>
* 通过LayoutInflater 得到上面 hello.xml 布局的 View view
Java代码
view = this.getLayoutInflater().inflate(R.layout.hello, null);
* 指定AlertDialog.Builder 所需的布局 并返回目标AlertDialog
Java代码
ab.setView(view); aDialog = ab.create();
* 通过 view.findViewById() 得到 目标View 然后设置其内容 如:
Java代码
TextView title = (TextView) view.findViewById(R.id.title); title.setTextSize(20); title.setTextColor(Color.RED); title.setText("HelloAlert"); TextView message = (TextView) view.findViewById(R.id.message); message.setText("Warning: it's Alert Demo!");
* 弹出 AlertDialog
Java代码
findViewById(R.id.button).setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub aDialog.show(); } });
* 取消 AlertDialog
写道
在整个View 上注册按键监听器 关闭AlertDialog
Java代码
view.setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub aDialog.dismiss(); } });
* emulator 运行截图:
最新技术文章: