From 88761643cb04e7665e57cbe899a500364a99c298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E6=B4=8B?= Date: Mon, 10 Apr 2017 22:35:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0setDialogView=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .idea/modules.xml | 3 + .../bottomdialog/BaseBottomDialog.java | 16 ++++- .../me/shaohui/bottomdialog/BottomDialog.java | 16 ++++- .../bottomdialogexample/EditTextDialog.java | 5 ++ .../bottomdialogexample/MainActivity.java | 46 +++++++++++-- .../ShareBottomDialog.java | 11 ++- .../UFOnSelectedTypeListener.java | 7 ++ .../UFPictureSelectedView.java | 33 +++++++++ .../src/main/res/layout/popup_pictures.xml | 67 +++++++++++++++++++ 10 files changed, 191 insertions(+), 15 deletions(-) mode change 100644 => 100755 bottomdialog/src/main/java/me/shaohui/bottomdialog/BaseBottomDialog.java mode change 100644 => 100755 bottomdialog/src/main/java/me/shaohui/bottomdialog/BottomDialog.java mode change 100644 => 100755 example/src/main/java/me/shaohui/bottomdialogexample/EditTextDialog.java mode change 100644 => 100755 example/src/main/java/me/shaohui/bottomdialogexample/MainActivity.java mode change 100644 => 100755 example/src/main/java/me/shaohui/bottomdialogexample/ShareBottomDialog.java create mode 100644 example/src/main/java/me/shaohui/bottomdialogexample/UFOnSelectedTypeListener.java create mode 100644 example/src/main/java/me/shaohui/bottomdialogexample/UFPictureSelectedView.java create mode 100644 example/src/main/res/layout/popup_pictures.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb6828..5d19981 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml index 07e42ba..d375fa1 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,8 +3,11 @@ + + + \ No newline at end of file diff --git a/bottomdialog/src/main/java/me/shaohui/bottomdialog/BaseBottomDialog.java b/bottomdialog/src/main/java/me/shaohui/bottomdialog/BaseBottomDialog.java old mode 100644 new mode 100755 index 3c5fd0d..4f8dc5d --- a/bottomdialog/src/main/java/me/shaohui/bottomdialog/BaseBottomDialog.java +++ b/bottomdialog/src/main/java/me/shaohui/bottomdialog/BaseBottomDialog.java @@ -14,6 +14,7 @@ import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; +import android.widget.FrameLayout; /** * Created by shaohui on 16/10/11. @@ -33,11 +34,18 @@ public void onCreate(Bundle savedInstanceState) { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + Bundle savedInstanceState) { getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); getDialog().setCanceledOnTouchOutside(getCancelOutside()); - - View v = inflater.inflate(getLayoutRes(), container, false); + View v; + if (getDialogView() != null) { + v = inflater.inflate(R.layout.layout, container, false); + FrameLayout layout = ((FrameLayout) v.findViewById(R.id.root)); + layout.addView(getDialogView()); + } else { + v = inflater.inflate(getLayoutRes(), container, false); + bindView(v); + } bindView(v); return v; } @@ -45,6 +53,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, @LayoutRes public abstract int getLayoutRes(); + public abstract View getDialogView(); + public abstract void bindView(View v); @Override diff --git a/bottomdialog/src/main/java/me/shaohui/bottomdialog/BottomDialog.java b/bottomdialog/src/main/java/me/shaohui/bottomdialog/BottomDialog.java old mode 100644 new mode 100755 index 4ec9819..1f44eae --- a/bottomdialog/src/main/java/me/shaohui/bottomdialog/BottomDialog.java +++ b/bottomdialog/src/main/java/me/shaohui/bottomdialog/BottomDialog.java @@ -28,7 +28,7 @@ public class BottomDialog extends BaseBottomDialog { @LayoutRes private int mLayoutRes; - + private View mView; private ViewListener mViewListener; public static BottomDialog create(FragmentManager manager) { @@ -50,7 +50,10 @@ public void onCreate(Bundle savedInstanceState) { @Override public void onSaveInstanceState(Bundle outState) { + if (mLayoutRes != 0) { + outState.putInt(KEY_LAYOUT_RES, mLayoutRes); + } outState.putInt(KEY_HEIGHT, mHeight); outState.putFloat(KEY_DIM, mDimAmount); outState.putBoolean(KEY_CANCEL_OUTSIDE, mIsCancelOutside); @@ -125,6 +128,17 @@ public String getFragmentTag() { return mTag; } + @Override + public View getDialogView() { + return mView; + } + + public BottomDialog setDialogView(View view) { +// getParentFragment().getFragmentManager().set + mView = view; + return this; + } + public interface ViewListener { void bindView(View v); } diff --git a/example/src/main/java/me/shaohui/bottomdialogexample/EditTextDialog.java b/example/src/main/java/me/shaohui/bottomdialogexample/EditTextDialog.java old mode 100644 new mode 100755 index e8fc4ec..e969664 --- a/example/src/main/java/me/shaohui/bottomdialogexample/EditTextDialog.java +++ b/example/src/main/java/me/shaohui/bottomdialogexample/EditTextDialog.java @@ -4,6 +4,7 @@ import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; + import me.shaohui.bottomdialog.BaseBottomDialog; /** @@ -11,6 +12,10 @@ */ public class EditTextDialog extends BaseBottomDialog { + @Override + public View getDialogView() { + return null; + } private EditText mEditText; diff --git a/example/src/main/java/me/shaohui/bottomdialogexample/MainActivity.java b/example/src/main/java/me/shaohui/bottomdialogexample/MainActivity.java old mode 100644 new mode 100755 index 20a6f58..36df9ac --- a/example/src/main/java/me/shaohui/bottomdialogexample/MainActivity.java +++ b/example/src/main/java/me/shaohui/bottomdialogexample/MainActivity.java @@ -1,13 +1,14 @@ package me.shaohui.bottomdialogexample; -import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; +import android.widget.Toast; + import me.shaohui.bottomdialog.BottomDialog; +import static me.shaohui.bottomdialog.BottomDialog.create; + public class MainActivity extends AppCompatActivity { @Override @@ -18,9 +19,9 @@ protected void onCreate(Bundle savedInstanceState) { findViewById(R.id.show_dialog).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - showDialog(); +// showDialog(); //shareDialog(); - + showViewDialog(); } }); } @@ -33,19 +34,50 @@ private void shareDialog() { } private void showDialog() { - BottomDialog.create(getSupportFragmentManager()) + create(getSupportFragmentManager()) .setViewListener(new BottomDialog.ViewListener() { @Override public void bindView(View v) { initView(v); } }) - .setLayoutRes(R.layout.dialog_layout) + .setLayoutRes(R.layout.layout) .setDimAmount(0.9f) .setTag("BottomDialog") .show(); } + private void showViewDialog() { + UFPictureSelectedView view = new UFPictureSelectedView(this); + + final BottomDialog dialog = BottomDialog.create(getSupportFragmentManager()) + .setViewListener(new BottomDialog.ViewListener() { + @Override + public void bindView(View v) { + v.findViewById(R.id.item_recommend).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(MainActivity.this, "0", Toast.LENGTH_SHORT).show(); + } + }); v.findViewById(R.id.item_take_photo).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show(); + } + }); v.findViewById(R.id.item_get_photo).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(MainActivity.this, "2", Toast.LENGTH_SHORT).show(); + } + }); + } + }) + .setDialogView(view) + .setDimAmount(0.9f) + .setTag("BottomDialog"); + dialog.show(); + } + private void initView(final View view) { //final EditText editText = (EditText) view.findViewById(R.id.edit_text); //editText.post(new Runnable() { diff --git a/example/src/main/java/me/shaohui/bottomdialogexample/ShareBottomDialog.java b/example/src/main/java/me/shaohui/bottomdialogexample/ShareBottomDialog.java old mode 100644 new mode 100755 index e11cc28..3a9494a --- a/example/src/main/java/me/shaohui/bottomdialogexample/ShareBottomDialog.java +++ b/example/src/main/java/me/shaohui/bottomdialogexample/ShareBottomDialog.java @@ -1,22 +1,27 @@ package me.shaohui.bottomdialogexample; -import android.app.FragmentManager; import android.view.View; + import me.shaohui.bottomdialog.BaseBottomDialog; /** * Created by shaohui on 16/10/11. */ -public class ShareBottomDialog extends BaseBottomDialog{ +public class ShareBottomDialog extends BaseBottomDialog { @Override public int getLayoutRes() { - return R.layout.dialog_layout; + return R.layout.layout; } @Override public void bindView(View v) { // do any thing you want } + + @Override + public View getDialogView() { + return null; + } } diff --git a/example/src/main/java/me/shaohui/bottomdialogexample/UFOnSelectedTypeListener.java b/example/src/main/java/me/shaohui/bottomdialogexample/UFOnSelectedTypeListener.java new file mode 100644 index 0000000..fafb3b9 --- /dev/null +++ b/example/src/main/java/me/shaohui/bottomdialogexample/UFOnSelectedTypeListener.java @@ -0,0 +1,7 @@ +package me.shaohui.bottomdialogexample; + + + +public abstract class UFOnSelectedTypeListener { + public abstract void onSelected(int type); +} diff --git a/example/src/main/java/me/shaohui/bottomdialogexample/UFPictureSelectedView.java b/example/src/main/java/me/shaohui/bottomdialogexample/UFPictureSelectedView.java new file mode 100644 index 0000000..671a51d --- /dev/null +++ b/example/src/main/java/me/shaohui/bottomdialogexample/UFPictureSelectedView.java @@ -0,0 +1,33 @@ +package me.shaohui.bottomdialogexample; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.LinearLayout; + + +public class UFPictureSelectedView extends LinearLayout { + + public UFPictureSelectedView(Context context) { + super(context); + initView(context); + } + + public UFPictureSelectedView(Context context, AttributeSet attrs) { + super(context, attrs); + initView(context); + } + + public UFPictureSelectedView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(context); + } + + private void initView(Context context) { + View root = LayoutInflater.from(context).inflate(R.layout.popup_pictures, this); + + } + + +} diff --git a/example/src/main/res/layout/popup_pictures.xml b/example/src/main/res/layout/popup_pictures.xml new file mode 100644 index 0000000..4e0ca45 --- /dev/null +++ b/example/src/main/res/layout/popup_pictures.xml @@ -0,0 +1,67 @@ + + + + + +