1、导依赖
compile files('libs/uk-co-senab-photoview.jar')
2、清单文件
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
3、布局
3.1主布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".activity.MainActivity">
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
/>
</RelativeLayout>
3.2跳转后Activity布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
4、代码
4.1 mainActivity
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 asyncHttpClient = new AsyncHttpClient();
String url = "https://mock.eolinker.com/success/gIbgeNycc15SNh5mrSNTGC2Tr5WTUsCM";
asyncHttpClient.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 adapter = new ImageAdapter(MainActivity.this, data);
gv.setAdapter(adapter);
} catch (JSONException 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 (JSONException e) {
e.printStackTrace();
}
return convertView;
}
}
}
4.2 跳转后Activity
public class ImageBrowseActivity extends FragmentActivity {
@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);
ArrayList<String> images = intent.getStringArrayListExtra("images");
ImageBrowseAdapter adapter = new ImageBrowseAdapter(getSupportFragmentManager(), images);
vp.setAdapter(adapter);
}
}
4.3 适配器