package com.todayinfo.ui.activity; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.json.JSONArray; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Matrix; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.jinghua.todayinformation.R; import com.loopj.android.http.AsyncHttpResponseHandler; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import com.squareup.picasso.Transformation; import com.todayinfo.model.GrilDetailItem; import com.todayinfo.ui.component.ViewPagerItem; import com.todayinfo.ui.component.gesture.PhotoViewAttacher; import com.todayinfo.utils.AppUtil; import com.todayinfo.utils.AsyncHttpUtil; import com.todayinfo.utils.JsonUtils; /** * 查看美女图片详情 * * @author zhou.ni 2015年4月25日 */ public class GrilDetailActivity extends SuperActivity implements OnClickListener{ private GrilDetailAdaper detailAdaper; private List<GrilDetailItem> detailList = new ArrayList<GrilDetailItem>(); private String path = "http://www.6mm.cc/api/detail.php?aid="; private ViewPager mViewPager; private ViewPagerItem pagerItem; private int w; //屏幕宽度 private String aid; //图片id @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gril_detail); initView(); } /** * 初始化控件 */ private void initView() { Intent intent = getIntent(); aid = intent.getStringExtra("id"); String tit = intent.getStringExtra("title"); //获取屏幕宽度 w = AppUtil.getPhoneHW(mContext); RelativeLayout headView = (RelativeLayout) this.findViewById(R.id.head); headView.findViewById(R.id.back_left).setOnClickListener(this);; TextView title = (TextView) headView.findViewById(R.id.head_title); title.setText(tit); mViewPager = (ViewPager) this.findViewById(R.id.gril_viewpage); pagerItem = (ViewPagerItem) this.findViewById(R.id.viewpage_item); pagerItem.setBitmap(R.raw.no_icon, R.raw.yes_icon); mViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { pagerItem.notifyDataSetChanged(arg0); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); detailAdaper = new GrilDetailAdaper(); mViewPager.setAdapter(detailAdaper); loadGrilPhotoDetailData(); } /** * 加载美女详情的图片 */ private void loadGrilPhotoDetailData(){ String url = path + aid; AsyncHttpUtil.get(url, new AsyncHttpResponseHandler() { @Override public void onSuccess(int arg0, Header[] arg1, byte[] arg2) { if ( arg2!=null && arg2.length>0 ) { try { JSONArray jsonArray = new JSONArray(new String(arg2)); List<GrilDetailItem> list = JsonUtils.getInstance(GrilDetailItem.class, jsonArray); if ( list!=null && list.size()>0 ) { detailList.addAll(list); runOnUiThread(new Runnable() { @Override public void run() { detailAdaper.notifyDataSetChanged(); pagerItem.setCount(detailList.size()); pagerItem.notifyDataSetChanged(0); } }); } } catch (Exception e) { e.printStackTrace(); } } } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { Toast.makeText(mContext, "请检查您的网络", Toast.LENGTH_SHORT).show(); } }); } @Override public void retry() { } @Override public void netError() { } @Override protected void obtainInfo() { } class GrilDetailAdaper extends PagerAdapter{ @Override public int getCount() { return detailList!=null ? detailList.size() : 0; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (View)arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager)container).removeView((View)object); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = View.inflate(mContext, R.layout.item_gril_photo_detail_lv, null); ImageView image = (ImageView)view.findViewById(R.id.photo_icon); @SuppressWarnings("unused") PhotoViewAttacher attacher = new PhotoViewAttacher(image); final ProgressBar progressBar = (ProgressBar)view.findViewById(R.id.pro_bar); GrilDetailItem item = detailList.get(position); if ( !TextUtils.isEmpty(item.getUrl()) ) { Picasso.with(mContext) .load(item.getUrl()) .transform(new CropSquareTransformation()) .into(image, new Callback() { @Override public void onSuccess() { progressBar.setVisibility(View.GONE); } @Override public void onError() { progressBar.setVisibility(View.GONE); } }); } ((ViewPager) container).addView(view, 0); return view; } } public class CropSquareTransformation implements Transformation { @Override public Bitmap transform(Bitmap source) { int width = source.getWidth(); int height = source.getHeight(); int h_new = height*w/width; // 计算缩放比例 float scaleWidth = ((float) w) / width; float scaleHeight = ((float) h_new) / height; // 取得想要缩放的matrix参数 Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); // 得到新的图片 Bitmap result = Bitmap.createBitmap(source, 0, 0, width, height, matrix, true); if (result != source) { source.recycle(); } return result; } @Override public String key() { return "square()"; } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.back_left: finish(); break; default: break; } } }