android自定义dialog,添加了selector和shape混合使用

来源:互联网 发布:c 棋牌游戏源码 编辑:程序博客网 时间:2024/06/01 09:35

dialog基类

public abstract class BaseDialog extends Dialog {    public BaseDialog(Context context) {        super(context, R.style.FullScreenDialog);        onCreate();    }    /** 创建 */    protected abstract void onCreate();    /** 添加Viwe 宽高度参数(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)     * @param layoutResID     * @param layoutWidth     * @param layoutHeight */    public void setContentView(int layoutResID, int layoutWidth, int layoutHeight) {        setContentView(layoutResID, layoutWidth, layoutHeight, true);    }    /** 添加Viwe 宽高度参数(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)     * @param layoutResID viewID     * @param layoutWidth 宽度     * @param layoutHeight 高度     * @param cancel false is click框外 dismiss */    public void setContentView(int layoutResID, int layoutWidth, int layoutHeight, boolean cancel) {        setCanceledOnTouchOutside(cancel);        setContentView(layoutResID);        getWindow().setLayout(layoutWidth, layoutHeight);    }    /** 添加Viwe 宽高度参数(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)     * @param layoutResID     * @param layoutWidth     * @param layoutHeight */    public void setContentView(View layoutView, int layoutWidth, int layoutHeight) {        setContentView(layoutView, layoutWidth, layoutHeight, true);    }    /** 添加Viwe 宽高度参数(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)     * @param layoutView view     * @param layoutWidth 宽度     * @param layoutHeight 高度     * @param cancel false is click框外 dismiss */    public void setContentView(View layoutView, int layoutWidth, int layoutHeight, boolean cancel) {        setCanceledOnTouchOutside(cancel);        setContentView(layoutView);        getWindow().setLayout(layoutWidth, layoutHeight);    }    /** 添加进出场动画     * @param anumStyleResID */    protected void setAnimations(int anumStyleResID) {        getWindow().setWindowAnimations(anumStyleResID);    }    /** 添加相对位置     * @param gravity */    protected void setGravity(int gravity) {        getWindow().setGravity(gravity);    }}//基础dialog基类public class UnitSettingDialog extends BaseDialog{    private Button settingKmBut;    private Button settingMilesBut;    private TextView settingUnitTitle;    private UnitSettingListener unitSettingListener;//按钮事件接口    public interface UnitSettingListener{        void leftButListener(View v,CharSequence butText);        void rightButListener(View v,CharSequence butText);    }    public void unitSetListener(UnitSettingListener unitSettingListener){        this.unitSettingListener = unitSettingListener;    }    public UnitSettingDialog(Context context) {        super(context);    }    @Override    protected void onCreate() {        setContentView(R.layout.unit_setting_dialog, DUtils.toPx(250), DUtils.toPx(160));        setGravity(Gravity.CENTER);        initView();        setListener();    }    private void initView() {        settingUnitTitle = (TextView) findViewById(R.id.setting_unit_title);        settingKmBut = (Button) findViewById(R.id.setting_km);        settingMilesBut = (Button) findViewById(R.id.setting_miles);    }    public void settingUnitTitle(CharSequence text){        settingUnitTitle.setText(text);    }    private void setListener() {        settingKmBut.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                unitSettingListener.leftButListener(v,settingKmBut.getText());            }        });        settingMilesBut.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                unitSettingListener.rightButListener(v,settingMilesBut.getText());            }        });    }}//R.layout.unit_setting_dialog//dialog引用的布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="#00000000" >    <LinearLayout        android:layout_width="250dp"        android:layout_height="160dp"        android:layout_centerInParent="true"        android:background="@drawable/bg_hint_dialog"        android:orientation="vertical" >        <TextView            android:id="@+id/setting_unit_title"            android:layout_width="match_parent"            android:layout_height="100dp"            android:gravity="center"            android:text="" />        <View            android:layout_width="match_parent"            android:layout_height="0.5dp"            android:background="#dbdbdb" />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent" >            <Button                android:id="@+id/setting_km"                android:layout_width="0dp"                android:layout_height="match_parent"                android:layout_weight="1"                              android:background="@drawable/bg_unit_dialog_selector"                android:gravity="center"                android:text="@string/setting_km_unit" />            <View                android:layout_width="0.5dp"                android:layout_height="match_parent"                android:background="#dbdbdb" />            <Button                android:id="@+id/setting_miles"                android:layout_width="0dp"                android:layout_height="match_parent"                android:layout_weight="1"                android:background="@drawable/bg_unit_dialog_selector"                android:gravity="center"                android:text="@string/setting_miles_unit" />        </LinearLayout>    </LinearLayout></RelativeLayout>//dialog按钮效果select效果文件:圆角和点击效果//selector和shape混合使用//@drawable/bg_unit_dialog_selector<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="false"><shape>            <solid android:color="#ffffff" />            <corners android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" />        </shape></item>    <item android:state_pressed="true"><shape>            <solid android:color="#F7F7F7" />            <corners android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" />        </shape></item></selector> //dialog背景效果圆角和白色背景 //@drawable/bg_hint_dialog<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" ><!-- 填充白色背景 -->    <solid android:color="#ffffff" /><!-- 四边圆角 -->    <corners        android:bottomLeftRadius="10dp"        android:bottomRightRadius="10dp"        android:topLeftRadius="10dp"        android:topRightRadius="10dp" /></shape>

这里写图片描述

0 0
原创粉丝点击