andrid实践项目四-对话框Dialog的各种用法

2024-03-14 09:58

本文主要是介绍andrid实践项目四-对话框Dialog的各种用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来个简单的列子熟悉dialog是如何创建使用的

老规矩 先看dailog的继承关系

java.lang.Objectandroid.app.Dialog

dialog是直接继承object 与view没有半毛钱关系。
一。先来看看最常见的dialog,也就是AlertDialog(警告框),alertdialog是非阻塞式的。

public class AlertDialogtest extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dailog);Button btn1=(Button) findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDialog();}});}public void Dialog(){AlertDialog.Builder bulider = new AlertDialog.Builder(this);bulider.setIcon(R.drawable.ic_launcher);bulider.setMessage("你什么时候回寝室");bulider.setTitle("标准对话框");bulider.setCancelable(false);// 设置是否可以取消对话框//bulider.setPositiveButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});// 设置及其按钮bulider.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});AlertDialog dialog = bulider.create();dialog.show();}}

运行截图
代码逻辑还是很清楚的,设置button的点击事件。然后再写个dialog方法构建一个alretdialog。构建dialog时一定要引用builder

AlertDialog.Builder bulider = new AlertDialog.Builder(this);
builder.set~***
builder.set~***//这几句话都是用来设置dialog的属性
builder.set~***
然后用builder.creat();和builder.show();将builder显示出来。

再来设置一个类似listview 风格的alertdialog

运行效果如下所示
代码如下

public class AlertDialogtest2 extends Activity {private TextView text1;private TextView text2;private String[] data = { "苹果1", "苹果2", "苹果3", };private String[] datadetails = { "富含维生素c1", "富含维生素c2", "富含维生素c3", };private int NUM = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dailog2);text1 = (TextView) findViewById(R.id.mych);text2 = (TextView) findViewById(R.id.mytext);Button btn1 = (Button) findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDialog();}});}public void Dialog() {Dialog dialog = new AlertDialog.Builder(AlertDialogtest2.this).setIcon(R.drawable.ic_launcher).setTitle("请选择你喜欢吃的水果?").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {text1.setText(data[NUM]);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).setSingleChoiceItems(AlertDialogtest2.this.data, 0, new DialogInterface.OnClickListener() {// setSingleChoiceItems()方法@Overridepublic void onClick(DialogInterface dialog, int which) {text2.setText(datadetails[which]);NUM = which; // 保存选项的索引}}).create();dialog.show();}}

相比之前的标准框多了一个setSingleChoiceItems()方法,其中which指定了当前选择的是那一项。

DIY登录框和LayoutInflater

先写布局文件xml 只需要一个按钮就行了
然后写要引入的弹出框的布局文件login.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.demotest.MainActivity" ><LinearLayout
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="账号:"/><EditText
            android:id="@+id/edtlogin"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1000"android:hint="输入账号" /></LinearLayout><LinearLayout
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:" /><EditText
            android:id="@+id/edtpassword"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1000"android:hint="输入密码" /></LinearLayout></LinearLayout>``````

在builder alertdialog 的时候引入一句就可以导入登录布局了
.setView(R.layout.login)

然后验证登陆的代码如下

public class AlertDialogtest3 extends Activity {private EditText edt1;private EditText edt2;private String string_userString;private String string_passwdString;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dailog3);Button btn1 = (Button) findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener{  @Override  public void onClick(View v) {  LayoutInflater layoutInflater=LayoutInflater.from(AlertDialogtest3.this);//获得layoutInflater对象  View view=layoutInflater.from(AlertDialogtest3.this).inflate(R.layout.login, null);//获得view对象  EditText edit_user=(EditText)view.findViewById(R.id.edtlogin);//获取控件  EditText edit_passwd=(EditText)view.findViewById(R.id.edtpassword);  //拿到输入的账号密码      string_userString=edit_user.getText().toString();  string_passwdString=edit_passwd.getText().toString();  Dialog dialog=new AlertDialog.Builder(AlertDialogtest3.this).setTitle("用户登录").setView(view).setPositiveButton("登录", new DialogInterface.OnClickListener() {   public void onClick(DialogInterface dialog, int which) {  if(string_userString.equals("admin")&&string_passwdString.equals("4011")){  Toast.makeText(AlertDialogtest3.this, "登录成功", Toast.LENGTH_SHORT).show();  }else{  Toast.makeText(AlertDialogtest3.this, "登录失败", Toast.LENGTH_SHORT).show();  }        }  }).setNegativeButton("取消", new DialogInterface.OnClickListener() {      @Override  public void onClick(DialogInterface dialog, int which) {  // 取消按钮事件   }  }).create();  dialog.show();  }         }   

拿到输入的账号密码 ,那是个坑。有兴趣的自己把gettext()换个位置试试……
这里写图片描述

这篇关于andrid实践项目四-对话框Dialog的各种用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/808041

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分