【问题标题】:Set image From URL as wallpaper - Glide Library -将来自 URL 的图像设置为墙纸 - Glide Library -
【发布时间】:2017-05-04 08:56:11
【问题描述】:

我正在尝试使用 Glide 库 创建一个壁纸应用程序,在我的应用程序中我有 4 个类别,每个类别都有一系列图像,通过它们的 URL 显示,如下图所示:

而当我点击图片时会以这种格式出现:

设置为墙纸我有问题我尝试了所有方法但对我不起作用,这是我的 file.java 负责获取图片并显示它。

public class Pop extends Activity {
int width,height;
String url;
LinearLayout llDownloadWallpaper,llsetwallpapers;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pop);
    llDownloadWallpaper = (LinearLayout)findViewById(R.id.llDownloadWallpaper);
    llsetwallpapers = (LinearLayout)findViewById(R.id.llSetWallpaper);
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    this.width = dm.widthPixels;
    this.height = dm.heightPixels;
    getWindow().setLayout((int) (((double) this.width) * 0.9d), (int) (((double) this.height) * 0.75d));
    getIntent().getSerializableExtra("WallpaperURL");
    this.url = (String)getIntent().getSerializableExtra("WallpaperURL");
    Glide.with(getApplicationContext()).load(this.url).into((ImageView)findViewById(R.id.imageSelectTo));
    llDownloadWallpaper.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // download image
        }
    });
    final ImageView userImageView = (ImageView) findViewById(R.id.imageSelectTo);
    llsetwallpapers.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // set as wallpapers
           /* try {
                WallpaperManager.getInstance(getApplicationContext()).setBitmap(Glide.with(getApplicationContext()).load(url).asBitmap().into(width,height).get());
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }*/
          }
        });
     }
  }

XML

?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linealL"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#65000000">

<ImageView
    android:id="@+id/imageSelectTo"
    android:layout_alignParentStart="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true" />
<!-- Set as wallpaper button -->
<LinearLayout
    android:id="@+id/llSetWallpaper"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="10dp"
    android:layout_marginStart="10dp"
    android:background="@drawable/btn_rounded_corner"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:layout_marginLeft="10dp"
    android:layout_alignParentLeft="true">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:text="@string/SetAsWallpaper"
        android:textColor="@color/white"
        android:textSize="18sp" />
</LinearLayout>

<!-- Download wallpaper button -->

<LinearLayout
    android:id="@+id/llDownloadWallpaper"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="10dp"
    android:layout_marginEnd="10dp"
    android:background="@drawable/btn_rounded_corner"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:text="@string/Download"
        android:textColor="@color/white"
        android:textSize="18sp" />
   </LinearLayout>
</RelativeLayout>

【问题讨论】:

    标签: android imageview android-glide


    【解决方案1】:

    在您的代码中进行此更改。

    llsetwallpapers.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          Glide.with(this)
        .load(path)
        .asBitmap()
        .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, GlideAnimation<? super 
                      Bitmap> glideAnimation) {
    
    
     WallpaperManager.getInstance(getApplicationContext()).setBitmap(resource);
    
            }
        });
    
        });
     }
    

    【讨论】:

    • thaaaaaaaaaaaaaanks 你拯救了我的一天
    • 抱歉打扰了,如果您知道如何添加下载功能,请告知
    • 不推荐使用的方法
    • 你能帮我吗?我卡在下载图像并将其存储在本地目录中。请帮帮我
    【解决方案2】:

    我没有给你确切的答案,但我会给你一些想法

    首先点击获取点击图片的网址,然后将该图片设置为背景图片,像这样。

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
    
            WallpaperManager wpm = WallpaperManager.getInstance(context);
            InputStream ins = null;
            try {
                ins = new URL("http://cdn.wonderfulengineering.com/wp-content/uploads/2014/07/inspiring-creative-design-mobile-phone-wallpapers.jpg").openStream();
                wpm.setStream(ins);
            } catch (IOException e) {
                e.printStackTrace();
            }
    

    另外别忘了给清单文件添加权限

    <uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
    

    【讨论】:

      【解决方案3】:

      就我而言,它的工作原理,

         wallpaperManager=WallpaperManager.getInstance(getApplicationContext());
         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                      .permitAll().build();
         StrictMode.setThreadPolicy(policy);
         
         // Button Onclick
      
         setWallpaper.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                      InputStream ins = null;
                      try {
                            ins = new URL(url).openStream();
                            wallpaperManager.setStream(ins);
                      } catch (IOException e) {
                            e.printStackTrace();
                      }
                      FancyToast.makeText(getApplicationContext(), "Set Successfully", 
                      FancyToast.LENGTH_SHORT, FancyToast.SUCCESS, false).show();
                  }
               });
      

      请记得在 AndroidManifest.xml 文件中添加 setWallpaper 和 internet 权限。

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.SET_WALLPAPER" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多