将图像壁纸设置为适应屏幕”

huangapple go评论118阅读模式
英文:

set image wallpaper to fit screen "

问题

  1. item_home_image = findViewById(R.id.item_home_image);
  2. item_home_image.setOnClickListener(new View.OnClickListener() {
  3. @Override
  4. public void onClick(View view) {
  5. if (checkPermission()) {
  6. final Intent intent = getIntent();
  7. String url = intent.getStringExtra("imageUrl");
  8. Picasso.with(PicassoDisplayImageAdapter.this).load(url).into(new Target() {
  9. @RequiresApi(api = Build.VERSION_CODES.N)
  10. @Override
  11. public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
  12. WallpaperManager wallpaperManager = WallpaperManager.getInstance(PicassoDisplayImageAdapter.this);
  13. try {
  14. wallpaperManager.setBitmap(bitmap);
  15. } catch (IOException ex) {
  16. ex.printStackTrace();
  17. }
  18. Toasty.normal(PicassoDisplayImageAdapter.this, "Background changed successfully", Toast.LENGTH_SHORT).show();
  19. }
  20. @Override
  21. public void onBitmapFailed(final Drawable errorDrawable) {
  22. Toasty.error(PicassoDisplayImageAdapter.this, "Image loading failed", Toast.LENGTH_SHORT).show();
  23. }
  24. @Override
  25. public void onPrepareLoad(final Drawable placeHolderDrawable) {
  26. Toasty.normal(PicassoDisplayImageAdapter.this, "Loading...", Toast.LENGTH_SHORT).show();
  27. }
  28. });
  29. }
  30. }
  31. });
英文:

I want to set the image to fit all screen when the user makes it as background for his device, I tried many codes but it does not work.
Here is my code

  1. item_home_image = findViewById(R.id.item_home_image);
  2. item_home_image.setOnClickListener(new View.OnClickListener() {
  3. @Override
  4. public void onClick(View view) {
  5. if (checkPermission()) {
  6. final Intent intent = getIntent();
  7. String url = intent.getStringExtra("imageUrl");
  8. Picasso.with(PicassoDisplayImageAdapter.this).load(url).into(new Target() {
  9. @RequiresApi(api = Build.VERSION_CODES.N)
  10. @Override
  11. public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
  12. WallpaperManager wallpaperManager = WallpaperManager.getInstance(PicassoDisplayImageAdapter.this);
  13. try {
  14. wallpaperManager.setBitmap(bitmap);
  15. } catch (IOException ex) {
  16. ex.printStackTrace();
  17. }
  18. Toasty.normal(PicassoDisplayImageAdapter.this, "تم تغيير الخلفية بنجاح", Toast.LENGTH_SHORT).show();
  19. }
  20. @Override
  21. public void onBitmapFailed(final Drawable errorDrawable) {
  22. Toasty.error(PicassoDisplayImageAdapter.this, "فشل تحميل الصورة", Toast.LENGTH_SHORT).show();
  23. }
  24. @Override
  25. public void onPrepareLoad(final Drawable placeHolderDrawable) {
  26. Toasty.normal(PicassoDisplayImageAdapter.this, "جاري التحميل", Toast.LENGTH_SHORT).show();
  27. }
  28. });
  29. }
  30. }
  31. });

答案1

得分: 1

试试这个:

  1. DisplayMetrics metrics = new DisplayMetrics();
  2. getWindowManager().getDefaultDisplay().getMetrics(metrics);
  3. int height = metrics.heightPixels;
  4. int width = metrics.widthPixels;
  5. Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
  6. try {
  7. wallpaperManager.setBitmap(newBitmap);
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
英文:

Try this:

  1. DisplayMetrics metrics = new DisplayMetrics();
  2. getWindowManager().getDefaultDisplay().getMetrics(metrics);
  3. int height = metrics.heightPixels;
  4. int width = metrics.widthPixels;
  5. Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
  6. try {
  7. wallpaperManager.setBitmap(newBitmap);
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
  11. </details>
  12. # 答案2
  13. **得分**: 1
  14. ```java
  15. // 以下为翻译好的内容:
  16. // 使用`wallpaperManager`设置的位图可能与**显示大小**不同,因此在传递给`wallpaperManager`之前需要对该位图进行缩放。
  17. // 尝试以下操作:
  18. item_home_image = findViewById(R.id.item_home_image);
  19. item_home_image.setOnClickListener(new View.OnClickListener() {
  20. @Override
  21. public void onClick(View view) {
  22. if (checkPermission()) {
  23. final Intent intent = getIntent();
  24. String url = intent.getStringExtra("imageUrl");
  25. Picasso.with(PicassoDisplayImageAdapter.this).load(url).into(new Target() {
  26. @RequiresApi(api = Build.VERSION_CODES.N)
  27. @Override
  28. public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
  29. WallpaperManager wallpaperManager = WallpaperManager.getInstance(PicassoDisplayImageAdapter.this);
  30. try {
  31. int height = getResources().getDisplayMetrics().heightPixels;
  32. int width = getResources().getDisplayMetrics().widthPixels;
  33. bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
  34. wallpaperManager.setBitmap(bitmap);
  35. } catch (IOException ex) {
  36. ex.printStackTrace();
  37. }
  38. Toasty.normal(PicassoDisplayImageAdapter.this, "تم تغيير الخلفية بنجاح", Toast.LENGTH_SHORT).show();
  39. }
  40. @Override
  41. public void onBitmapFailed(final Drawable errorDrawable) {
  42. Toasty.error(PicassoDisplayImageAdapter.this, "فشل تحميل الصورة", Toast.LENGTH_SHORT).show();
  43. }
  44. @Override
  45. public void onPrepareLoad(final Drawable placeHolderDrawable) {
  46. Toasty.normal(PicassoDisplayImageAdapter.this, "جاري التحميل", Toast.LENGTH_SHORT).show();
  47. }
  48. });
  49. }
  50. }
  51. });
英文:

The bitmap that are you setting with wallpaperManager may not same as the Display size so, you need to scale that bitmap before passing to wallpaperManager

Try With

  1. item_home_image = findViewById(R.id.item_home_image);
  2. item_home_image.setOnClickListener(new View.OnClickListener() {
  3. @Override
  4. public void onClick(View view) {
  5. if (checkPermission()) {
  6. final Intent intent = getIntent();
  7. String url = intent.getStringExtra(&quot;imageUrl&quot;);
  8. Picasso.with(PicassoDisplayImageAdapter.this).load(url).into(new Target() {
  9. @RequiresApi(api = Build.VERSION_CODES.N)
  10. @Override
  11. public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
  12. WallpaperManager wallpaperManager = WallpaperManager.getInstance(PicassoDisplayImageAdapter.this);
  13. try {
  14. int height = getResources().getDisplayMetrics().heightPixels;
  15. int width = getResources().getDisplayMetrics().widthPixels;
  16. bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
  17. wallpaperManager.setBitmap(bitmap);
  18. } catch (IOException ex) {
  19. ex.printStackTrace();
  20. }
  21. Toasty.normal(PicassoDisplayImageAdapter.this, &quot;تم تغيير الخلفية بنجاح&quot;, Toast.LENGTH_SHORT).show();
  22. }
  23. @Override
  24. public void onBitmapFailed(final Drawable errorDrawable) {
  25. Toasty.error(PicassoDisplayImageAdapter.this, &quot;فشل تحميل الصورة&quot;, Toast.LENGTH_SHORT).show();
  26. }
  27. @Override
  28. public void onPrepareLoad(final Drawable placeHolderDrawable) {
  29. Toasty.normal(PicassoDisplayImageAdapter.this, &quot;جاري التحميل&quot;, Toast.LENGTH_SHORT).show();
  30. }
  31. });
  32. }
  33. }
  34. });

答案3

得分: 0

你可以使用这个 ImageView 属性

android:scaleType="fitXY"

更多 链接

英文:

You can use this ImageView attributes

  1. android:scaleType=&quot;fitXY&quot;

more link

huangapple
  • 本文由 发表于 2020年5月30日 11:39:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/62097505.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定