package com.liuguilin.lovewallpaper.fragment; /* * 项目名: LoveWallpaper * 包名: com.liuguilin.lovewallpaper.fragment * 文件名: AlbumFragment * 创建者: LGL * 创建时间: 2017/1/13 15:49 * 描述: 相册 */ import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.GridView; import android.widget.Toast; import com.liuguilin.lovewallpaper.R; import com.liuguilin.lovewallpaper.activity.GalleryActivity; import com.liuguilin.lovewallpaper.adapter.AlbumGridAdapter; import com.liuguilin.lovewallpaper.entity.Constants; import java.util.ArrayList; public class AlbumFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { private GridView mGridView; //相册路径 private ArrayList<String> paths = new ArrayList<>(); private AlbumGridAdapter albumGridAdapter; //下拉刷新 private SwipeRefreshLayout mSwipeRefreshLayout; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case Constants.HANDLER_REFRESH: paths.clear(); getAllImagePath(); albumGridAdapter.notifyDataSetChanged(); if (mSwipeRefreshLayout.isRefreshing()) { mSwipeRefreshLayout.setRefreshing(false); } break; } } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_album, container, false); initView(view); return view; } private void initView(View view) { mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.mSwipeRefreshLayout); mSwipeRefreshLayout.setOnRefreshListener(this); mGridView = (GridView) view.findViewById(R.id.mGridView); getPermission(); albumGridAdapter = new AlbumGridAdapter(getActivity(), paths); mGridView.setAdapter(albumGridAdapter); mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(), GalleryActivity.class); intent.putExtra("position", i); intent.putStringArrayListExtra("bigUrl", paths); startActivity(intent); } }); } //获取读取内存卡权限 private void getPermission() { if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 101); } else { getAllImagePath(); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 101: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { getAllImagePath(); } else { Toast.makeText(getActivity(), "请打开读/写权限", Toast.LENGTH_LONG).show(); } break; } } //获取本地相册 private void getAllImagePath() { Cursor cursor = getActivity().getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null); //遍历相册 while (cursor.moveToNext()) { String path = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)); //将图片路径添加到集合 paths.add(path); } cursor.close(); } //下拉回调 @Override public void onRefresh() { mHandler.sendEmptyMessage(Constants.HANDLER_REFRESH); } //视图改变 @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if(!hidden){ getAllImagePath(); albumGridAdapter.notifyDataSetChanged(); } } }