Android 自定义Dialog 的使用

单个Dialog 自定义布局 ,这个只能算半自定义,就是一个弹框布局插入到AlertDialog 中 使用setView 即可

代码如下

AlertDialog.Builder builder = new AlertDialog.Builder(InflateActivity.this);
                View view = getLayoutInflater().inflate(R.layout.bottom__pop_item, null);
                builder.setView(view);
                final AlertDialog dialog = builder.create();
                dialog.show();
                TextView textView = view.findViewById(R.id.photo);
                textView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                        Toast.makeText(InflateActivity.this, "点击了", Toast.LENGTH_SHORT).show();
                    }
                });
            }

监听事件也添加了, 布局更具自己的需求添加即可 。。。。。。。。。

假如是写一个 android 中间弹框,使用上面的代码完全没有问题。。

自定义弹框 

Android 自定义Dialog 的使用_第1张图片

1 先创建一个Dialog 类


public class CommDialog extends Dialog implements View.OnClickListener {

    private Context context;//上下文
    private int layoutResID;//布局文件id
    private int[] listenedItem;//监听的控件id

    public CommDialog(Context context, int layoutResID, int[] listenedItem) {
        super(context);
        this.context = context;
        this.layoutResID = layoutResID;
        this.listenedItem = listenedItem;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Window dialogWindow = getWindow();
        dialogWindow.setGravity(Gravity.CENTER);
        setContentView(layoutResID);
        WindowManager windowManager = ((Activity) context).getWindowManager();
        Display display = windowManager.getDefaultDisplay();
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.width = display.getWidth() * 4 / 5;// 设置dialog宽度为屏幕的4/5
        getWindow().setAttributes(lp);
        setCanceledOnTouchOutside(true);//点击外部Dialog消失
        //遍历控件id添加点击注册
        for (int id : listenedItem){
            findViewById(id).setOnClickListener(this);
        }
    }

    OnClickListener listener;

    public void setClickListener(OnClickListener listener) {
        this.listener = listener;
    }

    public interface OnClickListener {
        void OnItemClick(CommDialog dialog, View view);
    }


    @Override
    public void onClick(View v) {
        dismiss();
        listener.OnItemClick(this,v);
    }

}

然后在Activity 中使用这个CommDialog的方法

public class InflateActivity extends AppCompatActivity {
    private TextView textView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inflate_activity_layout);
        textView = findViewById(R.id.txt);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CommDialog dialog = new CommDialog(InflateActivity.this, R.layout.bottom__pop_item, new int[]{R.id.photo, R.id.camera, R.id.cancel});
                dialog.setClickListener(new CommDialog.OnClickListener() {
                    @Override
                    public void OnItemClick(CommDialog dialog, View view) {
                        switch (view.getId()) {
                            case R.id.photo:
                                Toast.makeText(InflateActivity.this, "11111", Toast.LENGTH_SHORT).show();
                                break;
                            case R.id.camera:
                                Toast.makeText(InflateActivity.this, "22222", Toast.LENGTH_SHORT).show();
                                break;
                            case R.id.cancel:
                                Toast.makeText(InflateActivity.this, "33333", Toast.LENGTH_SHORT).show();
                                break;
                        }
                    }
                });
                dialog.show();
            }
        });

    }
}

自定义呢就是 样式就自己随意写了, 需要注意的就是id的次数 使用几次,记得写几次呢。。。。。。。。

这里自定义Dialog 就结束了,。。。

下篇文章将介绍android 分屏播放知识。。

你可能感兴趣的:(Android,知识点记录)