package com.quark.senab.us.image;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.carson.constant.ConstantForSaveList;
import com.qingmu.jianzhidaren.R;
import com.quark.common.JsonUtil;
import com.quark.common.Url;
import com.parttime.main.MainTabActivity;
import com.quark.model.MyResume;
import com.quark.utils.WaitDialog;
import com.quark.volley.VolleySington;
public class ImagePagerActivity extends FragmentActivity {
private static final String STATE_POSITION = "STATE_POSITION";
public static final String EXTRA_IMAGE_INDEX = "image_index";
public static final String EXTRA_IMAGE_URLS = "image_urls";
private HackyViewPager mPager;
private int pagerPosition;
private TextView indicator;
private ImageView imageBtn;
private ImageView image_btn_addImag;
String url1 = "";
String url2 = "";
String url3 = "";
String url4 = "";
String url5 = "";
String url6 = "";
String[] imagesUrls = new String[] { "", "", "", "", "", "" };
String[] totalpicUrls;// 真实的图片数组
String userId;
MyResume re = new MyResume();
protected RequestQueue queue;
Bundle savedInstanceStateTemp;
int totalPic = 0;
SharedPreferences sp;
// String imageUri = "file:///mnt/sdcard/image.png"; // 加载 SD card图片
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_detail_pager);
savedInstanceStateTemp = savedInstanceState;
sp = getSharedPreferences("jrdr.setting", MODE_PRIVATE);
userId = sp.getString("userId", "");
queue = VolleySington.getInstance().getRequestQueue();
getData();
image_btn_addImag = (ImageView) findViewById(R.id.image_btn_add);
image_btn_addImag.setOnClickListener(addPic);
// 返回
imageBtn = (ImageView) findViewById(R.id.image_close);
imageBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ImagePagerActivity.this.finish();
}
});
}
/**
* 判断本地是否已经存在该图片,若存在则调用本地图片,反之则网络获取
*
*/
private String checkPhotoExitsInNative(int position) {
String picPath;
switch (position) {
case 0:
picPath = re.getPicture_1();
if (!"".equals(picPath)) {
File f = new File(Environment.getExternalStorageDirectory()
+ "/" + "jzdr/" + "image/" + picPath);
if (f.exists()) {
imagesUrls[position] = "file://"
+ Environment.getExternalStorageDirectory() + "/"
+ "jzdr/" + "image/" + picPath;
} else {
imagesUrls[position] = Url.GETPIC + picPath;
}
} else {
imagesUrls[position] = "";
}
break;
case 1:
picPath = re.getPicture_2();
if (!"".equals(picPath)) {
File f = new File(Environment.getExternalStorageDirectory()
+ "/" + "jzdr/" + "image/" + picPath);
if (f.exists()) {
imagesUrls[position] = "file://"
+ Environment.getExternalStorageDirectory() + "/"
+ "jzdr/" + "image/" + picPath;
} else {
imagesUrls[position] = Url.GETPIC + picPath;
}
} else {
imagesUrls[position] = "";
}
break;
case 2:
picPath = re.getPicture_3();
if (!"".equals(picPath)) {
File f = new File(Environment.getExternalStorageDirectory()
+ "/" + "jzdr/" + "image/" + picPath);
if (f.exists()) {
imagesUrls[position] = "file://"
+ Environment.getExternalStorageDirectory() + "/"
+ "jzdr/" + "image/" + picPath;
} else {
imagesUrls[position] = Url.GETPIC + picPath;
}
} else {
imagesUrls[position] = "";
}
break;
case 3:
picPath = re.getPicture_4();
if (!"".equals(picPath)) {
File f = new File(Environment.getExternalStorageDirectory()
+ "/" + "jzdr/" + "image/" + picPath);
if (f.exists()) {
imagesUrls[position] = "file://"
+ Environment.getExternalStorageDirectory() + "/"
+ "jzdr/" + "image/" + picPath;
} else {
imagesUrls[position] = Url.GETPIC + picPath;
}
} else {
imagesUrls[position] = "";
}
break;
case 4:
picPath = re.getPicture_5();
if (!"".equals(picPath)) {
File f = new File(Environment.getExternalStorageDirectory()
+ "/" + "jzdr/" + "image/" + picPath);
if (f.exists()) {
imagesUrls[position] = "file://"
+ Environment.getExternalStorageDirectory() + "/"
+ "jzdr/" + "image/" + picPath;
} else {
imagesUrls[position] = Url.GETPIC + picPath;
}
} else {
imagesUrls[position] = "";
}
break;
case 5:
picPath = re.getPicture_6();
if (!"".equals(picPath)) {
File f = new File(Environment.getExternalStorageDirectory()
+ "/" + "jzdr/" + "image/" + picPath);
if (f.exists()) {
imagesUrls[position] = "file://"
+ Environment.getExternalStorageDirectory() + "/"
+ "jzdr/" + "image/" + picPath;
} else {
imagesUrls[position] = Url.GETPIC + picPath;
}
} else {
imagesUrls[position] = "";
}
break;
default:
break;
}
return imagesUrls[position];
}
/**
* 处理图片路径
*
*/
public void deal() {
pagerPosition = getIntent().getIntExtra(EXTRA_IMAGE_INDEX, 0);
// String[] urls = getIntent().getStringArrayExtra(EXTRA_IMAGE_URLS);
mPager = (HackyViewPager) findViewById(R.id.pager);
for (int i = 0; i < imagesUrls.length; i++) {
imagesUrls[i] = checkPhotoExitsInNative(i);
}
ImagePagerAdapter mAdapter = new ImagePagerAdapter(
getSupportFragmentManager(), imagesUrls);
mPager.setAdapter(mAdapter);
indicator = (TextView) findViewById(R.id.indicator);
CharSequence text = getString(R.string.viewpager_indicator, 1, mPager
.getAdapter().getCount());
indicator.setText(text);
// 更新下标
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
CharSequence text = getString(R.string.viewpager_indicator,
arg0 + 1, mPager.getAdapter().getCount());
indicator.setText(text);
currentPage = arg0;
}
});
if (savedInstanceStateTemp != null) {
pagerPosition = savedInstanceStateTemp.getInt(STATE_POSITION);
}
mPager.setCurrentItem(pagerPosition);
}
int currentPage;
public void getData() {
totalPic = 0;
// 每次更新图片后重新获取一次图片url
showWait(true);
StringRequest request = new StringRequest(Request.Method.POST,
Url.USER_jianli_show + "?token=" + MainTabActivity.token,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showWait(false);
try {
JSONObject js = new JSONObject(response);
JSONObject statusjs = js
.getJSONObject("ResponseStatus");
int status = statusjs.getInt("status");
if (status == 2) {
JSONObject myResumeJson = js
.getJSONObject("MyResumeResponse");
re = (MyResume) JsonUtil.jsonToBean(
myResumeJson, MyResume.class);
if (re.getPicture_1() != null
&& !re.getPicture_1().equals("")) {
url1 = Url.GETPIC + re.getPicture_1();
imagesUrls[0] = url1;
totalPic++;
}
if (re.getPicture_2() != null
&& !re.getPicture_2().equals("")) {
url2 = Url.GETPIC + re.getPicture_2();
imagesUrls[1] = url2;
totalPic++;
}
if (re.getPicture_3() != null
&& !re.getPicture_3().equals("")) {
url3 = Url.GETPIC + re.getPicture_3();
imagesUrls[2] = url3;
totalPic++;
}
if (re.getPicture_4() != null
&& !re.getPicture_4().equals("")) {
url4 = Url.GETPIC + re.getPicture_4();
imagesUrls[3] = url4;
totalPic++;
}
if (re.getPicture_5() != null
&& !re.getPicture_5().equals("")) {
url5 = Url.GETPIC + re.getPicture_5();
imagesUrls[4] = url5;
totalPic++;
}
if (re.getPicture_6() != null
&& !re.getPicture_6().equals("")) {
url6 = Url.GETPIC + re.getPicture_6();
imagesUrls[5] = url6;
totalPic++;
}
deal();
} else {
getNativePhoto();// 加载本地图片
deal();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
showWait(false);
getNativePhoto();
deal();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put("user_id", userId);
return map;
}
};
queue.add(request);
request.setRetryPolicy(new DefaultRetryPolicy(ConstantForSaveList.DEFAULTRETRYTIME*1000, 1, 1.0f));
}
/**
* 获取本地图片照片
*
*/
private void getNativePhoto() {
re.setPicture_1(sp.getString(userId + "pic_1", ""));
re.setPicture_2(sp.getString(userId + "pic_2", ""));
re.setPicture_3(sp.getString(userId + "pic_3", ""));
re.setPicture_4(sp.getString(userId + "pic_4", ""));
re.setPicture_5(sp.getString(userId + "pic_5", ""));
re.setPicture_6(sp.getString(userId + "pic_6", ""));
}
OnClickListener addPic = new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
int tempPositon = currentPage + 1;
intent.putExtra("position", tempPositon + "");
intent.putExtra("totalPic", totalPic + "");
ImagePagerActivity.this.setResult(RESULT_OK, intent);
ImagePagerActivity.this.finish();
}
};
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE_POSITION, mPager.getCurrentItem());
}
private class ImagePagerAdapter extends FragmentStatePagerAdapter {
public String[] fileList;
public ImagePagerAdapter(FragmentManager fm, String[] fileList) {
super(fm);
this.fileList = fileList;
}
@Override
public int getCount() {
return fileList == null ? 0 : fileList.length;
}
@Override
public Fragment getItem(int position) {
String url = fileList[position];
return ImageDetailFragment.newInstance(url);
}
}
protected WaitDialog dialog;
protected void showWait(boolean isShow) {
if (isShow) {
if (null == dialog) {
dialog = new WaitDialog(this);
}
dialog.show();
} else {
if (null != dialog) {
dialog.dismiss();
}
}
}
}