parent
d3a759374c
commit
dbfbac55de
@ -1,221 +1,118 @@ |
|||||||
package com.king.app.dialog; |
package com.king.app.dialog; |
||||||
|
|
||||||
import android.content.Context; |
import android.content.Context; |
||||||
|
import android.util.SparseArray; |
||||||
import android.view.LayoutInflater; |
import android.view.LayoutInflater; |
||||||
import android.view.View; |
import android.view.View; |
||||||
|
import android.widget.Button; |
||||||
|
import android.widget.TextView; |
||||||
|
|
||||||
import androidx.annotation.IdRes; |
import androidx.annotation.IdRes; |
||||||
import androidx.annotation.LayoutRes; |
import androidx.annotation.LayoutRes; |
||||||
import androidx.annotation.NonNull; |
import androidx.annotation.NonNull; |
||||||
import androidx.annotation.StringRes; |
|
||||||
|
|
||||||
/** |
/** |
||||||
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a> |
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a> |
||||||
*/ |
*/ |
||||||
public class AppDialogConfig { |
public class AppDialogConfig extends BaseDialogConfig{ |
||||||
/** |
|
||||||
* 布局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; |
|
||||||
|
|
||||||
private View.OnClickListener onClickCancel; |
private Context context; |
||||||
|
|
||||||
private View.OnClickListener onClickOk; |
private SparseArray<View> views; |
||||||
|
|
||||||
private View view; |
private View view; |
||||||
|
|
||||||
public @LayoutRes int getLayoutId() { |
public AppDialogConfig(@NonNull Context context){ |
||||||
return layoutId; |
this(context,R.layout.app_dialog); |
||||||
} |
|
||||||
|
|
||||||
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 @IdRes int getCancelId() { |
public AppDialogConfig(@NonNull Context context,@LayoutRes int layoutId){ |
||||||
return cancelId; |
super(layoutId); |
||||||
|
this.context = context; |
||||||
|
views = new SparseArray<>(); |
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setCancelId(@IdRes int cancelId) { |
public Context getContext(){ |
||||||
this.cancelId = cancelId; |
return context; |
||||||
return this; |
|
||||||
} |
} |
||||||
|
|
||||||
public @IdRes int getOkId() { |
|
||||||
return okId; |
|
||||||
} |
|
||||||
|
|
||||||
public AppDialogConfig setOkId(@IdRes int okId) { |
/** |
||||||
this.okId = okId; |
* use {@link #getDialogView()} |
||||||
return this; |
* @param context |
||||||
} |
* @return |
||||||
|
* @deprecated 即将废弃,下一个版本可能会移除此方法。 |
||||||
public @IdRes int getLineId() { |
*/ |
||||||
return lineId; |
@Deprecated |
||||||
} |
public View getView(@NonNull Context context){ |
||||||
|
return getDialogView(); |
||||||
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; |
|
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setCancel(CharSequence cancel) { |
public View getDialogView(){ |
||||||
this.cancel = cancel; |
if(view == null){ |
||||||
return this; |
view = LayoutInflater.from(context).inflate(getLayoutId(),null); |
||||||
} |
} |
||||||
|
return view; |
||||||
public AppDialogConfig setCancel(@NonNull Context context,@StringRes int resId) { |
|
||||||
this.cancel = context.getString(resId); |
|
||||||
return this; |
|
||||||
} |
} |
||||||
|
|
||||||
public CharSequence getOk() { |
private <T extends View> T findView(@IdRes int id){ |
||||||
return ok; |
return (T)getDialogView().findViewById(id); |
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setOk(CharSequence ok) { |
public <T extends View> T getView(@IdRes int id){ |
||||||
this.ok = ok; |
View v = views.get(id); |
||||||
return this; |
if(v == null){ |
||||||
|
v = findView(id); |
||||||
|
views.put(id,v); |
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setOk(@NonNull Context context,@StringRes int resId) { |
return (T)v; |
||||||
this.ok = context.getString(resId); |
|
||||||
return this; |
|
||||||
} |
} |
||||||
|
|
||||||
public boolean isHideCancel() { |
|
||||||
return isHideCancel; |
|
||||||
} |
|
||||||
|
|
||||||
public AppDialogConfig setHideCancel(boolean hideCancel) { |
/** |
||||||
isHideCancel = hideCancel; |
* 通过{@link AppDialogConfig} 创建一个视图 |
||||||
return this; |
* @return |
||||||
|
*/ |
||||||
|
View buildAppDialogView(){ |
||||||
|
TextView tvDialogTitle = getView(titleId); |
||||||
|
if(tvDialogTitle != null){ |
||||||
|
setText(tvDialogTitle,title); |
||||||
|
tvDialogTitle.setVisibility(isHideTitle ? View.GONE : View.VISIBLE); |
||||||
} |
} |
||||||
|
|
||||||
public boolean isHideTitle(){ |
TextView tvDialogContent = getView(contentId); |
||||||
return isHideTitle; |
if(tvDialogContent != null){ |
||||||
|
setText(tvDialogContent,content); |
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setHideTitle(boolean hideTitle){ |
Button btnDialogCancel = getView(cancelId); |
||||||
isHideTitle = hideTitle; |
if(btnDialogCancel != null){ |
||||||
return this; |
setText(btnDialogCancel,cancel); |
||||||
|
btnDialogCancel.setOnClickListener(onClickCancel != null ? onClickCancel : AppDialog.INSTANCE.mOnClickDismissDialog); |
||||||
|
btnDialogCancel.setVisibility(isHideCancel ? View.GONE : View.VISIBLE); |
||||||
} |
} |
||||||
|
|
||||||
public View.OnClickListener getOnClickCancel() { |
View line = getView(lineId); |
||||||
return onClickCancel; |
if(line != null){ |
||||||
|
line.setVisibility(isHideCancel ? View.GONE : View.VISIBLE); |
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setOnClickCancel(View.OnClickListener onClickCancel) { |
Button btnDialogOK = getView(okId); |
||||||
this.onClickCancel = onClickCancel; |
if(btnDialogOK != null){ |
||||||
return this; |
setText(btnDialogOK,ok); |
||||||
} |
btnDialogOK.setOnClickListener(onClickOk != null ? onClickOk : AppDialog.INSTANCE.mOnClickDismissDialog); |
||||||
|
|
||||||
public View.OnClickListener getOnClickOk() { |
|
||||||
return onClickOk; |
|
||||||
} |
} |
||||||
|
|
||||||
public AppDialogConfig setOnClickOk(View.OnClickListener onClickOk) { |
return view; |
||||||
this.onClickOk = onClickOk; |
|
||||||
return this; |
|
||||||
} |
} |
||||||
|
|
||||||
public View getView(@NonNull Context context){ |
private void setText(TextView tv, CharSequence text){ |
||||||
if(view == null){ |
if(text != null){ |
||||||
view = LayoutInflater.from(context).inflate(layoutId,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