安卓简单实现自定义对话框

如果安卓自带的对话框不能满足你的需求,而你又迫切需要一个炫酷(哈哈,夸张一下,就是可以加缩放,平移等动画)的自定义对话框,可以看看这篇博客,大神可以绕过。。

先上图

安卓简单实现自定义对话框_第1张图片

对话框布局代码dialog_test.xml




    
        
    

    


    

        


        


            
            
            
            

        

    

    

    

        

用到的CircleImageView  是一个开源项目,他可以轻松实现图片圆形化,在gradle 里添加依赖

compile 'de.hdodenhof:circleimageview:2.1.0'  就可以使用。然后就是在线性布局,相对布局,其它的也可以,自己可以自由发挥。

btn_bg.xml  用selector 来实现点击的颜色变换



        
        

写一个显示对话框的方法

    /**
     * 弹出对话框,让用户决定加入与否
     */
    public void showDialog(){
        final Dialog dialog = new Dialog(MainActivity.this);
        //去掉title
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.show();
        Window window = dialog.getWindow();
        // 设置布局
        window.setContentView(R.layout.dialog_test);

        // 设置宽高
        window.setLayout(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT);
        // 设置弹出的动画效果
        window.setWindowAnimations(R.style.AnimScale);
        window.setGravity(Gravity.CENTER);

        ImageView img = (ImageView)window.findViewById(R.id.meeting_img_dialog);
        TextView topic = (TextView)window.findViewById(R.id.meeting_name_dialog);
        TextView t = (TextView)window.findViewById(R.id.meeting_time_dialog);
        TextView site = (TextView)window.findViewById(R.id.meeting_site_dialog);
        TextView creator = (TextView)window.findViewById(R.id.meeting_creator_dialog);

        Button cancel_btn = (Button) window.findViewById(R.id.cancel_dialog);
        Button join_btn = (Button) window.findViewById(R.id.join_dialog);

        cancel_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this,"不了",Toast.LENGTH_SHORT).show();
                dialog.cancel();
            }
        });
        join_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this,"加入",Toast.LENGTH_SHORT).show();
                dialog.cancel();
            }
        });
    }

通过来为对话框添加一个缩放的动画window.setWindowAnimations(R.style.AnimScale);

需要注意的是Button cancel_btn = (Button) window.findViewById(R.id.cancel_dialog);     不要忘加window  控件的引用要依托在一个View 上的。就一个简单的Button button = (Button)findViewById(R.id.btn); 也是可以这样写的Button button = (Button)this.findViewById(R.id.btn); 只不过这个this 通常是省略掉的。Window 虽然不同于View ,但是在这里有类似的作用。忘记加window 会报错,是找不到对应的View 的。

在styles.xml 里加入

    

scale_in.xml 代码



    

scale_out.xml 代码



    


你可能感兴趣的:(安卓简单实现自定义对话框)