photoview-----图片放大与缩小
2017-03-24 13:35
120 查看
1:导依赖
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.squareup.picasso:picasso:2.5.1'
photoView 导jar包
compile files('libs/uk-co-senab-photoview.jar')
compile 'com.github.bumptech.glide:glide:3.5.2'
2:main_layout
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
/>
点击item,跳过去activity的布局
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
适配器布局
<ImageView
android:id="@+id/iv"
android:layout_width="150dp"
android:layout_height="150dp"
android:scaleType="centerCrop"/>
最重要的布局
<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 ImageActivity extends AppCompatActivity {
private ViewPager vp;
private List<User.DataInfo> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
vp= (ViewPager) findViewById(R.id.vp);
Intent intent = getIntent();
User user = (User) intent.getSerializableExtra("user");
list = user.data;
int position = intent.getIntExtra("position", 0);
vp.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view=View.inflate(ImageActivity.this,R.layout.item,null);
PhotoView pv= (PhotoView) view.findViewById(R.id.pv);
String image_url = list.get(position).image_url;
Picasso.with(ImageActivity.this).load(image_url).into(pv);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
});
vp.setCurrentItem(position);
}
}
MAinActivity
public class MainActivity extends AppCompatActivity {
private GridView gv;
private List<User.DataInfo> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gv= (GridView) findViewById(R.id.gv);
//获取数据
getServerData();
}
private void getServerData() {
String url="http://mock.eoapi.cn/success/aDpzG1ZiKPbEI6JdXjqasb958Q1rBg9j";
AsyncHttpClient client=new AsyncHttpClient();
client.get(MainActivity.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) {
Gson gson=new Gson();
final User user = gson.fromJson(responseString, User.class);
list = user.data;
gv.setAdapter(new MyAdapter());
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent it=new Intent(MainActivity.this,ImageActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("user",user);
it.putExtras(bundle);
it.putExtra("position",position);
startActivity(it);
}
});
}
});
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@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) {
ImageView image=new ImageView(MainActivity.this);
Picasso.with(MainActivity.this).load(list.get(position).image_url).into(image);
return image;
}
}
}
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.squareup.picasso:picasso:2.5.1'
photoView 导jar包
compile files('libs/uk-co-senab-photoview.jar')
compile 'com.github.bumptech.glide:glide:3.5.2'
2:main_layout
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
/>
点击item,跳过去activity的布局
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
适配器布局
<ImageView
android:id="@+id/iv"
android:layout_width="150dp"
android:layout_height="150dp"
android:scaleType="centerCrop"/>
最重要的布局
<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 ImageActivity extends AppCompatActivity {
private ViewPager vp;
private List<User.DataInfo> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
vp= (ViewPager) findViewById(R.id.vp);
Intent intent = getIntent();
User user = (User) intent.getSerializableExtra("user");
list = user.data;
int position = intent.getIntExtra("position", 0);
vp.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view=View.inflate(ImageActivity.this,R.layout.item,null);
PhotoView pv= (PhotoView) view.findViewById(R.id.pv);
String image_url = list.get(position).image_url;
Picasso.with(ImageActivity.this).load(image_url).into(pv);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
});
vp.setCurrentItem(position);
}
}
MAinActivity
public class MainActivity extends AppCompatActivity {
private GridView gv;
private List<User.DataInfo> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gv= (GridView) findViewById(R.id.gv);
//获取数据
getServerData();
}
private void getServerData() {
String url="http://mock.eoapi.cn/success/aDpzG1ZiKPbEI6JdXjqasb958Q1rBg9j";
AsyncHttpClient client=new AsyncHttpClient();
client.get(MainActivity.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) {
Gson gson=new Gson();
final User user = gson.fromJson(responseString, User.class);
list = user.data;
gv.setAdapter(new MyAdapter());
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent it=new Intent(MainActivity.this,ImageActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("user",user);
it.putExtras(bundle);
it.putExtra("position",position);
startActivity(it);
}
});
}
});
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@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) {
ImageView image=new ImageView(MainActivity.this);
Picasso.with(MainActivity.this).load(list.get(position).image_url).into(image);
return image;
}
}
}
相关文章推荐
- PhotoView实现图片随手势的放大缩小的效果
- Android ViewPager+PhotoView+Fragment 图片滑动缩小放大
- 图片随手势放大缩小PhotoView的使用
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- photoview实现图片双击放大缩小平移操作
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- Glide配合PhotoView使用时,图片放大缩小时宽高显示出问题解决记录(新更新)
- PhotoView点击图片放大缩小
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- 使用ViewPager和Photoview实现图片左右滑动和放大缩小
- android 图片浏览功能 图片放大缩小 使用 photoview 双击或双指缩放的ImageView
- ImageView+ViewPager+PhotoView实现朋友圈图片点击全屏查看支持放大缩小
- PhotoView双击放大缩小图片
- PhotoView图片放大缩小使用方法
- PhotoView 放大缩小图片,支持gif格式
- PhotoView图片的放大和缩小的用法
- Android中图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
- photoview简单实现图片放大缩小
- [置顶] Android基于photoView点击选择坐标,放大缩小图片时,坐标位置对应改变
- 用开源项目PhotoView实现图片的双指缩放和双击放大缩小