适配方式
方式一、生成对应px文件,百分比布局
方式二、动态改变px比例,百分比布局
方式三、生成对应dp文件,百分比布局
方式四、改变DisplayMetrics属性值,今日头条方案
Android工程师
public abstract class BaseDialog extends Dialog{
public BaseDialog dialog;
public Activity activity;
public BaseDialog(@NonNull Activity activity) {
super(activity);
this.dialog=this;
this.activity=activity;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(initLayout());
DialogUtils.setWindowPublic(this);
initEvent();
}
public abstract int initLayout();
public abstract void initEvent();
/**
* 设置dialog其他屏幕地方是否触摸消失
* @param isSetCanceledOnTouchOutside
* @return
*/
public BaseDialog setCanceledOnTouchOutside(Boolean isSetCanceledOnTouchOutside) {
dialog.setCanceledOnTouchOutside(isSetCanceledOnTouchOutside);
return this;
}
/**
* 设置回退键是否有效
* @param isCancelable
* @return
*/
public BaseDialog setCancelable(Boolean isCancelable) {
dialog.setCancelable(isCancelable);
return this;
}
/**
* 显示dialog
* @return
*/
public BaseDialog showDialog() {
if(!isShowing()){
dialog.show();
}
return this;
}
/**
* 关闭dialog
* @return
*/
public BaseDialog hideDialog() {
if(isShowing()){
dialog.hide();
}
return this;
}
/**
* 设置回调 两个点击事件
*/
public CallBack callBack;
public interface CallBack{
void cancel();
void ok();
}
public BaseDialog setCallBack(CallBack callBack) {
this.callBack = callBack;
return this;
}
/**
* 设置点击一个条目
*/
public ClickSingleCallBack clickSingleCallBack;
public interface ClickSingleCallBack{
void click(String item);
}
public BaseDialog setClickSingleCallBack(ClickSingleCallBack clickSingleCallBack) {
this.clickSingleCallBack = clickSingleCallBack;
return this;
}
/**
* 设置照片回调
*/
public PhotoCallBack photoCallBack;
public interface PhotoCallBack{
void takePhoto();
void selectPhoto();
}
public BaseDialog setPhotoCallBack(PhotoCallBack photoCallBack) {
this.photoCallBack = photoCallBack;
return this;
}
}
public class ResultBack {
private static final String TAG = "ACTIVITYRESULTBACK";
private ResultBackFragment mResultBackFragment;
public ResultBack(Fragment fragment) {
this(fragment.getActivity());
}
public ResultBack(Activity activity) {
mResultBackFragment = getResultBackFragment(activity);
}
private ResultBackFragment getResultBackFragment(Activity activity) {
ResultBackFragment resultBackFragment = findResultBackFragment(activity);
if (resultBackFragment == null) {
resultBackFragment = new ResultBackFragment();
FragmentManager fragmentManager = activity.getFragmentManager();
fragmentManager.beginTransaction().add(resultBackFragment, TAG).commitAllowingStateLoss();
fragmentManager.executePendingTransactions();
}
return resultBackFragment;
}
private ResultBackFragment findResultBackFragment(Activity activity) {
return (ResultBackFragment) activity.getFragmentManager().findFragmentByTag(TAG);
}
public void startForResult(Class<?> clazz, Callback callback) {
Intent intent = new Intent(mResultBackFragment.getActivity(), clazz);
startForResult(intent, callback);
}
public void startForResult(Intent intent, Callback callback) {
mResultBackFragment.startForResult(intent, callback);
}
public interface Callback {
void onActivityResult(int resultCode, Intent data);
}
}