1.添加依賴
compile 'com.loopj.android:android-async-http:1.4.9' compile 'com.squareup.picasso:picasso:2.5.1' compile 'com.github.bumptech.glide:glide:3.5.2'jar包
compile files('libs/uk-co-senab-photoview.jar')
2.佈局
1.activity_main.xml
<GridView android:id="@+id/gv" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3"></GridView>2.item.xml
<ImageView android:id="@+id/iv" android:layout_width="150dp" android:layout_height="150dp" android:scaleType="centerCrop"/>3.activity_image_browse.xml
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent" />
4.photo_view.xml
<uk.co.senab.photoview.PhotoView android:id="@+id/pv" android:layout_width="wrap_content" android:scaleType="centerCrop" android:layout_height="wrap_content" />3.代碼
public class MainActivity extends AppCompatActivity { private GridView gv; private ArrayList<String> images = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 gv = (GridView) findViewById(R.id.gv); getdata(); gv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(MainActivity.this, ImageBrowseActivity.class); intent.putStringArrayListExtra("images",images); intent.putExtra("position", position); startActivity(intent); } }); } private void getdata() { AsyncHttpClient client = new AsyncHttpClient(); String url = "https://mock.eolinker.com/success/gIbgeNycc15SNh5mrSNTGC2Tr5WTUsCM"; client.get(this, url, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { try { JSONObject jsonObject = new JSONObject(responseString); JSONArray data = jsonObject.getJSONArray("data"); for (int i = 0;i<data.length();i++){ String image_url = data.getJSONObject(i).getString("image_url"); images.add(image_url); } ImageAdapter imageAdapter = new ImageAdapter(MainActivity.this, data); gv.setAdapter(imageAdapter); } catch (Exception e) { e.printStackTrace(); } } }); } private class ImageAdapter extends BaseAdapter{ Context context; JSONArray data; public ImageAdapter(Context context,JSONArray data) { this.context = context; this.data = data; } @Override public int getCount() { return data.length(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = View.inflate(context,R.layout.item,null); ImageView iv = (ImageView) convertView.findViewById(R.id.iv); try { String image_url = data.getJSONObject(position).getString("image_url"); Picasso.with(context).load(image_url).placeholder(R.mipmap.ic_launcher).into(iv); } catch (Exception e) { e.printStackTrace(); } return convertView; } } }
public class ImageBrowseActivity extends AppCompatActivity { private ArrayList<String> images; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_browse); ViewPager vp = (ViewPager) findViewById(R.id.vp); Intent intent = getIntent(); int position = intent.getIntExtra("position", 0); images = intent.getStringArrayListExtra("images"); MyAdapter myAdapter = new MyAdapter(); vp.setAdapter(myAdapter); vp.setCurrentItem(position);//設置當前 } public class MyAdapter extends PagerAdapter{ @Override public int getCount() { return images.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = View.inflate(ImageBrowseActivity.this,R.layout.photo_view,null); PhotoView pv = (PhotoView) view.findViewById(R.id.pv); String url = images.get(position); Glide.with(ImageBrowseActivity.this).load(url).into(pv); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } }