显示本地图片以及网络图片
图片显示:
RequestOptions options = new RequestOptions().centerCrop().placeholder(R.drawable.abc_vector_test).error(R.drawable.ic_launcher_background).priority(Priority.HIGH).diskCacheStrategy(DiskCacheStrategy.NONE);
//用glide或者picasso都可以,用glide的时候需要申请requestopteins Glide.with(mContext).load("https://alifei04.cfp.cn/creative/vcg/veer/1600water/veer-303764513.jpg").apply(options).into(imageView);
Picasso.with(mContext).load("https://alifei04.cfp.cn/creative/vcg/veer/1600water/veer-303764513.jpg").resize(300, 300).into(imageView);
目录:
MainActivity
package com.example.showpicture;import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;import com.example.showpicture.showLocalPicture.ShowLocalPictureFragment;
import com.example.showpicture.showNetWorkPicture.ShowNetWorkPictureFragment;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = MainActivity.class.getSimpleName();private Button btnLocal;private Button btnNet;private FragmentManager fragmentManager;private FragmentTransaction transaction;private Fragment fragment;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initFragment();}private void initView() {btnLocal = findViewById(R.id.btn_local);btnNet = findViewById(R.id.btn_net);btnLocal.setOnClickListener(this::onClick);btnNet.setOnClickListener(this::onClick);}private void initFragment() {fragmentManager = getSupportFragmentManager();}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.btn_local:Log.d(TAG, "onClick() btn_local"+fragment);if (fragment!=null){transaction.remove(fragment);}transaction = fragmentManager.beginTransaction();fragment = new ShowLocalPictureFragment();transaction.add(R.id.fragment,fragment);transaction.commit();break;case R.id.btn_net:Log.d(TAG, "onClick() btn_net"+fragment);if (fragment!=null){transaction.remove(fragment);}transaction = fragmentManager.beginTransaction();fragment = new ShowNetWorkPictureFragment();transaction.add(R.id.fragment,fragment);transaction.commit();break;}}
}
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"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:id="@+id/main_activity"android:orientation="vertical"><Buttonandroid:id="@+id/btn_local"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="100px"android:text="local"/><Buttonandroid:id="@+id/btn_net"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginRight="100px"android:text="net"/><FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/fragment"android:layout_below="@+id/btn_local"></FrameLayout>
</RelativeLayout>
AndroidManifest.xml权限
<!--在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions" /><!-- 往SDCard写入数据权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 从SDCard读取数据权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET"/>
build.gradle:
显示网络图片需要加载的jar包,picasso或者glide都可以
implementation 'com.squareup.picasso:picasso:2.5.2'implementation 'com.github.bumptech.glide:glide:4.8.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
一、本地图片+recyclerView
fragment:
package com.example.showpicture.showLocalPicture;import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;import com.example.showpicture.R;
import com.example.showpicture.showLocalPicture.adapter.RecyclerViewAdapter;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;public class ShowLocalPictureFragment extends Fragment {private static final String TAG = ShowLocalPictureFragment.class.getSimpleName();private Context mContext;private RecyclerView recyclerView;private RecyclerViewAdapter adapter;private ImageView imageView;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_local,container,false);}@Overridepublic void onStart() {super.onStart();mContext = getContext();checkNeedPermissions();initView();}private void initView() {List<String> imgList = new ArrayList<>();LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false);recyclerView = getView().findViewById(R.id.recyclerView);recyclerView.setLayoutManager(linearLayoutManager);recyclerView.setLayoutManager(new GridLayoutManager(mContext,4));File file = new File(Environment.getExternalStorageDirectory()+"/textPic");Log.d(TAG, "initView() file.listFiles();"+ file.listFiles().length);File[] picFiles = file.listFiles();for (int i = 0; i<picFiles.length;i++){imgList.add(picFiles[i].getPath());}adapter = new RecyclerViewAdapter(mContext,imgList);recyclerView.setAdapter(adapter);recyclerView.setNestedScrollingEnabled(false);
//}private void checkNeedPermissions(){if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED|| ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {//多个权限一起申请ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE}, 1);}}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_height="1000px"android:layout_width="match_parent"android:background="@color/teal_200"></androidx.recyclerview.widget.RecyclerView><ImageViewandroid:id="@+id/img"android:layout_width="match_parent"android:layout_height="500px"android:background="@color/design_default_color_error"/>
</LinearLayout>
adapter:
package com.example.showpicture.showLocalPicture.adapter;import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;import com.example.showpicture.R;
import com.squareup.picasso.Picasso;import java.util.List;public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements AdapterView.OnItemClickListener {private static final String TAG = RecyclerViewAdapter.class.getSimpleName();private Context mContext;private List<String> mImgList;private LayoutInflater inflater;public RecyclerViewAdapter(Context context, List<String> imgList){this.mContext = context;this.mImgList = imgList;inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = inflater.inflate(R.layout.adapter_recycler_view,parent,false);ViewHolder holder = new ViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], position = [" + mImgList.get(position) + "]");holder.imageView.setImageURI(Uri.parse(mImgList.get(position)));}@Overridepublic int getItemCount() {return mImgList.size();}@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {}class ViewHolder extends RecyclerView.ViewHolder{private ImageView imageView;public ViewHolder(View view) {super(view);imageView = view.findViewById(R.id.img_local);}}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/img_local"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>
二、网络图片显示
fragment:
用glide或者picasso都可以,用glide的时候需要申请requestopteins
package com.example.showpicture.showNetWorkPicture;import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.example.showpicture.R;
import com.squareup.picasso.Picasso;public class ShowNetWorkPictureFragment extends Fragment {private static final String TAG = ShowNetWorkPictureFragment.class.getSimpleName();private Context mContext;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_network,container,false);}@Overridepublic void onStart() {super.onStart();mContext = getContext();checkNeedPermissions();initView();}private void checkNeedPermissions(){if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED|| ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {//多个权限一起申请ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE}, 1);}}private void initView() {Log.d(TAG, "initView() called");ImageView imageView = getView().findViewById(R.id.img_net);RequestOptions options = new RequestOptions().centerCrop().placeholder(R.drawable.abc_vector_test).error(R.drawable.ic_launcher_background).priority(Priority.HIGH).diskCacheStrategy(DiskCacheStrategy.NONE);
// 用glide或者picasso都可以,用glide的时候需要申请requestopteins Glide.with(mContext).load("https://alifei04.cfp.cn/creative/vcg/veer/1600water/veer-303764513.jpg")
// .apply(options)
// .into(imageView);Picasso.with(mContext).load("https://alifei04.cfp.cn/creative/vcg/veer/1600water/veer-303764513.jpg").resize(300, 300).into(imageView);}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/img_net"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:padding="16dp" />
</LinearLayout>
显示本地图片以及网络图片相关推荐
- c# picturebox控件显示本地图片和显示网上的图片
显示本地图片 pictureBox1.Image=Image.FormFile(@"图片路径"); 显示网络图片 pictureBox1.ImageLocation = @&quo ...
- Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18730223),请尊重他人的辛勤劳动成果,谢谢! 写这篇文 ...
- (转)Silverlight显示本地图片、Stream转Byte数组
转载自:http://www.cnblogs.com/forgetu/archive/2010/08/07/silverlight-load-local-image-stream-to-byte-ar ...
- 在InternetExplorer.Application中显示本地图片
忘记了,喜欢一个人的感觉 Demon's Blog » 程序设计 » 在InternetExplorer.Application中显示本地图片 « 对VBS效率的再思考--处理二进制数据 Wo ...
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果...
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/20481185),请尊重他人的辛勤劳动成果,谢谢! 大家好! ...
- Django在浏览器上显示本地图片
Django项目在浏览器上显示本地图片,关键在于url的配置. 代码如下: from django.views.static import serve url(r'^book/(?P<path& ...
- android ImageButton显示本地图片
2019独角兽企业重金招聘Python工程师标准>>> 得到本地图片(png,jpeg,gif)的路径后,将图片显示在ImageButton上.这里先读出图片大小,在设置采样率,使得 ...
- HTML5页面显示本地图片,h5使用FileReader读取本地上传的图片文件并显示到浏览器...
html> h5使用FileReader读取本地图片文件并显示到浏览器-赵克立博客 ! function(a, b) { var showimg = document.getElementByI ...
- jsp中img显示本地图片
在web应用中是不能访问本地文件De,可以把要引用的文件移到项目中,通过相对路径获取.有时候我们就是需要访问本地文件,那么我们可以通过流的形式传入.例如: 在showPic.jsp中:<bod ...
最新文章
- 20100506 学习记录:grdview添加新的一行数据
- Android——apk反编译
- word2016配置Mathtype
- android自适应拉伸图片,Android 启动页-解决图片被拉伸和压缩问题,适配虚拟导航栏...
- java常见异常总结---自己工作中经常遇到的一些异常
- 同学,你有一份来自支付宝AI学姐的面试锦囊待查收
- linux的基础知识——signal信号捕捉,信号集操作函数
- 奖学金(信息学奥赛一本通-T1179)
- 天天生鲜(Python)Django项目学习资料(视频、源码)
- ES索引重建reindex详解
- IEEE年度薪酬报告发布!美国程序员薪资中位数7年来首次下降2.4万
- 汽车自动变速器的共性技术
- 启用php client,RabbitMQ(二):安装 和 PHP Client
- html移动端适配最优方法
- Mac Gem Menu for OneNote 激活——应用任何版本
- endnote中科大版是什么意思_ios14.2rc是什么意思 ios14.2rc版是原来的“GM”版吗
- CSDN2022总排名前十统计
- WPF绑定XML数据源
- HTML制作简单课表
- 谁打开了便携笔记本的潘多拉盒子