本文主要记录一些零碎的东西
使用recycleeView实现一个相册,相册里面的编辑可以参考这篇,主要是扫描系统相册,然后展示出来
主要是使用 getLoaderManager().initLoader 查询数据库,其实遍历文件也是可以的,不过偷懒啦,而且提供的查询是异步的
看看list界面
/**
* 相册列表
* Create by slack on 2016/09/06 15:58
*/
public class AlbumListActivity extends BaseFullScreenActivity {
private RecyclerView mRecyclerView;
private Boolean isVideo;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album_list);
initView();
initData();
}
private void initData() {
if(getIntent() != null ){
isVideo = getIntent().getBooleanExtra("video",false);
}
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what == REQ_SACN_ALBUM_LIST){
mRecyclerView.setVisibility(View.VISIBLE);
mRecyclerView.setAdapter(
new AlbumListAdapter(mRecyclerView,albumImageList,itemClickListener));
// 进入第一个 相册详情界面
/***
* 发现会有一个假死的现象,从相册返回后整个界面无法点击
* so 来个延时
*/
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// 点击视频首打开视频,点击照片首打开照片
for (int i = 0; i < albumImageList.size(); i++) {
AlbumImage a = albumImageList.get(i);
if(isVideo && a.imagePath.startsWith("v")){
enterAlbumView(i);
break;
}else if(!isVideo && a.imagePath.startsWith("i")){
enterAlbumView(i);
break;
}
}
}
}, 100);
}
}
};
// 虽然使用了 getLoaderManager ,结果操作在主线程里跑
initAlbumImages(mHandler);
}
private void initView() {
mRecyclerView = (RecyclerView) findViewById(R.id.album_list);
textView = (TextView) findViewById(R.id.album_scanning);
textView.setVisibility(View.VISIBLE);
((TextView)findViewById(R.id.top_center)).setText(getString(R.string.album_choose));
((ImageView)findViewById(R.id.top_left)).setImageResource(R.drawable.home_red);
findViewById(R.id.top_left).setOnClickListener(this);
((ImageView)findViewById(R.id.top_right)).setImageResource(R.drawable.home_red);
findViewById(R.id.top_right).setOnClickListener(this);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setVisibility(View.GONE);
}
AlbumListAdapter.ItemClickListener itemClickListener = new AlbumListAdapter.ItemClickListener() {
@Override
public void onItemClick(int pos) {
if(pos >= 0 && pos < albumImageList.size()){
enterAlbumView(pos);
}
}
};
private void enterAlbumView(int position){
textView.setVisibility(View.GONE);
List<String> childList = mGruopMap.get(albumImageList.get(position).folderName);
// if(childList.get(0).endsWith("gif")){
// startNewActivity(PhotoSelectActivity.class,false);
// }else
{
Intent mIntent = new Intent(AlbumListActivity.this, AlbumImagesActivity.class);
mIntent.putStringArrayListExtra("list", (ArrayList<String>) childList);
startActivity(mIntent);
}
}
主要是 base里的查询
public abstract class BaseFullScreenActivity
{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
protected final int REQ_SACN_ALBUM_LIST = 0x01;
// 一个文件夹,下面好多文件 父目录名 : 子文件list(文件路径)
protected Map<String, List<String>> mGruopMap = new HashMap<>();
private final lo