package com.parttime.common.Image;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.qingmu.jianzhidaren.R;
import com.quark.jianzhidaren.ApplicationControl;
import com.quark.volley.VolleySington;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
/**
*
* Created by dehua on 15/7/28.
*/
public class ImageShowPagerAdapter extends FragmentPagerAdapter {
private ArrayList<String> pictures;
private ArrayList<String> userIds;
protected HashMap<String, Bitmap> cache = new HashMap<>();
protected RequestQueue queue = VolleySington.getInstance().getRequestQueue();
public ImageShowPagerAdapter(FragmentManager fm) {
super(fm);
}
public void setData(ArrayList<String> pictures,ArrayList<String> userIds){
this.pictures = new ArrayList<>(pictures);
this.userIds = new ArrayList<>(userIds);
}
@Override
public Fragment getItem(int position) {
String picture = pictures.get(position);
String userId = userIds.get(position);
UserDetailFragment fragment = UserDetailFragment.newInstance(picture,userId);
fragment.imageShowPagerAdapter = this;
return fragment;
}
@Override
public int getCount() {
return pictures.size();
}
public static class UserDetailFragment extends Fragment implements View.OnClickListener{
private static final String ARG_PICTURE = "picture";
private static final String ARG_USER_ID = "userId";
protected String picture;
protected String userId;
ImageShowPagerAdapter imageShowPagerAdapter;
/**
* Returns a new instance of this fragment for the given section
* number.
*/
public static UserDetailFragment newInstance(String picture,String userId) {
UserDetailFragment fragment = new UserDetailFragment();
Bundle args = new Bundle();
args.putString(ARG_PICTURE, picture);
args.putString(ARG_USER_ID, userId);
fragment.setArguments(args);
return fragment;
}
public UserDetailFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
picture = getArguments().getString(ARG_PICTURE);
userId = getArguments().getString(ARG_USER_ID);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
FrameLayout rootView = (FrameLayout)inflater.inflate(R.layout.image_show_item, container, false);
ImageView image = (ImageView)rootView.findViewById(R.id.image);
Bitmap bitmap = imageShowPagerAdapter.cache.get(picture);
rootView.findViewById(R.id.save).setOnClickListener(this);
if(bitmap != null){
image.setImageBitmap(bitmap);
}else {
ContactImageLoader.loadNativePhoto(userId,picture,image, imageShowPagerAdapter.queue);
}
return rootView;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.save:
new Thread(new Runnable() {
@Override
public void run() {
File file = new File(ContactImageLoader.Image_Path, picture);
save(file);
}
}).start();
break;
}
}
private void save(File file) {
String path = file.getPath();
if (!TextUtils.isEmpty(file.getPath())
&& Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
try {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
String imageFileName = "IMG" + timeStamp + ".jpg";
String url = MediaStore.Images.Media.insertImage(
getActivity().getContentResolver(),
path,
imageFileName,
"jzdr");
if (!TextUtils.isEmpty(url)) {
final String filePath = path + imageFileName;
try {
ApplicationControl.getInstance().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + filePath)));
MediaScannerConnection.scanFile(ApplicationControl.getInstance(),
new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" + path},
null,
null);
}catch (Exception ignore){}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity(),"保存成功"+filePath,Toast.LENGTH_SHORT).show();
}
});
}
} catch (Exception e) {
e.printStackTrace();
} catch (OutOfMemoryError e) {
System.gc();
}
}
}
}
}