Commit 8e5b6c30 authored by fallenstardust's avatar fallenstardust

add ImageSelect function

parent dd01f539
...@@ -41,9 +41,13 @@ import android.graphics.Point; ...@@ -41,9 +41,13 @@ import android.graphics.Point;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.ImageView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import org.json.JSONArray; import org.json.JSONArray;
import java.io.File; import java.io.File;
...@@ -60,6 +64,7 @@ import cn.garymb.ygomobile.utils.DeckUtil; ...@@ -60,6 +64,7 @@ import cn.garymb.ygomobile.utils.DeckUtil;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.YGOUtil; import cn.garymb.ygomobile.utils.YGOUtil;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
/** /**
* 静态类 * 静态类
...@@ -474,7 +479,17 @@ public class AppsSettings { ...@@ -474,7 +479,17 @@ public class AppsSettings {
public String getCoreSkinPath() { public String getCoreSkinPath() {
return new File(getResourcePath(), Constants.CORE_SKIN_PATH).getAbsolutePath(); return new File(getResourcePath(), Constants.CORE_SKIN_PATH).getAbsolutePath();
} }
public String getAvatarPath() {
return new File(getResourcePath(), Constants.CORE_AVATAR_PATH).getAbsolutePath();
}
public String getCoverPath() {
return new File(getResourcePath(), Constants.CORE_COVER_PATH).getAbsolutePath();
}
public String getBgPath() {
return new File(getResourcePath(), Constants.CORE_BG_PATH).getAbsolutePath();
}
/*** /***
* 字体路径 * 字体路径
*/ */
...@@ -739,6 +754,17 @@ public class AppsSettings { ...@@ -739,6 +754,17 @@ public class AppsSettings {
mSharedPreferences.putString(Constants.PREF_LAST_ROOM_LIST, array.toString()); mSharedPreferences.putString(Constants.PREF_LAST_ROOM_LIST, array.toString());
} }
public void setImage(String outFile, int outWidth, int outHeight, ImageView imageView) {
File img = new File(outFile);
if (img.exists()) {
GlideCompat.with(context).load(img)
.signature(new MediaStoreSignature("image/*", img.lastModified(), 0))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(outWidth, outHeight)
.into(imageView);
}
}
public enum languageEnum { public enum languageEnum {
//todo 逐步将设置语言的代码都更改为languageEnum //todo 逐步将设置语言的代码都更改为languageEnum
Chinese(0, "zh"), Chinese(0, "zh"),
......
...@@ -78,6 +78,9 @@ public interface Constants { ...@@ -78,6 +78,9 @@ public interface Constants {
String CORE_SOUND_PATH = "sound"; String CORE_SOUND_PATH = "sound";
String CORE_SKIN_PATH = "textures"; String CORE_SKIN_PATH = "textures";
String CORE_SKIN_PENDULUM_PATH = CORE_SKIN_PATH + "/extra"; String CORE_SKIN_PENDULUM_PATH = CORE_SKIN_PATH + "/extra";
String CORE_AVATAR_PATH = CORE_SKIN_PATH + "/extra/avatars";
String CORE_COVER_PATH = CORE_SKIN_PATH + "/extra/covers";
String CORE_BG_PATH = CORE_SKIN_PATH + "/extra/bgs";
String CORE_DECK_PATH = "deck"; String CORE_DECK_PATH = "deck";
String CORE_PACK_PATH = "pack"; String CORE_PACK_PATH = "pack";
String CORE_EXPANSIONS = "expansions"; String CORE_EXPANSIONS = "expansions";
......
package cn.garymb.ygomobile.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.bean.ImageItem;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.utils.CurImageInfo;
import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.YGOUtil;
public class DialogImageAdapter extends BaseAdapter {
private DialogPlus mDialogPlus;
private Context context;
private ImageView mImageView;
private ArrayList<ImageItem> imageItems;
private int itemWidth;
private int itemHeight;
private String mFilename;
private AppsSettings mSettings; // 假设AppsSettings是你的设置类
private CurImageInfo mCurImageInfo;
public DialogImageAdapter(DialogPlus dlg, Context context, ImageView imageView, ArrayList<ImageItem> imageItems, int[] itemWidth_itemHeight, String outFile, OnImageSelectedListener listener) {
this.mDialogPlus = dlg;
this.context = context;
this.mImageView = imageView;
this.imageItems = imageItems;
this.itemWidth = itemWidth_itemHeight[0];
this.itemHeight = itemWidth_itemHeight[1];
this.mFilename = outFile;
this.mSettings = AppsSettings.get(); // 获取全局的AppsSettings实例
setOnImageSelectedListener(listener); // 设置监听器
}
// 定义回调接口
public interface OnImageSelectedListener {
void onImageSelected(String outFilePath, String title, int width, int height);
}
private OnImageSelectedListener mListener;
// 提供一个公共方法来设置监听器
public void setOnImageSelectedListener(OnImageSelectedListener listener) {
this.mListener = listener;
}
@Override
public int getCount() {
return imageItems.size();
}
@Override
public Object getItem(int position) {
return imageItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ImageView iv;
final ImageItem item = imageItems.get(position);
if (convertView == null) {
iv = new ImageView(context);
iv.setLayoutParams(new GridView.LayoutParams(itemWidth, itemHeight));
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setPadding(3, 3, 3, 3);
} else {
iv = (ImageView) convertView;
}
if (position == 0) {
// 设置特别的item的图标或文本
iv.setImageResource(R.drawable.ic_copy);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
// 请替换为实际的图标资源
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String outFilePath = new File(mFilename).getAbsolutePath();
mDialogPlus.dismiss();
//打开系统文件相册
showImageCropChooser(outFilePath, context.getString(R.string.dialog_select_image), itemWidth, itemHeight);
}
});
} else {
// 加载普通图片
File imgFile = new File(item.getImagePath());
if (imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
iv.setImageBitmap(myBitmap);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
FileUtils.copyFile(imgFile.getPath(), mFilename);
} catch (IOException e) {
YGOUtil.showTextToast(e + "");
}
mDialogPlus.dismiss();
mSettings.setImage(mFilename, itemWidth, itemHeight, mImageView);
}
});
}
}
return iv;
}
protected void showImageCropChooser(String outFilePath, String title, int width, int height) {
if (mListener != null) {
mListener.onImageSelected(outFilePath, title, width, height);
} else {
YGOUtil.showTextToast("no such listener");
}
}
}
\ No newline at end of file
package cn.garymb.ygomobile.bean;
public class ImageItem {
private String imagePath;
private boolean isSpecialItem;
public ImageItem(String imagePath, boolean isSpecialItem) {
this.imagePath = imagePath;
this.isSpecialItem = isSpecialItem;
}
public String getImagePath() {
return imagePath;
}
public boolean isSpecialItem() {
return isSpecialItem;
}
}
...@@ -88,11 +88,6 @@ public abstract class PreferenceFragmentPlus extends BasePreferenceFragment { ...@@ -88,11 +88,6 @@ public abstract class PreferenceFragmentPlus extends BasePreferenceFragment {
mCurImageInfo.mCurTitle = title; mCurImageInfo.mCurTitle = title;
curPreference = preference; curPreference = preference;
String defPath = new File(outFile).getParent(); String defPath = new File(outFile).getParent();
// Intent intent = FileActivity.getIntent(getActivity(), title, "*.[jpg|png|bmp]", defPath, false, FileOpenType.SelectFile);
// startActivityForResult(intent, REQUEST_CHOOSE_IMG);
// intent.addCategory(Intent.CATEGORY_OPENABLE);
// intent.setType("image/*");
ISListConfig config = new ISListConfig.Builder() ISListConfig config = new ISListConfig.Builder()
// 是否多选, 默认true // 是否多选, 默认true
.multiSelect(false) .multiSelect(false)
...@@ -112,9 +107,9 @@ public abstract class PreferenceFragmentPlus extends BasePreferenceFragment { ...@@ -112,9 +107,9 @@ public abstract class PreferenceFragmentPlus extends BasePreferenceFragment {
.titleColor(Color.WHITE) .titleColor(Color.WHITE)
// TitleBar背景色 // TitleBar背景色
.titleBgColor(Color.parseColor("#11113d")) .titleBgColor(Color.parseColor("#11113d"))
.needCrop(true)
// 裁剪大小。needCrop为true的时候配置 // 裁剪大小。needCrop为true的时候配置
.cropSize(mCurImageInfo.width, mCurImageInfo.height, mCurImageInfo.width, mCurImageInfo.height) .cropSize(mCurImageInfo.width, mCurImageInfo.height, mCurImageInfo.width, mCurImageInfo.height)
.needCrop(true)
// 第一个是否显示相机,默认true // 第一个是否显示相机,默认true
.needCamera(false) .needCamera(false)
// 最大选择图片数量,默认9 // 最大选择图片数量,默认9
...@@ -125,46 +120,6 @@ public abstract class PreferenceFragmentPlus extends BasePreferenceFragment { ...@@ -125,46 +120,6 @@ public abstract class PreferenceFragmentPlus extends BasePreferenceFragment {
ISNav.getInstance().toListActivity(this, config, REQUEST_CHOOSE_IMG); ISNav.getInstance().toListActivity(this, config, REQUEST_CHOOSE_IMG);
} }
//已弃用裁剪
/*
protected void openPhotoCut(Preference preference, Uri srcfile, CurImageInfo info) {
// 裁剪图片
if (srcfile == null || info == null) {
onChooseFileFail(preference);
return;
}
Log.i("我是srcfile", srcfile + "");
File file = new File(info.mOutFile);
Intent intent = new Intent("com.android.camera.action.CROP");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
saveimgUri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID + ".fallenstardust", file);
} else {
saveimgUri = Uri.fromFile(file);
}
intent.setDataAndType(srcfile, "image/*");
// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", info.width);
intent.putExtra("aspectY", info.height);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", info.width);
intent.putExtra("outputY", info.height);
intent.putExtra("scale", true);// 黑边
intent.putExtra("scaleUpIfNeeded", true);// 黑边
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, saveimgUri);
intent.putExtra("outputFormat", info.mJpeg ? Bitmap.CompressFormat.JPEG.toString() : Bitmap.CompressFormat.PNG.toString());
try {
startActivityForResult(Intent.createChooser(intent, info.mCurTitle), Constants.REQUEST_CUT_IMG);
} catch (Exception e) {
Log.i("我是e", e + "");
Toast.makeText(getActivity(), R.string.no_find_image_cutor, Toast.LENGTH_SHORT).show();
}
}*/
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
......
...@@ -38,7 +38,6 @@ import static cn.garymb.ygomobile.Constants.SETTINGS_AVATAR; ...@@ -38,7 +38,6 @@ import static cn.garymb.ygomobile.Constants.SETTINGS_AVATAR;
import static cn.garymb.ygomobile.Constants.SETTINGS_CARD_BG; import static cn.garymb.ygomobile.Constants.SETTINGS_CARD_BG;
import static cn.garymb.ygomobile.Constants.SETTINGS_COVER; import static cn.garymb.ygomobile.Constants.SETTINGS_COVER;
import static cn.garymb.ygomobile.Constants.URL_HOME_VERSION; import static cn.garymb.ygomobile.Constants.URL_HOME_VERSION;
import static cn.garymb.ygomobile.Constants.URL_SUPERPRE_CN_FILE_ALT;
import static cn.garymb.ygomobile.ui.home.HomeActivity.Cache_pre_release_code; import static cn.garymb.ygomobile.ui.home.HomeActivity.Cache_pre_release_code;
import static cn.garymb.ygomobile.ui.home.HomeActivity.pre_code_list; import static cn.garymb.ygomobile.ui.home.HomeActivity.pre_code_list;
import static cn.garymb.ygomobile.ui.home.HomeActivity.released_code_list; import static cn.garymb.ygomobile.ui.home.HomeActivity.released_code_list;
...@@ -63,6 +62,7 @@ import android.view.View; ...@@ -63,6 +62,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.GridView;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
...@@ -83,6 +83,8 @@ import java.util.List; ...@@ -83,6 +83,8 @@ import java.util.List;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.adapter.DialogImageAdapter;
import cn.garymb.ygomobile.bean.ImageItem;
import cn.garymb.ygomobile.bean.events.ExCardEvent; import cn.garymb.ygomobile.bean.events.ExCardEvent;
import cn.garymb.ygomobile.lite.BuildConfig; import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
...@@ -382,19 +384,17 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -382,19 +384,17 @@ public class SettingFragment extends PreferenceFragmentPlus {
View viewDialog = dialog.getContentView(); View viewDialog = dialog.getContentView();
ImageView avatar1 = viewDialog.findViewById(R.id.me); ImageView avatar1 = viewDialog.findViewById(R.id.me);
ImageView avatar2 = viewDialog.findViewById(R.id.opponent); ImageView avatar2 = viewDialog.findViewById(R.id.opponent);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_AVATAR_ME, CORE_SKIN_AVATAR_SIZE[0], CORE_SKIN_AVATAR_SIZE[1], avatar1); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_AVATAR_ME, CORE_SKIN_AVATAR_SIZE[0], CORE_SKIN_AVATAR_SIZE[1], avatar1);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_AVATAR_OPPONENT, CORE_SKIN_AVATAR_SIZE[0], CORE_SKIN_AVATAR_SIZE[1], avatar2); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_AVATAR_OPPONENT, CORE_SKIN_AVATAR_SIZE[0], CORE_SKIN_AVATAR_SIZE[1], avatar2);
avatar1.setOnClickListener((v) -> { avatar1.setOnClickListener((v) -> {
//打开系统文件相册 //打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_AVATAR_ME).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_AVATAR_ME).getAbsolutePath();
showImageDialog(preference, outFile, true, CORE_SKIN_AVATAR_SIZE[0], CORE_SKIN_AVATAR_SIZE[1]); DialogloadImages(preference, avatar1, mSettings.getAvatarPath(), CORE_SKIN_AVATAR_SIZE, outFile);
dialog.dismiss();
}); });
avatar2.setOnClickListener((v) -> { avatar2.setOnClickListener((v) -> {
//打开系统文件相册 //打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_AVATAR_OPPONENT).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_AVATAR_OPPONENT).getAbsolutePath();
showImageDialog(preference, outFile, true, CORE_SKIN_AVATAR_SIZE[0], CORE_SKIN_AVATAR_SIZE[1]); DialogloadImages(preference, avatar2, mSettings.getAvatarPath(), CORE_SKIN_AVATAR_SIZE, outFile);
dialog.dismiss();
}); });
} else if (SETTINGS_COVER.equals(key)) { } else if (SETTINGS_COVER.equals(key)) {
//显示卡背图片对话框 //显示卡背图片对话框
...@@ -405,19 +405,15 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -405,19 +405,15 @@ public class SettingFragment extends PreferenceFragmentPlus {
View viewDialog = dialog.getContentView(); View viewDialog = dialog.getContentView();
ImageView cover1 = viewDialog.findViewById(R.id.cover1); ImageView cover1 = viewDialog.findViewById(R.id.cover1);
ImageView cover2 = viewDialog.findViewById(R.id.cover2); ImageView cover2 = viewDialog.findViewById(R.id.cover2);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_COVER, CORE_SKIN_CARD_COVER_SIZE[0], CORE_SKIN_CARD_COVER_SIZE[1], cover1); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_COVER, CORE_SKIN_CARD_COVER_SIZE[0], CORE_SKIN_CARD_COVER_SIZE[1], cover1);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_COVER2, CORE_SKIN_CARD_COVER_SIZE[0], CORE_SKIN_CARD_COVER_SIZE[1], cover2); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_COVER2, CORE_SKIN_CARD_COVER_SIZE[0], CORE_SKIN_CARD_COVER_SIZE[1], cover2);
cover1.setOnClickListener((v) -> { cover1.setOnClickListener((v) -> {
//打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_COVER).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_COVER).getAbsolutePath();
showImageDialog(preference, outFile, true, CORE_SKIN_CARD_COVER_SIZE[0], CORE_SKIN_CARD_COVER_SIZE[1]); DialogloadImages(preference, cover1, mSettings.getCoverPath(), CORE_SKIN_CARD_COVER_SIZE, outFile);
dialog.dismiss();
}); });
cover2.setOnClickListener((v) -> { cover2.setOnClickListener((v) -> {
//打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_COVER2).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_COVER2).getAbsolutePath();
showImageDialog(preference,outFile, true, CORE_SKIN_CARD_COVER_SIZE[0], CORE_SKIN_CARD_COVER_SIZE[1]); DialogloadImages(preference, cover2, mSettings.getCoverPath(), CORE_SKIN_CARD_COVER_SIZE, outFile);
dialog.dismiss();
}); });
} else if (SETTINGS_CARD_BG.equals(key)) { } else if (SETTINGS_CARD_BG.equals(key)) {
//显示背景图片对话框 //显示背景图片对话框
...@@ -429,27 +425,23 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -429,27 +425,23 @@ public class SettingFragment extends PreferenceFragmentPlus {
ImageView bg = viewDialog.findViewById(R.id.bg); ImageView bg = viewDialog.findViewById(R.id.bg);
ImageView bg_menu = viewDialog.findViewById(R.id.bg_menu); ImageView bg_menu = viewDialog.findViewById(R.id.bg_menu);
ImageView bg_deck = viewDialog.findViewById(R.id.bg_deck); ImageView bg_deck = viewDialog.findViewById(R.id.bg_deck);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_BG, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1], bg); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_BG, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1], bg);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_BG_MENU, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1], bg_menu); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_BG_MENU, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1], bg_menu);
setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_BG_DECK, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1], bg_deck); mSettings.setImage(mSettings.getCoreSkinPath() + "/" + Constants.CORE_SKIN_BG_DECK, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1], bg_deck);
bg.setOnClickListener((v) -> { bg.setOnClickListener((v) -> {
//打开系统文件相册 //打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_BG).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_BG).getAbsolutePath();
showImageDialog(preference,outFile, DialogloadImages(preference, bg, mSettings.getBgPath(), CORE_SKIN_BG_SIZE, outFile);
true, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1]);
dialog.dismiss();
}); });
bg_menu.setOnClickListener((v) -> { bg_menu.setOnClickListener((v) -> {
//打开系统文件相册 //打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_BG_MENU).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_BG_MENU).getAbsolutePath();
showImageDialog(preference, outFile, true, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1]); DialogloadImages(preference, bg, mSettings.getBgPath(), CORE_SKIN_BG_SIZE, outFile);
dialog.dismiss();
}); });
bg_deck.setOnClickListener((v) -> { bg_deck.setOnClickListener((v) -> {
//打开系统文件相册 //打开系统文件相册
String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_BG_DECK).getAbsolutePath(); String outFile = new File(mSettings.getCoreSkinPath(), Constants.CORE_SKIN_BG_DECK).getAbsolutePath();
showImageDialog(preference, outFile, true, CORE_SKIN_BG_SIZE[0], CORE_SKIN_BG_SIZE[1]); DialogloadImages(preference, bg, mSettings.getBgPath(), CORE_SKIN_BG_SIZE, outFile);
dialog.dismiss();
}); });
} else if (PREF_USE_EXTRA_CARD_CARDS.equals(key)) { } else if (PREF_USE_EXTRA_CARD_CARDS.equals(key)) {
CheckBoxPreference checkBoxPreference = (CheckBoxPreference) preference; CheckBoxPreference checkBoxPreference = (CheckBoxPreference) preference;
...@@ -507,34 +499,6 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -507,34 +499,6 @@ public class SettingFragment extends PreferenceFragmentPlus {
} }
} }
private void showImageDialog(Preference preference, String outFile, boolean isJpeg, int outWidth, int outHeight) {
final ImageView imageView = new ImageView(getContext());
FrameLayout frameLayout = new FrameLayout(getContext());
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
frameLayout.addView(imageView, layoutParams);
showImageCropChooser(preference, getString(R.string.dialog_select_image), outFile, isJpeg, outWidth, outHeight);
File img = new File(outFile);
if (img.exists()) {
GlideCompat.with(getContext()).load(img).signature(new MediaStoreSignature("image/*", img.lastModified(), 0))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(outWidth, outHeight)
.into(imageView);
}
}
public void setImage(String outFile, int outWidth, int outHeight, ImageView imageView) {
File img = new File(outFile);
if (img.exists()) {
GlideCompat.with(getContext()).load(img).signature(new MediaStoreSignature("image/*", img.lastModified(), 0))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(outWidth, outHeight)
.into(imageView);
}
}
private void copyDataBase(Preference preference, String file) { private void copyDataBase(Preference preference, String file) {
CheckBoxPreference checkBoxPreference = (CheckBoxPreference) preference; CheckBoxPreference checkBoxPreference = (CheckBoxPreference) preference;
Dialog dlg = DialogPlus.show(getContext(), null, getString(R.string.copy_databse)); Dialog dlg = DialogPlus.show(getContext(), null, getString(R.string.copy_databse));
...@@ -716,5 +680,41 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -716,5 +680,41 @@ public class SettingFragment extends PreferenceFragmentPlus {
} }
} }
private void DialogloadImages(Preference preference, ImageView imageView, String imagePath, int[] itemWidth_itemHeight, String outFile) {
final DialogPlus dlg = new DialogPlus(getContext());
dlg.setContentView(R.layout.dialog_image_select);
dlg.setTitle(R.string.dialog_select_image);
GridView vImgSel = dlg.findViewById(R.id.gridView);
ArrayList<ImageItem> items = new ArrayList<>();
// 添加相册选择item
items.add(new ImageItem("album_item", true));
File directory = new File(imagePath);
if (directory.isDirectory()) {
File[] files = directory.listFiles();
for (File file : files) {
if (file.isFile() && (file.getName().endsWith(".jpg") || file.getName().endsWith(".png"))) {
items.add(new ImageItem(file.getAbsolutePath(), false));
}
}
}
// 从Intent中获取传递的图片路径
if (imagePath != null) {
// 设置适配器
DialogImageAdapter dialogImageAdapter = new DialogImageAdapter(dlg, getContext(), imageView, items, itemWidth_itemHeight, outFile, new DialogImageAdapter.OnImageSelectedListener() {
@Override
public void onImageSelected(String outFilePath, String title, int width, int height) {
showImageCropChooser(preference, title, outFile, true, itemWidth_itemHeight[0], itemWidth_itemHeight[1]);
}
});
vImgSel.setAdapter(dialogImageAdapter);
} else {
dlg.dismiss();
showImageCropChooser(preference, getString(R.string.dialog_select_image), outFile, true, itemWidth_itemHeight[0], itemWidth_itemHeight[1]);
}
dlg.show();
}
} }
<!-- res/layout/activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="90dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:stretchMode="columnWidth"
android:padding="5dp" />
</RelativeLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment