7.18晚自习,实现本地图片

activity java代码

K
package com.example.app2.evening;
import android.Manifest;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.app2.R;
import java.security.Permission;
import java.util.ArrayList;
import java.util.List;

public class EA extends AppCompatActivity {

private Button but;
private GridView gv;
//存储图片地址
private List<String> address=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_e);

    but=findViewById(R.id.EA_button);
    gv=findViewById(R.id.EA_gridView);

    gv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(EA.this);
            alertDialog.setTitle("选项");
            View inflate = LayoutInflater.from(EA.this).inflate(R.layout.my_layout, null);
            ImageView iv = inflate.findViewById(R.id.EA_imageView);
            iv.setImageBitmap(BitmapFactory.decodeFile(address.get(position)));
            alertDialog.setView(inflate);
            alertDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(EA.this, "呵呵。", Toast.LENGTH_SHORT).show();
                }
            });
            alertDialog.show();
            return false;
        }
    });
}

public void click(View view) {
    //点击按钮开始获取数据
    Toast.makeText(this, "点击了按钮,开始获取本地数据。", Toast.LENGTH_SHORT).show();
    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE},200);
    }
    else{
        myRequest();
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if( requestCode==200&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
        myRequest();
    }
}

//自定义类,执行基本体的查询步骤。
public void myRequest( ){
    address.clear();
    //通过ContentProvider查询所有的图片信息
    Uri uri=MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    Cursor cur = getContentResolver().query(uri, null, null, null, null);
    while( cur.moveToNext()){
        //获取图片位置
        byte[] data = cur.getBlob(cur.getColumnIndex(MediaStore.Images.Media.DATA));
        address.add(new String(data,0,data.length-1));
    }
    MyAdapter myAdapter = new MyAdapter(this, address);
    gv.setAdapter(myAdapter);
    Log.i("aaaaa", "getView: 老子进来了");
}

}

activity布局

<?xml version="1.0" encoding="utf-8"?>



</GridView>

适配器

package com.example.app2.evening;
import android.content.Context;
import android.media.Image;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.app2.R;
import com.squareup.picasso.Picasso;
import java.util.List;

public class MyAdapter extends BaseAdapter {

private Context con;
private List<String> list;

public MyAdapter(Context con, List<String> list) {
    this.con = con;
    this.list = list;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MyId myId;
    if( convertView==null){
        convertView= LayoutInflater.from(con).inflate(R.layout.my_layout,null);
        myId = new MyId();
        myId.iv=convertView.findViewById(R.id.EA_imageView);
        convertView.setTag(myId);
    }else{
        myId= (MyId) convertView.getTag();
    }
    RequestOptions ro = new RequestOptions();
    ro.circleCrop();
    Glide.with(con).load(list.get(position)).apply(ro).into(myId.iv);

    return convertView;
}
class MyId{
    private ImageView iv;
}

}

自定义布局(对话框&表格视图布局)

<?xml version="1.0" encoding="utf-8"?>



导入glide加载图片并且磨圆

implementation ‘com.github.bumptech.glide:glide:4.5.0’

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值