android自定义控件之Dialog详解

本文详细讲解了如何在Android中创建自定义Dialog,通过继承Dialog类并实现特定效果,展示了一个自定义Dialog的实例,并鼓励读者尝试自定义更多效果。
摘要由CSDN通过智能技术生成


       先上图:我自定义的效果,大家可以根据我的步骤定义出任何效果。

        

 一、创建自定义dialog类,继承自Dialog。

          

package com.meijianfang.customView;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;

import com.meijianfang.R;

/**
 * 项目名称:MeiJianFang
 * 类描述:
 * 创建人:cdy
 * 创建时间:2016/3/17
 * 修改人:cdy
 * 修改时间:13:04
 * 修改备注:自定义的dialog展示筛选条件
 */
public class ScreenDialog extends Dialog implements View.OnClickListener{
    private Context context;
    //声明自定义的接口
    private ClickListenerInterface clickListenerInterface;

    //实现构造方法
    public ScreenDialog(Context context){
        super(context);
        this.context = context;
    }

    public ScreenDialog(Context context, int themeResId) {
        super(context, themeResId);
    }

    protected ScreenDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }



    //自定义接口
    public interface ClickListenerInterface {
        public void click(int id);
    }
    //接口的回调方法,以供实现接口调用
    public void setOnCallbackLister(ClickListenerInterface clickListenerInterface){
        this.clickListenerInterface = clickListenerInterface;
    }
    //重写onCreate方法,
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //去掉标题栏,注意此处的去掉标题栏,并不是去掉当前activity的标题栏,而是去掉自定义的dialog的标题
        //如果不去掉现实的dialog会有一个空白的头部。由此可见我们的dialog和activity是如此的相像。
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        init();
    }

    /**
     * 初始化自定义的布局界面,使用inflater将自定义的布局压进我们的当前dialog窗体。
     */
    public void init() {
        LayoutInflater inflater = LayoutInflater.from(context);
        //自定义布局转换成view
        View view = inflater.inflate(R.layout.layout_screen_dialog, null);
        //设置到当前的窗体
        setContentView(view);
        //拿到自定义布局的各个控件
        LinearLayout history_screen_quanbu = (LinearLayout)view.findViewById(R.id.history_screen_quanbu);
        LinearLayout history_screen_week = (LinearLayout)view.findViewById(R.id.history_screen_week);
        LinearLayout history_screen_month = (LinearLayout)view.findViewById(R.id.history_screen_month);
        LinearLayout history_screen_halfyear = (LinearLayout)view.findViewById(R.id.history_screen_halfyear);
        LinearLayout history_screen_yeay = (LinearLayout)view.findViewById(R.id.history_screen_yeay);
        //设置点击事件
        history_screen_quanbu.setOnClickListener(this);
        history_screen_week.setOnClickListener(this);
        history_screen_month.setOnClickListener(this);
        history_screen_halfyear.setOnClickListener(this);
        history_screen_yeay.setOnClickListener(this);
        Window dialogWindow = getWindow();
        //设置圆角样式
        dialogWindow.setBackgroundDrawableResource(R.drawable.dialog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值