美文网首页
对话框Compontent05-09

对话框Compontent05-09

作者: Summer_27d1 | 来源:发表于2018-05-09 18:16 被阅读0次

    ···

    //测试对话框
    public class DialogActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    
    
    }
    //显示一般AlertDialog
    public void button1(View v){
        //方法的链式调用
        new AlertDialog.Builder(this)
        .setTitle("删除数据")//设置标题
        .setMessage("你确定删除数据吗?")//设置提示具体文字
        .setPositiveButton("删除", new DialogInterface.OnClickListener() {//2.监听器
            //正面按钮    一般确定操作
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogActivity.this, "删除数据", Toast.LENGTH_SHORT).show();
            
            }//反面按钮    一般取消操作
        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogActivity.this, "取消删除数据", Toast.LENGTH_SHORT).show();
                
                
            }
        }).show();//显示对话框
        
        
    }
    public void button2(View v){
        final String[] items={"红","蓝","绿","灰"};
        new AlertDialog.Builder(this)
        .setTitle("指定背景颜色")//标题          
        //设置单选列表(1.列表项内容 2.当前选中项   3.监听器)
        .setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //which就是选择的下标
    Toast.makeText(DialogActivity.this, items[which], Toast.LENGTH_SHORT).show();
                //对话框消失
                 dialog.dismiss();//移除        AlertDialog方法 多态
            }
        })
        .show();//显示对话框
    }
    //显示自定义AlertDialog
    public void button3(View v){
        //动态加载布局文件   得到对应的View对象
        View view = View.inflate(this, R.layout.dialog_view, null);
        //1.view  的 真实类型是什么?
        //     布局文件跟标签的类型   ,包含子View对象
        //2.如何得到一个独立的View的子View?
        //    findViewById是在setContentView()加载布局当中查找
        
        final EditText nameET=(EditText)view.findViewById(R.id.et_dialog_name);
        EditText pwdET=(EditText)view.findViewById(R.id.et_dialog_pwd);
        
        new AlertDialog.Builder(this)
        .setView(view)//设置自定义布局
        .setNegativeButton("取消", null)
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //读取用户名和密码
                String username=nameET.getText().toString().trim();
                String pwd=nameET.getText().toString().trim();
                
                //提示
                Toast.makeText(DialogActivity.this, username+" : "+pwd, Toast.LENGTH_SHORT).show();
                
            }
        }).show();
        
        
    }//显示圆形进度progressDialog
    public void button4(View v) throws InterruptedException{//回调方法都在主线程
        final ProgressDialog dialog = ProgressDialog.show(this, "数据加载", "数据加载中...");
        //模拟做一个长时间工作      耗时不能在主线程完成  启动一个分线程
        new Thread(){
            public void run(){
                
                for (int i = 0; i < 20; i++) {//分线程
                    //休息一会
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                //移除Dialog
                dialog.dismiss();//方法在分线程执行,但内部使用Handler实现主线程移除Dialog
            //不能再分线程里面直接更新UI
            runOnUiThread(new Runnable() {
                
                @Override
                public void run() {//在主线程执行
                    Toast.makeText(DialogActivity.this, "加载完成~", Toast.LENGTH_SHORT).show();
                }
            });
            };
        }.start();
    }
    //显示水平进度progerssDialog
    public void button5(View v){
        //1.创建一个Dialog对象
        final ProgressDialog pd = new ProgressDialog(this);
        //2.设置样式 水平样式
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //3.显示
        pd.show();
        //4.启动分线程加载数据,显示进度  当加载完成后移除Dialog
        new Thread(new Runnable() {
    
            @Override
            public void run() {//分线程执行的代码
                //耗时的操作
                int count=20;
                //设置最大进度
                pd.setMax(count);
                for (int i = 0; i < count; i++) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    pd.setProgress(pd.getProgress()+1);
                }
                //移除
                //dp.dismiss();
            }
        }).start();
        
    }
    //显示日期对话框DatePickerDialog
    public void button6(View v){
        //1.创建日历对话框
        Calendar calendar =Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int dayofMonth = calendar.get(Calendar.DAY_OF_MONTH);
        Log.e("ATG", year+" -"+month+" - "+dayofMonth);
        //创建日期对话框  1.上下文2. 点完按钮之后的操作3.年4 .月5. 日
        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                Log.e("ATG", year+" -"+monthOfYear+" - "+dayOfMonth);   
            }
        },year,month,dayofMonth).show();
            
        
    }
    
    //显示时间对话框显示TimePickerDialog
    public void button7(View v){
        //1.创建日历对话框
        Calendar calendar =Calendar.getInstance();
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int dayofMonth = calendar.get(Calendar.DAY_OF_MONTH);
        Log.e("ATG", hour+" -"+minute+" - "+dayofMonth);
        //创建时间对话框  1.上下文2. 点完按钮之后的操作3.小时4 .分钟5. 是否使用24小时
        new TimePickerDialog(this, new  TimePickerDialog.OnTimeSetListener() {
            
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Log.e("ATG", hourOfDay+" -"+minute+" - "+minute);
            }
        },hour,minute,true).show();
            
    
        
    }
    

    }

    ···
    ···

    测试界面

    1.测试AlertDialog

    2.测试ProgressDialog

    3.测试DatePickDialog

           TimePickDialog
    

    AlertDialog

    image

    自定义AlertDialog

      DialogBuilder:  
    
                          setView :设置Dialog中的视图
    

    View :View inflate() 动态加载布局得到View

    image

    ProgressDialog:带进度Dialog

    启动分线程:

    方式一:
    
          new Thread(){
    

    public void run(){

    //代码

    }

    }.start();

    方式二:

    new Thread(new Runnable(){

    public void run(){

    //代码

    }

    }).start();

    DateDialog: 日期Dialog

    TimeDialog:时间Dialog

    ···


    image.png

    ···
    xml中
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示一般AlertDialog" 
      android:onClick="button1"
        />
    
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示单选列表AlertDialog" 
        android:onClick="button2"
        />
    
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示自定义AlertDialog" 
        android:onClick="button3"
        />
    
    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:text="显示圆形进度progressDialog"
        android:onClick="button4"
         />
    
    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示水平进度progerssDialog"
        android:onClick="button5"
         />
    
    <Button
        android:id="@+id/button6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:text="显示DatePickerDialog" 
        android:onClick="button6"
        />
    
    <Button
        android:id="@+id/button7"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示TimePickerDialog"
        android:onClick="button7"
        
         />
    

    </LinearLayout>
    ···
    dialog_view .xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
    android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_tupain"
        android:scaleType="fitXY"
         />
    

    <EditText
    android:id="@+id/et_dialog_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="用户名"

    />
    

    <EditText
    android:id="@+id/et_dialog_pwd"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="密码"
    android:inputType="textPassword"

    />
    

    </LinearLayout>

    ···


    image.png image.png image.png

    相关文章

      网友评论

          本文标题:对话框Compontent05-09

          本文链接:https://www.haomeiwen.com/subject/ypsorftx.html