Java 我想在gallery中保存图像并与外部应用程序共享
我设计了一个应用程序,使用recyclerView显示图像。 我不是在点击摄像头中的图像,它是从json api下载的。 activity_main.xmlJava 我想在gallery中保存图像并与外部应用程序共享,java,android,json,android-layout,adapter,Java,Android,Json,Android Layout,Adapter,我设计了一个应用程序,使用recyclerView显示图像。 我不是在点击摄像头中的图像,它是从json api下载的。 activity_main.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/re
<?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"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
tools:context="com.bjp.app.bjpapp.MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</ScrollView>
</RelativeLayout>
适配器类文件代码在这里
Image_Adaper.java
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
private List<Data> data;
private Context context;
private Bitmap bitmap;
String url1;
String filepath;
public ImageAdapter(List<Data> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_design,parent,false);
return new ImageAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final Data data1=data.get(position);
url1=data1.getImgUrl();
ImageView imageView=holder.imageView;
Glide.with(context)
.load(data1.getImgUrl())
.placeholder(R.drawable.logo)
.into(imageView);
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public ImageView imageView;
public ImageButton share,download;
public ViewHolder(final View itemView) {
super(itemView);
imageView=(ImageView)itemView.findViewById(R.id.image);
share=(ImageButton)itemView.findViewById(R.id.share);
download=(ImageButton)itemView.findViewById(R.id.download);
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position=getAdapterPosition();
Data data2=data.get(position);
// i want to share a image with social sites
Toast.makeText(context,"Product id "+data2+" btn working",Toast.LENGTH_LONG).show();
}
});
download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"download btn working"+url1,Toast.LENGTH_LONG).show();
}
});
}
}
}
公共类ImageAdapter扩展了RecyclerView.Adapter{
私人名单数据;
私人语境;
私有位图;
字符串url1;
字符串文件路径;
公共ImageAdapter(列表数据、上下文){
这个数据=数据;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View-View=LayoutFlater.from(parent.getContext()).flate(R.layout.layout\u design,parent,false);
返回新的ImageAdapter.ViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
最终数据data1=数据获取(位置);
url1=data1.getImgUrl();
ImageView ImageView=holder.ImageView;
带(上下文)滑动
.load(data1.getImgUrl())
.占位符(R.可绘制.徽标)
.进入(图像视图);
}
@凌驾
public int getItemCount(){
返回data.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共影像视图;
公共图像按钮共享,下载;
公共视图持有者(最终视图项视图){
超级(项目视图);
imageView=(imageView)itemView.findViewById(R.id.image);
share=(ImageButton)itemView.findViewById(R.id.share);
下载=(ImageButton)itemView.findViewById(R.id.download);
share.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
Data data2=Data.get(位置);
//我想与社交网站共享一张图片
Toast.makeText(上下文,“产品id”+data2+“btn工作”,Toast.LENGTH_LONG.show();
}
});
下载.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(上下文,“下载btn工作”+url1,Toast.LENGTH_LONG.show();
}
});
}
}
}
我附上邮件布局截图,以便于更多了解
应在单击下载按钮时下载图像。
而且图像应该可以共享到社交应用程序。
我尝试了一些代码,但不起作用。
伙计们,请帮我找到解决办法。
先谢谢你。
请参阅下面的链接,从图像视图下载或保存图像 用于共享图像,请参见下面的链接
如果你在谷歌上搜索,可以找到很多例子。你是如何保存和分享这张图片的?我在OnClickListener中没有看到任何代码,字符串root=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()可能重复;File myDir=新文件(root+“/saved_images_1”);int n=10000;n=发电机。下一个(n);字符串fname=“Image-”+n+“.jpg”;File File=新文件(myDir,fname);如果(file.exists())file.delete();请尝试{FileOutputStream out=new FileOutputStream(file);finalBitmap.compress(Bitmap.CompressFormat.JPEG,90,out);out.flush();out.close();@HemantParmar,不,我不是从相机捕获图像。我是从api下载图像并在recyclerView上显示。
public class Data implements Serializable {
private int id;
private String imgUrl;
public Data(int id, String imgUrl) {
this.id = id;
this.imgUrl = imgUrl;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
}
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
private List<Data> data;
private Context context;
private Bitmap bitmap;
String url1;
String filepath;
public ImageAdapter(List<Data> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_design,parent,false);
return new ImageAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final Data data1=data.get(position);
url1=data1.getImgUrl();
ImageView imageView=holder.imageView;
Glide.with(context)
.load(data1.getImgUrl())
.placeholder(R.drawable.logo)
.into(imageView);
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public ImageView imageView;
public ImageButton share,download;
public ViewHolder(final View itemView) {
super(itemView);
imageView=(ImageView)itemView.findViewById(R.id.image);
share=(ImageButton)itemView.findViewById(R.id.share);
download=(ImageButton)itemView.findViewById(R.id.download);
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position=getAdapterPosition();
Data data2=data.get(position);
// i want to share a image with social sites
Toast.makeText(context,"Product id "+data2+" btn working",Toast.LENGTH_LONG).show();
}
});
download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"download btn working"+url1,Toast.LENGTH_LONG).show();
}
});
}
}
}