您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页Android中的对话框的使用技巧

Android中的对话框的使用技巧

来源:叨叨游戏网
Android软件开发之盘点所有Dialog对话框大合集

对话框大合集

今天我用自己写的一个Demo 和大家详细介绍一个Android中的对话框的使用技巧。

1.确定取消对话框

对话框中有2个按钮 通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件。

我们使用AlerDialog 创建对话框

1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);

使用builder设置对话框的title button icon 等等

1. builder.setIcon(R.drawable.icon); 2. builder.setTitle(\"你确定要离开吗?\");

3. builder.setPositiveButton(\"确定\4. public void onClick(DialogInterface dialog, int whichButton) { 5. //这里添加点击确定后的逻辑 6. showDialog(\"你选择了确定\"); 7. } 8. });

9. builder.setNegativeButton(\"取消\10. public void onClick(DialogInterface dialog, int whichButton) {

11. //这里添加点击确定后的逻辑 12. showDialog(\"你选择了取消\"); 13. } 14. });

15. builder.create().show(); 16.

这个dialog用于现实onClick后监听的内容信息

1. private void showDialog(String str) {

2. new AlertDialog.Builder(MainDialog.this) 3. .setMessage(str) 4. .show(); 5. }

2.多个按钮信息框

1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. builder.setIcon(R.drawable.icon); 3. builder.setTitle(\"投票\");

4. builder.setMessage(\"您认为什么样的内容能吸引您?\");

5. builder.setPositiveButton(\"有趣味的\6. public void onClick(DialogInterface dialog, int whichButton) { 7. showDialog(\"你选择了有趣味的\"); 8. } 9. });

10. builder.setNeutralButton(\"有思想的\11. public void onClick(DialogInterface dialog, int whichButton) { 12. showDialog(\"你选择了有思想的\"); 13. }

14. });

15. builder.setNegativeButton(\"主题强的\16. public void onClick(DialogInterface dialog, int whichButton) { 17. showDialog(\"你选择了主题强的\"); 18. } 19. });

20. builder.create().show();

3.列表框

这个数组用于列表选择

1. final String[] mItems = {\"item0\

1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. builder.setTitle(\"列表选择框\");

3. builder.setItems(mItems, new DialogInterface.OnClickListener() { 4. public void onClick(DialogInterface dialog, int which) { 5. //点击后弹出窗口选择了第几项

6. showDialog(\"你选择的id为\" + which + \" , \" + mItems[which]); 7. } 8. });

9. builder.create().show(); 10.

4.单项选择列表框

mSingleChoice 用于记录单选中的ID

1. int mSingleChoiceID = -1;

1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2.

3. mSingleChoiceID = -1;

4. builder.setIcon(R.drawable.icon); 5. builder.setTitle(\"单项选择\");

6. builder.setSingleChoiceItems(mItems, 0, new DialogInterface.OnClickListener() { 7. public void onClick(DialogInterface dialog, int whichButton) { 8. mSingleChoiceID = whichButton;

9. showDialog(\"你选择的id为\" + whichButton + \" , \" + mItems[whichButton]); 10. } 11. });

12. builder.setPositiveButton(\"确定\13. public void onClick(DialogInterface dialog, int whichButton) { 14. if(mSingleChoiceID > 0) {

15. showDialog(\"你选择的是\" + mSingleChoiceID); 16. } 17. } 18. });

19. builder.setNegativeButton(\"取消\20. public void onClick(DialogInterface dialog, int whichButton) { 21.

22. } 23. });

24. builder.create().show();

5.进度条框

点击进度条框按钮后 开启一个线程计算读取的进度 假设读取结束为 100

Progress在小于100的时候一直在线程中做循环++ 只到读取结束后,停止线程。

1. mProgressDialog = new ProgressDialog(MainDialog.this); 2. mProgressDialog.setIcon(R.drawable.icon); 3. mProgressDialog.setTitle(\"进度条窗口\");

4. mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 5. mProgressDialog.setMax(MAX_PROGRESS);

6. mProgressDialog.setButton(\"确定\7. public void onClick(DialogInterface dialog, int whichButton) { 8. //这里添加点击后的逻辑 9. } 10. });

11. mProgressDialog.setButton2(\"取消\12. public void onClick(DialogInterface dialog, int whichButton) {

13. //这里添加点击后的逻辑 14. } 15. });

16. mProgressDialog.show(); 17. new Thread(this).start(); 18.

19. public void run() { 20. int Progress = 0;

21. while(Progress < MAX_PROGRESS) { 22. try {

23. Thread.sleep(100); 24. Progress++;

25. mProgressDialog.incrementProgressBy(1); 26. } catch (InterruptedException e) { 27. // TODO Auto-generated catch block 28. e.printStackTrace(); 29. } 30. 31. } 32. 33. }

6.多项选择列表框

MultiChoiceID 用于记录多选选中的id号 存在ArrayList中 选中后 add 进ArrayList

取消选中后 remove 出ArrayList。

1. ArrayList MultiChoiceID = new ArrayList ();

1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2.

3. MultiChoiceID.clear();

4. builder.setIcon(R.drawable.icon); 5. builder.setTitle(\"多项选择\"); 6. builder.setMultiChoiceItems(mItems,

7. new boolean[]{false, false, false, false, false, false, false}, 8. new DialogInterface.OnMultiChoiceClickListener() {

9. public void onClick(DialogInterface dialog, int whichButton,

10. boolean isChecked) { 11. if(isChecked) {

12. MultiChoiceID.add(whichButton);

13. showDialog(\"你选择的id为\" + whichButton + \" , \" + mItems[whichButton]); 14. }else {

15. MultiChoiceID.remove(whichButton); 16. } 17. 18. } 19. });

20. builder.setPositiveButton(\"确定\21. public void onClick(DialogInterface dialog, int whichButton) { 22. String str = \"\";

23. int size = MultiChoiceID.size(); 24. for (int i = 0 ;i < size; i++) {

25. str+= mItems[MultiChoiceID.get(i)] + \26. }

27. showDialog(\"你选择的是\" + str); 28. } 29. });

30. builder.setNegativeButton(\"取消\31. public void onClick(DialogInterface dialog, int whichButton) { 32.

33. } 34. });

35. builder.create().show();

7.自定义布局

讲到自定义布局我就得多说一说了,为什么要多说一说呢?

其实自定义布局在Android的开发中非常重要 因为它能让开发者做出自己五彩缤纷的Activity 而不用去使用系统枯燥的界面。

自定义dialog有什么好处?

比如我们在开发过长当中 要通过介绍系统发送的一个广播弹出一个dialog . 但是dialog必需是基于activity才能呈现出来 如果没有activity 的话 程序就会崩溃。所以我们可以写一个自定义的 dialog 把它定义成一个activity 这样我们收到一条打开dialog的广播后 直接启动这个 activity 程序正常运行~~

这就是自定义dialog的好处。

注明:下面这个例子只是写了自定义dialog 没有把它单独的写在一个activity中 如果须要的话 可以自己改一下。

1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. LayoutInflater factory = LayoutInflater.from(this);

3. final View textEntryView = factory.inflate(R.layout.test, null); 4. builder.setIcon(R.drawable.icon);

5. builder.setTitle(\"自定义输入框\"); 6. builder.setView(textEntryView);

7. builder.setPositiveButton(\"确定\8. public void onClick(DialogInterface dialog, int whichButton) { 9.

10. EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName); 11. EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord);

12. showDialog(\"姓名 :\" + userName.getText().toString() + \"密码:\" +

password.getText().toString() ); 13. } 14. });

15. builder.setNegativeButton(\"取消\16. public void onClick(DialogInterface dialog, int whichButton) { 17.

18. } 19. });

20. builder.create().show();

1.

2. 7. 8. android:layout_height=\"wrap_content\" 9. android:layout_width=\"wrap_content\" 10. android:orientation=\"horizontal\" 11. android:id=\"@+id/dialogname\"> 12.

13. 15. android:id=\"@+id/tvUserName\" 16. android:text=\"姓名:\" />

17. 21. 22. 23. android:layout_height=\"wrap_content\" 24. android:layout_width=\"wrap_content\" 25. android:orientation=\"horizontal\" 26. android:id=\"@+id/dialognum\"

27. android:layout_below=\"@+id/dialogname\" 28. >

29.

33. 37.

38.

8.读取进度框

显示一个正在转圈的进度条loading

1. mProgressDialog = new ProgressDialog(this); 2. mProgressDialog.setTitle(\"读取ing\");

3. mProgressDialog.setMessage(\"正在读取中请稍候\"); 4. mProgressDialog.setIndeterminate(true); 5. mProgressDialog.setCancelable(true);

6. mProgressDialog.show();

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务