diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1be0e86..bd0726d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,7 +16,7 @@ android { minSdk = 23 targetSdk = 34 versionCode = 2 - versionName = "1.0.1" + versionName = "1.0.3" setProperty("archivesBaseName", "Shiny Wallpaper_V" + versionName + "(${versionCode})_$timestamp") testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cdc2c60..01435e9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -41,6 +41,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/com/wallpaper/shinywallpaper/SecondSub/FullScreenImageActivity.java b/app/src/main/java/com/wallpaper/shinywallpaper/SecondSub/FullScreenImageActivity.java index 77b3941..225528e 100644 --- a/app/src/main/java/com/wallpaper/shinywallpaper/SecondSub/FullScreenImageActivity.java +++ b/app/src/main/java/com/wallpaper/shinywallpaper/SecondSub/FullScreenImageActivity.java @@ -6,9 +6,12 @@ import android.app.WallpaperManager; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; +import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; +import android.os.Build; import android.os.Bundle; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; @@ -21,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.google.android.material.bottomsheet.BottomSheetDialog; import com.wallpaper.shinywallpaper.Application.MainApplication; import com.wallpaper.shinywallpaper.Database.AppDataBase; import com.wallpaper.shinywallpaper.Database.FavoriteImage; @@ -32,6 +36,12 @@ import com.wallpaper.shinywallpaper.Utils.GallerySaver; import com.wallpaper.shinywallpaper.topon.AdManager; import com.wallpaper.shinywallpaper.topon.onActionListener; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Method; + public class FullScreenImageActivity extends AppCompatActivity { private ImageView fullScreenImageView; @@ -138,8 +148,7 @@ public class FullScreenImageActivity extends AppCompatActivity { AdManager.showTopOn(FullScreenImageActivity.this, new onActionListener() { @Override public void onAction() { - showProgress(); - setWallpaper(); + showCustomBottomSheetDialog(); } }); @@ -162,6 +171,44 @@ public class FullScreenImageActivity extends AppCompatActivity { } + private void showCustomBottomSheetDialog() { + BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this); + View dialogView = LayoutInflater.from(this).inflate(R.layout.set_dialog, null); + + bottomSheetDialog.setCanceledOnTouchOutside(false); + + dialogView.findViewById(R.id.both).setOnClickListener(v -> { + // 处理选项 1 + showProgress(); + setWallpaper(); + //销毁BottomSheetDialog对象 + bottomSheetDialog.dismiss(); + }); + + dialogView.findViewById(R.id.lock).setOnClickListener(v -> { + // 处理选项 2 + showProgress(); + setWallpaperLock(); + bottomSheetDialog.dismiss(); + }); + + dialogView.findViewById(R.id.desktop).setOnClickListener(v -> { + // 处理取消按钮 + showProgress(); + setWallpaperDeskTop(); + bottomSheetDialog.dismiss(); + }); + + dialogView.findViewById(R.id.cancel).setOnClickListener(v -> { + + // 处理取消按钮 + bottomSheetDialog.dismiss(); + }); + + bottomSheetDialog.setContentView(dialogView); + bottomSheetDialog.show(); + } + private void setWallpaper() { new Thread(new Runnable() { @Override @@ -194,6 +241,78 @@ public class FullScreenImageActivity extends AppCompatActivity { }).start(); } + private void setWallpaperLock() { + new Thread(new Runnable() { + @Override + public void run() { + try { + fullScreenImageView.setDrawingCacheEnabled(true); + Bitmap bitmap = ((BitmapDrawable) fullScreenImageView.getDrawable()).getBitmap(); + WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); + //判断版本,高于24可以单独设置,否则全部设置 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + wallpaperManager.setBitmap(bitmap, null, true, WallpaperManager.FLAG_LOCK); + }else { + wallpaperManager.setBitmap(bitmap); + } + + runOnUiThread(new Runnable() { + @Override + public void run() { + hideProgress(); + setWallpaperButton.setEnabled(true); // Re-enable the button + Toast.makeText(getApplicationContext(), StaticValue.key_wallpaper_setting_is_successful, Toast.LENGTH_SHORT).show(); + } + }); + } catch (Exception e) { + e.printStackTrace(); + runOnUiThread(new Runnable() { + @Override + public void run() { + hideProgress(); + Toast.makeText(getApplicationContext(), StaticValue.key_failed_to_set_wallpaper, Toast.LENGTH_SHORT).show(); + } + }); + } + } + }).start(); + } + + private void setWallpaperDeskTop() { + new Thread(new Runnable() { + @Override + public void run() { + try { + fullScreenImageView.setDrawingCacheEnabled(true); + Bitmap bitmap = ((BitmapDrawable) fullScreenImageView.getDrawable()).getBitmap(); + WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); + //判断版本,高于24可以单独设置,否则全部设置 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + wallpaperManager.setBitmap(bitmap, null, true, WallpaperManager.FLAG_SYSTEM); + }else { + wallpaperManager.setBitmap(bitmap); + } + runOnUiThread(new Runnable() { + @Override + public void run() { + hideProgress(); + setWallpaperButton.setEnabled(true); // Re-enable the button + Toast.makeText(getApplicationContext(), StaticValue.key_wallpaper_setting_is_successful, Toast.LENGTH_SHORT).show(); + } + }); + } catch (Exception e) { + e.printStackTrace(); + runOnUiThread(new Runnable() { + @Override + public void run() { + hideProgress(); + Toast.makeText(getApplicationContext(), StaticValue.key_failed_to_set_wallpaper, Toast.LENGTH_SHORT).show(); + } + }); + } + } + }).start(); + } private void toFullScreen() { Intent intent = new Intent(this, SubFullScreenImageActivity.class); diff --git a/app/src/main/res/layout/set_dialog.xml b/app/src/main/res/layout/set_dialog.xml new file mode 100644 index 0000000..3bd39d0 --- /dev/null +++ b/app/src/main/res/layout/set_dialog.xml @@ -0,0 +1,52 @@ + + + +