android 读取大图,Android 读取sdcard, 查询图片并展示在列表上

上图:      可以通过车牌和日期进行查询

详细注解代码中看,废话不多说直接上代码:

----------------------------Main2Activity---------------------------

package com.example.zhuoshi.watermarkdemo;

import android.graphics.Bitmap;

import android.os.Environment;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

import java.util.ArrayList;

public class Main2Activity extends AppCompatActivity{

private static String filePath = Environment.getExternalStorageDirectory()+"";

private static final String TAG = "Main2Activity";

private ArrayList imageList = new ArrayList<>();

private EditText researchEdit;

private Button researchBtn;

private ListView listview;

private String editContent;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

listview = findViewById(R.id.listview);

researchEdit = findViewById(R.id.research_edit);

researchBtn = findViewById(R.id.research_btn);

researchBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

editContent = researchEdit.getText().toString().trim();

Log.d(TAG, "onCreate: editContent:"+editContent);

if (!editContent.equals("")){

queryImage(editContent);

MyAdatpter myAdatpter = new MyAdatpter();

listview.setAdapter(myAdatpter);

}

}

});

}

private void queryImage(String editContent) {

//第一步

QueryImageUtil.getmInstance(Main2Activity.this);

//第二步

QueryImageUtil.setOnQueryListener(new QueryImageUtil.OnQueryListener() {

@Override

public void onQuerySuccess(String success) {

Toast.makeText(Main2Activity.this, success, Toast.LENGTH_SHORT).show();

}

@Override

public void onQueryFailure(String failure) {

Toast.makeText(Main2Activity.this, failure, Toast.LENGTH_SHORT).show();

}

});

//第三步

ArrayList bitmaps = QueryImageUtil.initFile(filePath, editContent);

imageList = bitmaps;

}

private class MyAdatpter extends BaseAdapter{

@Override

public int getCount() {

return imageList.size();

}

@Override

public Object getItem(int i) {

return imageList.get(i);

}

@Override

public long getItemId(int i) {

return i;

}

@Override

public View getView(int i, View view, ViewGroup viewGroup) {

View mView = View.inflate(Main2Activity.this,R.layout.listview_item,null);

TextView plateTv = mView.findViewById(R.id.plate_tv);

ImageView cardImg = mView.findViewById(R.id.card_img);

plateTv.setText("");

cardImg.setImageBitmap(imageList.get(i));

return mView;

}

}

}

----------------------------QueryImageUtil---------------------------

package com.example.zhuoshi.watermarkdemo;

import android.annotation.SuppressLint;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Environment;

import android.util.Log;

import java.io.File;

import java.util.ArrayList;

import java.util.List;

/**

* Author: baipenggui

* Date: 2019/1/24 16:06

* Email: 1528354213@qq.com

* Description: 从sdcard中查询出保存的图片

*/

public class QueryImageUtil {

private static ArrayList imageList = new ArrayList<>();

private static List imagePathList = new ArrayList<>();

private static QueryImageUtil mInstance;

private static String mFileRootPath;

private static Bitmap bitmap;

private static String filePath;

private static Context mContext;

private static String TAG;

private static boolean successCallOne = false;//查询成功的接口只调用一侧

private static boolean failureCallOne = false;//查询成功的接口只调用一侧

private static OnQueryListener onQueryListener;

/*

*@Description: 获取查询图片的实例,这是第一步

*@Params:

*@Author: baipenggui

*@Date: 2019/1/24

*/

public static QueryImageUtil getmInstance(Context context) {

mContext = context;

if (mInstance == null) {

mInstance = new QueryImageUtil();

}

TAG = mContext.getClass().getName();

return mInstance;

}

/*

*@Description:初始化sdcard文件 这是第三步

*@Params: fileRootPath 存储文件的根路径

*@params: editcontent 输入框中的内容

*@Author: baipenggui

*@Date: 2019/1/24

*/

public static ArrayList initFile(String fileRootPath, String editcontent) {

mFileRootPath = fileRootPath;

//获取路径是否成功

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

filePath = fileRootPath + "/plate/";

}

//添加之前先清空集合

imageList.clear();

//获取图片路径集合

List imagePathList = getImagePathFromSD();

File mFile = new File(filePath);

//文件夹不存在则创建

if (!mFile.exists()) {

mFile.mkdir();

} else {

//遍历路径集合,判读路径找回功能是否存在输入框中获取的内容

for (int i = 0; i < imagePathList.size(); i++) {

Log.d(TAG, "imagePathList: " + imagePathList.get(i));

String imagePath = imagePathList.get(i);

if (editcontent.length() > 0 || editcontent != null) {

boolean contains = imagePath.contains(editcontent);

//如果存在,则将已存在该字段的路径通过BitmapFactory.decodeFile转化为bitmap格式,通过接口获取查询结果

if (contains) {

bitmap = BitmapFactory.decodeFile(imagePathList.get(i));

imageList.add(bitmap);

if (successCallOne == false) {

Log.d(TAG, "onQueryListener: " + onQueryListener);

if (onQueryListener != null) {

onQueryListener.onQuerySuccess("查询成功");

}

successCallOne = true;

}

} else {

if (failureCallOne == false) {

if (onQueryListener != null) {

onQueryListener.onQueryFailure("没有发现该车辆");

}

}

failureCallOne = true;

}

} else {

Log.d(TAG, "editcontent is null !");

}

}

Log.d(TAG, "imageList: " + imageList);

}

return imageList;

}

/**

* 从sd卡获取图片资源

*/

private static List getImagePathFromSD() {

//添加之前先清空集合

imagePathList.clear();

// 得到sd卡内plate文件夹的路径

String filePath = mFileRootPath.toString() + File.separator + "/plate/";

// 得到该路径文件夹下所有的文件

File fileAll = new File(filePath);

File[] files = fileAll.listFiles();

// 将所有的文件存入ArrayList中,并过滤所有图片格式的文件

for (int i = 0; i < files.length; i++) {

File file = files[i];

if (checkIsImageFile(file.getPath())) {

imagePathList.add(file.getPath());

}

}

// 返回得到的图片列表

return imagePathList;

}

/**

* 检查扩展名,得到图片格式的文件

*/

@SuppressLint("DefaultLocale")

private static boolean checkIsImageFile(String fName) {

boolean isImageFile = false;

//获取扩展名

String FileEnd = fName.substring(fName.lastIndexOf(".") + 1,

fName.length()).toLowerCase();

if (FileEnd.equals("jpg") || FileEnd.equals("png") || FileEnd.equals("gif")

|| FileEnd.equals("jpeg") || FileEnd.equals("bmp")) {

isImageFile = true;

} else {

isImageFile = false;

}

return isImageFile;

}

/*

*@Description: 查询成功,失败结果的回调 这是第二步, 注意:调用接口需要在initFile()之前, 否则onQueryListener为空

*@Params:

*@Author: baipenggui

*@Date: 2019/1/24

*/

public static void setOnQueryListener(OnQueryListener onQuery) {

onQueryListener = onQuery;

}

public interface OnQueryListener {

void onQuerySuccess(String success);

void onQueryFailure(String failure);

}

}

----------------------------activity_main2.xml---------------------------

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"

android:orientation="vertical"

tools:context=".Main2Activity">

android:layout_width="match_parent"

android:layout_height="60dp">

android:id="@+id/research_edit"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1" />

android:id="@+id/research_btn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="搜索" />

android:id="@+id/listview"

android:layout_width="match_parent"

android:layout_height="match_parent">

Demo源码  从百度云下载 ,提取码 zsix

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值