From 9a61063917b7ece2aa5e6c93f60b072fc352dcc8 Mon Sep 17 00:00:00 2001 From: gzu-liyujiang Date: Fri, 4 Nov 2022 07:27:02 +0800 Subject: [PATCH] =?UTF-8?q?`XXXPicker`=E5=92=8C`DialogFragment`=E7=BB=93?= =?UTF-8?q?=E5=90=88=E4=BD=BF=E7=94=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog.md | 2 + Common/build.gradle | 1 + README.md | 25 +++++++++ .../activity/AddressPickerActivity.java | 2 +- .../activity/FileExplorerFragment.java | 3 -- .../fallback/activity/MainActivity.java | 4 ++ .../activity/OptionPickerFragment.java | 51 +++++++++++++++++++ .../main/res/layout/activity_picker_main.xml | 6 +++ gradle/dependency.gradle | 4 +- 9 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/github/gzuliyujiang/fallback/activity/OptionPickerFragment.java diff --git a/ChangeLog.md b/ChangeLog.md index 0cbfa7ab..baff465d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -3,6 +3,8 @@ ## 4.1.10 - 2022.11.04 - Fix [issues#324](https://github.com/gzu-liyujiang/AndroidPicker/issues/324) 。 +- Opt [issues#294](https://github.com/gzu-liyujiang/AndroidPicker/issues/294) [issues#296](https://github.com/gzu-liyujiang/AndroidPicker/issues/296) 。 +- `XXXPicker`和`DialogFragment`结合使用示例。 ## 4.1.9 - 2022.08.31 diff --git a/Common/build.gradle b/Common/build.gradle index 4e3d1e0d..38483c39 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -17,4 +17,5 @@ apply from: "${rootDir}/gradle/publish.gradle" dependencies { implementation androidxLibrary.annotation implementation androidxLibrary.core + api androidxLibrary.activity } diff --git a/README.md b/README.md index 20f76d62..f4fac6bb 100644 --- a/README.md +++ b/README.md @@ -386,6 +386,31 @@ public class AntFortuneLikePicker extends LinkagePicker { } ```` +### 和`DialogFragment`结合 + +`XXXPicker` 都继承自 `android.app.Dialog` ,因此可以直接和`androidx.fragment.app.DialogFragment`结合使用。 + +```java +public class OptionPickerFragment extends DialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + OptionPicker picker = new OptionPicker(requireActivity()); + picker.setData("土人", "里民子", "羡民", "穿青人", "不在56个民族之内", "未定民族"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + Toast.makeText(requireContext(), item.toString(), Toast.LENGTH_SHORT).show(); + } + }); + picker.getWheelView().setStyle(R.style.WheelStyleDemo); + return picker; + } + +} +``` + ## 效果预览 以下图片显示的效果可能已修改过,实际效果请运行 demo 查看。 diff --git a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/AddressPickerActivity.java b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/AddressPickerActivity.java index 1d99e100..51c83ccb 100644 --- a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/AddressPickerActivity.java +++ b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/AddressPickerActivity.java @@ -109,7 +109,7 @@ public void onProvinceCityForGuiZhou(View view) { wheelLayout.setSelectedTextSize(17 * view.getResources().getDisplayMetrics().scaledDensity); wheelLayout.setSelectedTextBold(true); wheelLayout.setCurtainEnabled(true); - wheelLayout.setCurtainColor(0xEE0081FF); + wheelLayout.setCurtainColor(0xFF22EEFF); wheelLayout.setCurtainRadius(8 * view.getResources().getDisplayMetrics().density); int padding = (int) (10 * view.getResources().getDisplayMetrics().density); wheelLayout.setPadding(padding, 0, padding, 0); diff --git a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/FileExplorerFragment.java b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/FileExplorerFragment.java index b244a79c..87c03d57 100644 --- a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/FileExplorerFragment.java +++ b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/FileExplorerFragment.java @@ -40,9 +40,6 @@ */ public class FileExplorerFragment extends DialogFragment { - public FileExplorerFragment() { - } - @Override @SuppressLint("PrivateResource") public void onCreate(@Nullable Bundle savedInstanceState) { diff --git a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/MainActivity.java b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/MainActivity.java index 0a1d9b24..4c2875a5 100644 --- a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/MainActivity.java +++ b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/MainActivity.java @@ -81,6 +81,10 @@ public void onOptionPicked(int position, Object item) { picker.show(); } + public void onDialogFragment(View view) { + new OptionPickerFragment().show(getSupportFragmentManager(), OptionPickerFragment.class.getName()); + } + public void onDateTimePicker(View view) { startActivity(DateTimePickerActivity.class); } diff --git a/app/src/main/java/com/github/gzuliyujiang/fallback/activity/OptionPickerFragment.java b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/OptionPickerFragment.java new file mode 100644 index 00000000..dd99c262 --- /dev/null +++ b/app/src/main/java/com/github/gzuliyujiang/fallback/activity/OptionPickerFragment.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016-present 贵州纳雍穿青人李裕江<1032694760@qq.com> + * + * The software is licensed under the Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR + * PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package com.github.gzuliyujiang.fallback.activity; + +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; + +import com.github.gzuliyujiang.fallback.R; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; + +/** + * {@link androidx.fragment.app.Fragment}形式的弹窗 + * + * @author 贵州山野羡民(1032694760@qq.com) + * @since 2022/11/04 + */ +public class OptionPickerFragment extends DialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + OptionPicker picker = new OptionPicker(requireActivity()); + picker.setData("土人", "里民子", "羡民", "穿青人", "不在56个民族之内", "未定民族"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + Toast.makeText(requireContext(), item.toString(), Toast.LENGTH_SHORT).show(); + } + }); + picker.getWheelView().setStyle(R.style.WheelStyleDemo); + return picker; + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_picker_main.xml b/app/src/main/res/layout/activity_picker_main.xml index d53f3f0a..5a5a813c 100644 --- a/app/src/main/res/layout/activity_picker_main.xml +++ b/app/src/main/res/layout/activity_picker_main.xml @@ -42,6 +42,12 @@ android:text="切换弹窗样式" android:textColor="#FFFF0000" /> +