parent
d3a759374c
commit
dbfbac55de
@ -1,221 +1,118 @@ |
||||
package com.king.app.dialog; |
||||
|
||||
import android.content.Context; |
||||
import android.util.SparseArray; |
||||
import android.view.LayoutInflater; |
||||
import android.view.View; |
||||
import android.widget.Button; |
||||
import android.widget.TextView; |
||||
|
||||
import androidx.annotation.IdRes; |
||||
import androidx.annotation.LayoutRes; |
||||
import androidx.annotation.NonNull; |
||||
import androidx.annotation.StringRes; |
||||
|
||||
/** |
||||
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a> |
||||
*/ |
||||
public class AppDialogConfig { |
||||
/** |
||||
* 布局ID |
||||
*/ |
||||
private @LayoutRes int layoutId = R.layout.app_dialog; |
||||
/** |
||||
* 标题视图ID |
||||
*/ |
||||
private @IdRes int titleId = R.id.tvDialogTitle; |
||||
/** |
||||
* 内容视图ID |
||||
*/ |
||||
private @IdRes int contentId = R.id.tvDialogContent; |
||||
/** |
||||
* 取消视图ID(左边按钮) |
||||
*/ |
||||
private @IdRes int cancelId = R.id.btnDialogCancel; |
||||
/** |
||||
* 确定视图ID(右边按钮) |
||||
*/ |
||||
private @IdRes int okId = R.id.btnDialogOK; |
||||
/** |
||||
* 按钮中间分割线ID |
||||
*/ |
||||
private @IdRes int lineId = R.id.line; |
||||
/** |
||||
* 标题文本 |
||||
*/ |
||||
private CharSequence title; |
||||
/** |
||||
* 内容文本 |
||||
*/ |
||||
private CharSequence content; |
||||
/** |
||||
* 取消按钮文本 |
||||
*/ |
||||
private CharSequence cancel; |
||||
/** |
||||
* 确定按钮文本 |
||||
*/ |
||||
private CharSequence ok; |
||||
/** |
||||
* 是否隐藏取消按钮,如果隐藏取消则底部只显示一个按钮 |
||||
*/ |
||||
private boolean isHideCancel; |
||||
/** |
||||
* 是否隐藏标题 |
||||
*/ |
||||
private boolean isHideTitle; |
||||
public class AppDialogConfig extends BaseDialogConfig{ |
||||
|
||||
private View.OnClickListener onClickCancel; |
||||
private Context context; |
||||
|
||||
private View.OnClickListener onClickOk; |
||||
private SparseArray<View> views; |
||||
|
||||
private View view; |
||||
|
||||
public @LayoutRes int getLayoutId() { |
||||
return layoutId; |
||||
} |
||||
|
||||
public AppDialogConfig setLayoutId(@LayoutRes int layoutId) { |
||||
this.layoutId = layoutId; |
||||
return this; |
||||
} |
||||
|
||||
public int getTitleId() { |
||||
return titleId; |
||||
} |
||||
|
||||
public AppDialogConfig setTitleId(@IdRes int titleId) { |
||||
this.titleId = titleId; |
||||
return this; |
||||
} |
||||
|
||||
public @IdRes int getContentId() { |
||||
return contentId; |
||||
} |
||||
|
||||
public AppDialogConfig setContentId(@IdRes int contentId) { |
||||
this.contentId = contentId; |
||||
return this; |
||||
public AppDialogConfig(@NonNull Context context){ |
||||
this(context,R.layout.app_dialog); |
||||
} |
||||
|
||||
public @IdRes int getCancelId() { |
||||
return cancelId; |
||||
public AppDialogConfig(@NonNull Context context,@LayoutRes int layoutId){ |
||||
super(layoutId); |
||||
this.context = context; |
||||
views = new SparseArray<>(); |
||||
} |
||||
|
||||
public AppDialogConfig setCancelId(@IdRes int cancelId) { |
||||
this.cancelId = cancelId; |
||||
return this; |
||||
public Context getContext(){ |
||||
return context; |
||||
} |
||||
|
||||
public @IdRes int getOkId() { |
||||
return okId; |
||||
} |
||||
|
||||
public AppDialogConfig setOkId(@IdRes int okId) { |
||||
this.okId = okId; |
||||
return this; |
||||
} |
||||
|
||||
public @IdRes int getLineId() { |
||||
return lineId; |
||||
} |
||||
|
||||
public AppDialogConfig setLineId(@IdRes int lineId) { |
||||
this.lineId = lineId; |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getTitle() { |
||||
return title; |
||||
} |
||||
|
||||
public AppDialogConfig setTitle(CharSequence title) { |
||||
this.title = title; |
||||
return this; |
||||
} |
||||
|
||||
public AppDialogConfig setTitle(@NonNull Context context,@StringRes int resId) { |
||||
this.title = context.getString(resId); |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getContent() { |
||||
return content; |
||||
} |
||||
|
||||
public AppDialogConfig setContent(CharSequence content) { |
||||
this.content = content; |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getCancel() { |
||||
return cancel; |
||||
/** |
||||
* use {@link #getDialogView()} |
||||
* @param context |
||||
* @return |
||||
* @deprecated 即将废弃,下一个版本可能会移除此方法。 |
||||
*/ |
||||
@Deprecated |
||||
public View getView(@NonNull Context context){ |
||||
return getDialogView(); |
||||
} |
||||
|
||||
public AppDialogConfig setCancel(CharSequence cancel) { |
||||
this.cancel = cancel; |
||||
return this; |
||||
public View getDialogView(){ |
||||
if(view == null){ |
||||
view = LayoutInflater.from(context).inflate(getLayoutId(),null); |
||||
} |
||||
|
||||
public AppDialogConfig setCancel(@NonNull Context context,@StringRes int resId) { |
||||
this.cancel = context.getString(resId); |
||||
return this; |
||||
return view; |
||||
} |
||||
|
||||
public CharSequence getOk() { |
||||
return ok; |
||||
private <T extends View> T findView(@IdRes int id){ |
||||
return (T)getDialogView().findViewById(id); |
||||
} |
||||
|
||||
public AppDialogConfig setOk(CharSequence ok) { |
||||
this.ok = ok; |
||||
return this; |
||||
public <T extends View> T getView(@IdRes int id){ |
||||
View v = views.get(id); |
||||
if(v == null){ |
||||
v = findView(id); |
||||
views.put(id,v); |
||||
} |
||||
|
||||
public AppDialogConfig setOk(@NonNull Context context,@StringRes int resId) { |
||||
this.ok = context.getString(resId); |
||||
return this; |
||||
return (T)v; |
||||
} |
||||
|
||||
public boolean isHideCancel() { |
||||
return isHideCancel; |
||||
} |
||||
|
||||
public AppDialogConfig setHideCancel(boolean hideCancel) { |
||||
isHideCancel = hideCancel; |
||||
return this; |
||||
/** |
||||
* 通过{@link AppDialogConfig} 创建一个视图 |
||||
* @return |
||||
*/ |
||||
View buildAppDialogView(){ |
||||
TextView tvDialogTitle = getView(titleId); |
||||
if(tvDialogTitle != null){ |
||||
setText(tvDialogTitle,title); |
||||
tvDialogTitle.setVisibility(isHideTitle ? View.GONE : View.VISIBLE); |
||||
} |
||||
|
||||
public boolean isHideTitle(){ |
||||
return isHideTitle; |
||||
TextView tvDialogContent = getView(contentId); |
||||
if(tvDialogContent != null){ |
||||
setText(tvDialogContent,content); |
||||
} |
||||
|
||||
public AppDialogConfig setHideTitle(boolean hideTitle){ |
||||
isHideTitle = hideTitle; |
||||
return this; |
||||
Button btnDialogCancel = getView(cancelId); |
||||
if(btnDialogCancel != null){ |
||||
setText(btnDialogCancel,cancel); |
||||
btnDialogCancel.setOnClickListener(onClickCancel != null ? onClickCancel : AppDialog.INSTANCE.mOnClickDismissDialog); |
||||
btnDialogCancel.setVisibility(isHideCancel ? View.GONE : View.VISIBLE); |
||||
} |
||||
|
||||
public View.OnClickListener getOnClickCancel() { |
||||
return onClickCancel; |
||||
View line = getView(lineId); |
||||
if(line != null){ |
||||
line.setVisibility(isHideCancel ? View.GONE : View.VISIBLE); |
||||
} |
||||
|
||||
public AppDialogConfig setOnClickCancel(View.OnClickListener onClickCancel) { |
||||
this.onClickCancel = onClickCancel; |
||||
return this; |
||||
} |
||||
Button btnDialogOK = getView(okId); |
||||
if(btnDialogOK != null){ |
||||
setText(btnDialogOK,ok); |
||||
btnDialogOK.setOnClickListener(onClickOk != null ? onClickOk : AppDialog.INSTANCE.mOnClickDismissDialog); |
||||
|
||||
public View.OnClickListener getOnClickOk() { |
||||
return onClickOk; |
||||
} |
||||
|
||||
public AppDialogConfig setOnClickOk(View.OnClickListener onClickOk) { |
||||
this.onClickOk = onClickOk; |
||||
return this; |
||||
return view; |
||||
} |
||||
|
||||
public View getView(@NonNull Context context){ |
||||
if(view == null){ |
||||
view = LayoutInflater.from(context).inflate(layoutId,null); |
||||
private void setText(TextView tv, CharSequence text){ |
||||
if(text != null){ |
||||
tv.setText(text); |
||||
} |
||||
return view; |
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,255 @@ |
||||
package com.king.app.dialog; |
||||
|
||||
import android.content.Context; |
||||
import android.view.View; |
||||
|
||||
import androidx.annotation.IdRes; |
||||
import androidx.annotation.LayoutRes; |
||||
import androidx.annotation.NonNull; |
||||
import androidx.annotation.StringRes; |
||||
import androidx.annotation.StyleRes; |
||||
|
||||
/** |
||||
* @author <a href="mailto:jenly1314@gmail.com">Jenly</a> |
||||
*/ |
||||
public class BaseDialogConfig { |
||||
|
||||
/** |
||||
* 布局ID |
||||
*/ |
||||
@LayoutRes |
||||
int layoutId; |
||||
/** |
||||
* 标题视图ID |
||||
*/ |
||||
@IdRes |
||||
int titleId = R.id.tvDialogTitle; |
||||
/** |
||||
* 内容视图ID |
||||
*/ |
||||
@IdRes int contentId = R.id.tvDialogContent; |
||||
/** |
||||
* 取消视图ID(左边按钮) |
||||
*/ |
||||
@IdRes int cancelId = R.id.btnDialogCancel; |
||||
/** |
||||
* 确定视图ID(右边按钮) |
||||
*/ |
||||
@IdRes int okId = R.id.btnDialogOK; |
||||
/** |
||||
* 按钮中间分割线ID |
||||
*/ |
||||
@IdRes int lineId = R.id.line; |
||||
|
||||
/** |
||||
* 样式ID |
||||
*/ |
||||
@StyleRes |
||||
int styleId = R.style.app_dialog; |
||||
|
||||
/** |
||||
* 标题文本 |
||||
*/ |
||||
CharSequence title; |
||||
/** |
||||
* 内容文本 |
||||
*/ |
||||
CharSequence content; |
||||
/** |
||||
* 取消按钮文本 |
||||
*/ |
||||
CharSequence cancel; |
||||
/** |
||||
* 确定按钮文本 |
||||
*/ |
||||
CharSequence ok; |
||||
/** |
||||
* 是否隐藏取消按钮,如果隐藏取消则底部只显示一个按钮 |
||||
*/ |
||||
boolean isHideCancel; |
||||
/** |
||||
* 是否隐藏标题 |
||||
*/ |
||||
boolean isHideTitle; |
||||
|
||||
View.OnClickListener onClickCancel; |
||||
|
||||
View.OnClickListener onClickOk; |
||||
|
||||
public BaseDialogConfig(){ |
||||
this(R.layout.app_dialog); |
||||
} |
||||
|
||||
public BaseDialogConfig(@LayoutRes int layoutId){ |
||||
this.layoutId = layoutId; |
||||
} |
||||
|
||||
|
||||
public @LayoutRes int getLayoutId() { |
||||
return layoutId; |
||||
} |
||||
|
||||
/** |
||||
* @param layoutId |
||||
* @return |
||||
* @deprecated 即将废弃,下一个版本可能会移除此方法 |
||||
*/ |
||||
@Deprecated |
||||
public BaseDialogConfig setLayoutId(@IdRes int layoutId) { |
||||
this.layoutId = layoutId; |
||||
return this; |
||||
} |
||||
|
||||
public int getTitleId() { |
||||
return titleId; |
||||
} |
||||
|
||||
public BaseDialogConfig setTitleId(@IdRes int titleId) { |
||||
this.titleId = titleId; |
||||
return this; |
||||
} |
||||
|
||||
public int getStyleId() { |
||||
return styleId; |
||||
} |
||||
|
||||
public BaseDialogConfig setStyleId(@IdRes int styleId) { |
||||
this.styleId = styleId; |
||||
return this; |
||||
} |
||||
|
||||
public @IdRes int getContentId() { |
||||
return contentId; |
||||
} |
||||
|
||||
public BaseDialogConfig setContentId(@IdRes int contentId) { |
||||
this.contentId = contentId; |
||||
return this; |
||||
} |
||||
|
||||
public @IdRes int getCancelId() { |
||||
return cancelId; |
||||
} |
||||
|
||||
public BaseDialogConfig setCancelId(@IdRes int cancelId) { |
||||
this.cancelId = cancelId; |
||||
return this; |
||||
} |
||||
|
||||
public @IdRes int getOkId() { |
||||
return okId; |
||||
} |
||||
|
||||
public BaseDialogConfig setOkId(@IdRes int okId) { |
||||
this.okId = okId; |
||||
return this; |
||||
} |
||||
|
||||
public @IdRes int getLineId() { |
||||
return lineId; |
||||
} |
||||
|
||||
public BaseDialogConfig setLineId(@IdRes int lineId) { |
||||
this.lineId = lineId; |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getTitle() { |
||||
return title; |
||||
} |
||||
|
||||
public BaseDialogConfig setTitle(CharSequence title) { |
||||
this.title = title; |
||||
return this; |
||||
} |
||||
|
||||
public BaseDialogConfig setTitle(@NonNull Context context, @StringRes int resId) { |
||||
this.title = context.getString(resId); |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getContent() { |
||||
return content; |
||||
} |
||||
|
||||
public BaseDialogConfig setContent(CharSequence content) { |
||||
this.content = content; |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getCancel() { |
||||
return cancel; |
||||
} |
||||
|
||||
public BaseDialogConfig setCancel(CharSequence cancel) { |
||||
this.cancel = cancel; |
||||
return this; |
||||
} |
||||
|
||||
public BaseDialogConfig setCancel(@NonNull Context context, @StringRes int resId) { |
||||
this.cancel = context.getString(resId); |
||||
return this; |
||||
} |
||||
|
||||
public CharSequence getOk() { |
||||
return ok; |
||||
} |
||||
|
||||
public BaseDialogConfig setOk(CharSequence ok) { |
||||
this.ok = ok; |
||||
return this; |
||||
} |
||||
|
||||
public BaseDialogConfig setOk(@NonNull Context context, @StringRes int resId) { |
||||
this.ok = context.getString(resId); |
||||
return this; |
||||
} |
||||
|
||||
public boolean isHideCancel() { |
||||
return isHideCancel; |
||||
} |
||||
|
||||
public BaseDialogConfig setHideCancel(boolean hideCancel) { |
||||
isHideCancel = hideCancel; |
||||
return this; |
||||
} |
||||
|
||||
public boolean isHideTitle(){ |
||||
return isHideTitle; |
||||
} |
||||
|
||||
public BaseDialogConfig setHideTitle(boolean hideTitle){ |
||||
isHideTitle = hideTitle; |
||||
return this; |
||||
} |
||||
|
||||
public View.OnClickListener getOnClickCancel() { |
||||
return onClickCancel; |
||||
} |
||||
|
||||
/** |
||||
* 设置“取消”按钮点击监听,不设置默认点击关闭弹框 |
||||
* @param onClickCancel |
||||
* @return |
||||
*/ |
||||
public BaseDialogConfig setOnClickCancel(View.OnClickListener onClickCancel) { |
||||
this.onClickCancel = onClickCancel; |
||||
return this; |
||||
} |
||||
|
||||
public View.OnClickListener getOnClickOk() { |
||||
return onClickOk; |
||||
} |
||||
|
||||
/** |
||||
* 设置“确定”按钮点击监听,不设置默认点击关闭弹框 |
||||
* @param onClickOk |
||||
* @return |
||||
*/ |
||||
public BaseDialogConfig setOnClickOk(View.OnClickListener onClickOk) { |
||||
this.onClickOk = onClickOk; |
||||
return this; |
||||
} |
||||
|
||||
|
||||
} |
Binary file not shown.
@ -1 +0,0 @@ |
||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":16,"versionName":"1.0.9-androidx","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] |
Loading…
Reference in new issue