diff --git a/gallery/build.properties b/gallery/build.properties index 3b35f04..d07e98f 100644 --- a/gallery/build.properties +++ b/gallery/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Fri May 01 09:21:07 HKT 2026 +#Fri May 01 10:20:57 CST 2026 stageCount=14 libraryProject= baseVersion=15.0 publishVersion=15.0.13 -buildCount=0 +buildCount=3 baseBetaVersion=15.0.14 diff --git a/gallery/src/main/java/cc/winboll/studio/gallery/BgSelectorDialog.java b/gallery/src/main/java/cc/winboll/studio/gallery/BgSelectorDialog.java new file mode 100644 index 0000000..7dd5473 --- /dev/null +++ b/gallery/src/main/java/cc/winboll/studio/gallery/BgSelectorDialog.java @@ -0,0 +1,64 @@ +package cc.winboll.studio.gallery; + +import android.app.Dialog; +import android.content.Context; +import android.view.View; +import android.widget.RadioButton; +import android.widget.RadioGroup; + +public class BgSelectorDialog extends Dialog { + + public interface OnBgSelectedListener { + void onBgSelected(int bgType); + } + + private int currentBgType; + private OnBgSelectedListener listener; + + public BgSelectorDialog(Context context, int currentBgType) { + super(context); + this.currentBgType = currentBgType; + setContentView(R.layout.dialog_bg_selector); + initViews(); + } + + private void initViews() { + RadioGroup radioGroup = findViewById(R.id.radio_group_bg); + RadioButton radioCheckerboard = findViewById(R.id.radio_checkerboard); + RadioButton radioWhite = findViewById(R.id.radio_white); + RadioButton radioBlack = findViewById(R.id.radio_black); + + switch (currentBgType) { + case 0: + radioCheckerboard.setChecked(true); + break; + case 1: + radioWhite.setChecked(true); + break; + case 2: + radioBlack.setChecked(true); + break; + } + + radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + int which = 0; + if (checkedId == R.id.radio_white) { + which = 1; + } else if (checkedId == R.id.radio_black) { + which = 2; + } + + if (listener != null) { + listener.onBgSelected(which); + } + dismiss(); + } + }); + } + + public void setOnBgSelectedListener(OnBgSelectedListener listener) { + this.listener = listener; + } +} diff --git a/gallery/src/main/java/cc/winboll/studio/gallery/CropActivity.java b/gallery/src/main/java/cc/winboll/studio/gallery/CropActivity.java index c7b9b91..0c4a4be 100644 --- a/gallery/src/main/java/cc/winboll/studio/gallery/CropActivity.java +++ b/gallery/src/main/java/cc/winboll/studio/gallery/CropActivity.java @@ -147,25 +147,20 @@ public class CropActivity extends AppCompatActivity { } private void showBgDialog() { - final String[] bgNames = {"灰白相间", "全白", "全黑"}; - final int[] bgDrawables = {R.drawable.bg_checkerboard, R.drawable.bg_white, R.drawable.bg_black}; final View colorView = findViewById(R.id.color_view); final GradientDrawable colorDrawable = (GradientDrawable) colorView.getBackground(); final int currentBgType = cropCanvasView.getBackgroundType(); - new AlertDialog.Builder(this) - .setTitle("选择背景") - .setSingleChoiceItems(bgNames, currentBgType, new android.content.DialogInterface.OnClickListener() { - @Override - public void onClick(android.content.DialogInterface dialog, int which) { - cropCanvasView.setBackgroundType(which); - prefs.setBgType(which); - updateColorView(colorDrawable, which); - dialog.dismiss(); - } - }) - .setNegativeButton("取消", null) - .show(); + BgSelectorDialog dialog = new BgSelectorDialog(this, currentBgType); + dialog.setOnBgSelectedListener(new BgSelectorDialog.OnBgSelectedListener() { + @Override + public void onBgSelected(int which) { + cropCanvasView.setBackgroundType(which); + prefs.setBgType(which); + updateColorView(colorDrawable, which); + } + }); + dialog.show(); } private void loadImage() { diff --git a/gallery/src/main/java/cc/winboll/studio/gallery/ImageViewerActivity.java b/gallery/src/main/java/cc/winboll/studio/gallery/ImageViewerActivity.java index 1401b44..c95f736 100644 --- a/gallery/src/main/java/cc/winboll/studio/gallery/ImageViewerActivity.java +++ b/gallery/src/main/java/cc/winboll/studio/gallery/ImageViewerActivity.java @@ -169,28 +169,24 @@ public class ImageViewerActivity extends Activity implements ViewPager.OnPageCha } private void switchBg() { - final String[] bgNames = {"灰白相间", "全白", "全黑"}; final int[] bgResources = {R.drawable.bg_checkerboard, R.drawable.bg_white, R.drawable.bg_black}; - new AlertDialog.Builder(this) - .setTitle("选择背景") - .setSingleChoiceItems(bgNames, bgType, new android.content.DialogInterface.OnClickListener() { - @Override - public void onClick(android.content.DialogInterface dialog, int which) { - bgType = which; - prefs.setBgType(which); - int currentItem = viewPager.getCurrentItem(); - View container = findViewById(R.id.container); - if (container != null) { - container.setBackgroundResource(bgResources[which]); - } - viewPager.setAdapter(new ImagePagerAdapter(imageUrls, bgType)); - viewPager.setCurrentItem(currentItem); - dialog.dismiss(); + BgSelectorDialog dialog = new BgSelectorDialog(this, bgType); + dialog.setOnBgSelectedListener(new BgSelectorDialog.OnBgSelectedListener() { + @Override + public void onBgSelected(int which) { + bgType = which; + prefs.setBgType(which); + int currentItem = viewPager.getCurrentItem(); + View container = findViewById(R.id.container); + if (container != null) { + container.setBackgroundResource(bgResources[which]); } - }) - .setNegativeButton("取消", null) - .show(); + viewPager.setAdapter(new ImagePagerAdapter(imageUrls, bgType)); + viewPager.setCurrentItem(currentItem); + } + }); + dialog.show(); } private void showDeleteDialog() { diff --git a/gallery/src/main/res/layout/dialog_bg_selector.xml b/gallery/src/main/res/layout/dialog_bg_selector.xml new file mode 100644 index 0000000..53e8ea6 --- /dev/null +++ b/gallery/src/main/res/layout/dialog_bg_selector.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + +