将 URL 中的图片设置为墙纸 - Glide Library -
Set image From URL as wallpaper - Glide Library -
我正在尝试使用 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>
在您的代码中进行此更改。
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);
}
});
});
}
我不会给你确切的答案,但我会给你一些想法
首先点击获取点击图像的URL,然后将该图像设置为背景图像。
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>
在我的例子中它起作用了,
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" />
使用 Glid4+ 我是这样做的:
private void setAsWallpaper() {
Glide.with(requireContext())
.asBitmap()
.load(listItem.get(position).getWallpaperImage())
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
try {
WallpaperManager.getInstance(requireContext()).setBitmap(resource);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
我正在尝试使用 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>
在您的代码中进行此更改。
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);
}
});
});
}
我不会给你确切的答案,但我会给你一些想法
首先点击获取点击图像的URL,然后将该图像设置为背景图像。
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>
在我的例子中它起作用了,
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" />
使用 Glid4+ 我是这样做的:
private void setAsWallpaper() {
Glide.with(requireContext())
.asBitmap()
.load(listItem.get(position).getWallpaperImage())
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
try {
WallpaperManager.getInstance(requireContext()).setBitmap(resource);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}