Android_对话框(新手要看)

普通对话框


//new一个对话框  参数为上下文
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

//确认按钮
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(MainActivity.this, "确认", Toast.LENGTH_SHORT).show();
    }
});
//取消
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
    }
});

//不写这一步 有的版本会报错
AlertDialog alertDialog = builder.create();
//展示
alertDialog.show();

日期对话框

//先建立一个Canlendar,方便获取时间
Calendar instance = Calendar.getInstance();

new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        Toast.makeText(MainActivity.this, year+"年"+(month+1)+"月"+dayOfMonth+"日", Toast.LENGTH_SHORT).show();
    }
},instance.get(Calendar.YEAR),instance.get(Calendar.MONTH),instance.get(Calendar.DAY_OF_MONTH)).show();
/**
 * 最后要show,三个分别代表年月日
 */

时间对话框

//先建立一个Canlendar,方便获取时间
Calendar instance = Calendar.getInstance();

new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        Toast.makeText(MainActivity.this, hourOfDay+":"+minute, Toast.LENGTH_SHORT).show();
    }
},instance.get(Calendar.HOUR),instance.get(Calendar.MINUTE),true).show();
/**
 * instance.get(Calendar.HOUR),instance.get(Calendar.MINUTE),true).show()
 * 分别代表 时 分 最后是是否是24小时进制
 * 
 */

进度条对话框

 //new一个ProgressDialog
 final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
 //设置格式
 //有两个属性 圆形(ProgressDialog.STYLE_SPINNER)跟进度条(ProgressDialog.STYLE_HORIZONTAL)
 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置对话标头
 progressDialog.setTitle("加载中");
 //设置属性  属性不止这几个
 progressDialog.setMessage("赚圈中");
 //设置长度
 progressDialog.setMax(100);
 //展示
 progressDialog.show();

 //计时器
 final Timer timer = new Timer();
 timer.schedule(new TimerTask() {
     int n=0;
     @Override
     public void run() {
         n=n+25;
         progressDialog.setProgress(n);
         if(n==100){
             //执行完之后记得关闭
             timer.cancel();
             progressDialog.dismiss();
         }
     }

 },0,1000);
 /**
  * 最后的两个属性 第一个是延迟 第二个是多久执行一次
  */

圆形对话框

与进度条一样,把stye改了就可以

自定义对话框

先建立一个layout.xml,里面是要求你的自定义布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/lay_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></TextView>
    <Button
        android:id="@+id/lay_button"
        android:text="按钮"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></Button>
    <ImageView
        android:id="@+id/lay_img"
        android:src="@mipmap/ic_launcher"
        android:layout_width="300dp"
        android:layout_height="300dp"></ImageView>
</LinearLayout>
在创建一个bean类 里面继承Dialog类,里面set get方法让activity里面传值
package com.example.day1;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;

public class Mylayput extends Dialog {
    private TextView layText;
    private Button layButton;
    private ImageView layImg;

    public String getLayTextstr() {
        return layTextstr;
    }

    public void setLayTextstr(String layTextstr) {
        this.layTextstr = layTextstr;
    }

    public String getLayButtonstr() {
        return layButtonstr;
    }

    public void setLayButtonstr(String layButtonstr) {
        this.layButtonstr = layButtonstr;
    }

    public String getLayImgstr() {
        return layImgstr;
    }

    public void setLayImgstr(String layImgstr) {
        this.layImgstr = layImgstr;
    }

    /**
     * 实行set  get 方法  定义String类型 方便接收
     * @param context
     */
    private String layTextstr;
    private String layButtonstr;
    private String layImgstr;


    public Mylayput(@NonNull Context context) {
        super(context);
    }
    /**
     *1.继承Dialog
     * 2.构造方法
     * 3.自己重写onCreate
     * 4.链接自定义的layout
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        //自定义改变值在Activity
        layText = (TextView) findViewById(R.id.lay_text);
        layButton = (Button) findViewById(R.id.lay_button);
        layImg = (ImageView) findViewById(R.id.lay_img);

        if(layTextstr!=null){
            layText.setText(layTextstr);
        }
        if(layButtonstr!=null){
            layButton.setText(layButtonstr);
        }
        //点击时间出发前台
        layButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myOnclick.show();
            }
        });
    }

    /**
     *  按钮的自定义点击事件
     *  定义接口
     *  实现set   get方法
     *
     */

    public MyOnclick getMyOnclick() {
        return myOnclick;
    }

    public void setMyOnclick(MyOnclick myOnclick) {
        this.myOnclick = myOnclick;
    }

    MyOnclick myOnclick;
    public interface MyOnclick{
        void show();
    }

}
Activity里面传值的操作
package com.example.day1;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void Onclick(View view) {

        Mylayput mylayput = new Mylayput(MainActivity.this);

        mylayput.setLayTextstr("这是自定义文本语句");
        mylayput.setLayButtonstr("这是自定义按钮的文本语句");

        mylayput.setMyOnclick(new Mylayput.MyOnclick() {
            @Override
            public void show() {
                Toast.makeText(MainActivity.this, "这是按钮的接口点击事件", Toast.LENGTH_SHORT).show();
            }
        });

        mylayput.show();

    }
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值