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>