package com.todayinfo.ui.activity; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.json.JSONArray; import org.json.JSONObject; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.jinghua.todayinformation.R; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; import com.squareup.picasso.Picasso; import com.todayinfo.model.PhonePhotoItem; import com.todayinfo.model.PhotoDetailedItem; import com.todayinfo.ui.component.ErrorHintView; import com.todayinfo.ui.component.SuperUI; import com.todayinfo.ui.component.ErrorHintView.OperateListener; import com.todayinfo.utils.AsyncHttpUtil; import com.todayinfo.utils.Contacts; import com.todayinfo.utils.MD5Utils; /** * 手机图片详情界面 * * @author zhou.ni 2015年5月9日 */ @SuppressWarnings("deprecation") public class PhonePhotoDetailActivity extends SuperActivity implements OnClickListener{ private Gallery mGallery; private TextView mContent; private TextView mTitle; private TextView mCount; private LinearLayout mPanel; private RelativeLayout mRelat; private ErrorHintView mErrorHintView; private List<String> picUrlList = new ArrayList<String>(); private PhotoDetailedItem mItem; private ShowImageAdapter adapter; public static int VIEW_CONTENT = 1; /**显示断网**/ public static int VIEW_WIFIFAILUER = 2; /** 显示加载数据失败 **/ public static int VIEW_LOADFAILURE = 3; public static int VIEW_LOADING = 4; private String docid; private PhonePhotoItem photoItem = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_phone_photo_detail); getWindow().setBackgroundDrawable(null); initView(); } /** * 初始化控件 */ private void initView() { RelativeLayout headView = (RelativeLayout) this.findViewById(R.id.head); RelativeLayout leftBack = (RelativeLayout) headView.findViewById(R.id.back_left); TextView title = (TextView) headView.findViewById(R.id.head_title); title.setText("手机美图"); LinearLayout share = (LinearLayout) this.findViewById(R.id.toolbar_share); LinearLayout comment = (LinearLayout) this.findViewById(R.id.toolbar_comment); LinearLayout save = (LinearLayout) this.findViewById(R.id.toolbar_save); leftBack.setOnClickListener(this); share.setOnClickListener(this); comment.setOnClickListener(this); save.setOnClickListener(this); mErrorHintView = (ErrorHintView) this.findViewById(R.id.hintView); mGallery = (Gallery) this.findViewById(R.id.photo_detail_gallery); mContent = (TextView) this.findViewById(R.id.photo_detail_content); mCount = (TextView) this.findViewById(R.id.photo_detail_count); mTitle = (TextView) this.findViewById(R.id.photo_detail_title); mPanel = (LinearLayout) this.findViewById(R.id.ll); mRelat = (RelativeLayout) this.findViewById(R.id.rl); adapter = new ShowImageAdapter(); mGallery.setAdapter(adapter); showLoading(VIEW_LOADING); loadphoneDetail(); } /** * 加载图片内容 */ private void loadphoneDetail(){ Intent intent = getIntent(); photoItem = (PhonePhotoItem) intent.getSerializableExtra("PhonePhotoItem"); docid = photoItem.getDocid(); RequestParams params = new RequestParams(); String t = String.valueOf(System.currentTimeMillis() / 1000); //获取当前时间 params.put("timestamp", t); //当前时间戳 String token1 = MD5Utils.md5("d19cf361181f5a169c107872e1f5b722" + t); params.put("token1", token1); //token1算法 params.put("apiid", 3); params.put("module", "api_libraries_sjdbg_detail"); params.put("returnformat", "json"); params.put("encoding", "utf8"); params.put("docid", docid); //文章id // params.put("uid", uid ); //用户id ,登陆的时候传,不登陆不传 params.put("size", 800); //文章内图片的尺寸可以传500 800默认为500 AsyncHttpUtil.get(Contacts.PHONE_URL, params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int arg0, Header[] arg1, byte[] arg2) { if ( arg2!=null && arg2.length>0 ) { try { JSONObject obj = new JSONObject(new String(arg2)); String status = obj.getString("status"); if ( TextUtils.equals("1", status) ) { showLoading(VIEW_CONTENT); mItem = new PhotoDetailedItem(); JSONObject data = obj.getJSONObject("data"); JSONObject info = data.getJSONObject("info"); String cid = info.getString("cid"); String isCollected = info.getString("isCollected"); String title = info.getString("title"); String date = info.getString("date"); String author = info.getString("author"); String docUrl = info.getString("docUrl"); mItem.setAuthor(author); mItem.setDate(date); mItem.setIsCollected(isCollected); mItem.setTitle(title); mItem.setCid(cid); mItem.setDocUrl(docUrl); mTitle.setText(title); JSONArray contentJSON = info.getJSONArray("content"); for (int i = 0; i < contentJSON.length(); i++) { String content = (String) contentJSON.get(i); mItem.getContent().add(content); mContent.setText(content); } JSONArray picUrlJSON = info.getJSONArray("picUrl"); for (int i = 0; i < picUrlJSON.length(); i++) { String picUrl = (String) picUrlJSON.get(i); mItem.getPicUrl().add(picUrl); } picUrlList.addAll(mItem.getPicUrl()); adapter.notifyDataSetChanged(); } else { showLoading(VIEW_LOADFAILURE); } } catch (Exception e) { showLoading(VIEW_LOADFAILURE); } } else { showLoading(VIEW_LOADFAILURE); } } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { showLoading(VIEW_WIFIFAILUER); } }); } private void showLoading(int i){ mErrorHintView.setVisibility(View.GONE); mGallery.setVisibility(View.GONE); mContent.setVisibility(View.GONE); mRelat.setVisibility(View.GONE); mPanel.setVisibility(View.GONE); switch(i){ case 1: mErrorHintView.hideLoading(); mGallery.setVisibility(View.VISIBLE); mRelat.setVisibility(View.VISIBLE); mContent.setVisibility(View.VISIBLE); mPanel.setVisibility(View.VISIBLE); break; case 2: mErrorHintView.hideLoading(); mErrorHintView.netError(new OperateListener() { @Override public void operate() { showLoading(VIEW_LOADING); loadphoneDetail(); } }); break; case 3: mErrorHintView.hideLoading(); mErrorHintView.loadFailure(new OperateListener() { @Override public void operate() { showLoading(VIEW_LOADING); loadphoneDetail(); } }); break; case 4: mErrorHintView.loadingData(); break; } } @Override public void retry() { } @Override public void netError() { } @Override protected void obtainInfo() { } @Override public void onClick(View v) { switch (v.getId()) { case R.id.back_left: finish(); break; case R.id.toolbar_share: Intent inte = new Intent(Intent.ACTION_SEND); inte.setType("image/*"); inte.putExtra(Intent.EXTRA_SUBJECT, "Share"); inte.putExtra(Intent.EXTRA_TEXT, "I would like to share this with you..."); inte.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(Intent.createChooser(inte, mItem.getTitle())); break; case R.id.toolbar_comment: Intent intent = new Intent(this, PhoneTechCommentActivity.class); intent.putExtra("docid", docid); startActivity(intent); break; case R.id.toolbar_save: List<Object> list = mUserController.getCollectionInfo(); if ( list==null ) { list = new ArrayList<Object>(); list.add(photoItem); mUserController.saveCollectionInfo(list); SuperUI.showCollectionUI(mContext); } else { if ( list.contains(photoItem) ) { list.remove(photoItem); mUserController.saveCollectionInfo(list); SuperUI.showUncollectionUI(mContext); } else { list.add(photoItem); mUserController.saveCollectionInfo(list); SuperUI.showCollectionUI(mContext); } } break; default: break; } } class ShowImageAdapter extends BaseAdapter { @Override public int getCount() { return picUrlList.size(); } @Override public Object getItem(int position) { return picUrlList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = View.inflate(mContext, R.layout.item_photo_details_garlly_lv, null); holder.image = (ImageView) convertView.findViewById(R.id.image); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } String picUrl = picUrlList.get(position); if ( !TextUtils.isEmpty(picUrl) ) { Picasso.with(mContext).load(picUrl).placeholder(R.color.ECECEC).error(R.color.ECECEC).into(holder.image); } mCount.setText((position + 1) + "/" + picUrlList.size()); return convertView; } } static class ViewHolder { ImageView image; } }