Android使用Photoview实现图片左右滑动及缩放功能

 更新时间:2018年01月24日 13:45:00   作者:kuaizilanqiu  
这篇文章主要为大家详细介绍了Android使用Photoview实现图片左右滑动及缩放功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

我想,不管是做什么样的app。一般都会涉及到图片点击方法,和左右滑动的功能吧。今天我就把自己的实现拿来分享一下。图片的加载用到了picasso的图片加载工具。

第一步:注入依赖

compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.github.chrisbanes:PhotoView:1.3.0'

第二步,我们就来实现这个功能。多张图片左右滑动,这需要用到ViewPager这个类。
且看布局:

<uk.co.senab.photoview.sample.HackyViewPager
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/iv_photo"
 android:layout_width="match_parent"
 android:layout_height="match_parent"/>

这里用到了自定义的ViewPager

public class HackyViewPager extends ViewPager {

 public HackyViewPager(Context context) {
 super(context);
 }

 public HackyViewPager(Context context, AttributeSet attrs) {
 super(context, attrs);
 }

 @Override
 public boolean onInterceptTouchEvent(MotionEvent ev) {
 try {
  return super.onInterceptTouchEvent(ev);
 } catch (IllegalArgumentException e) {
  e.printStackTrace();
  return false;
 }
 }
}

这个是点击之后跳转到大图的Activity,来显示大图。最重要也是很简单的一步:

package uk.co.senab.photoview.sample;

import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;

import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;

import uk.co.senab.photoview.PhotoView;
import uk.co.senab.photoview.PhotoViewAttacher;

public class PicassoSampleActivity extends AppCompatActivity {

 ViewPager mViewPager;
 //String position;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_simple);
 mViewPager = (HackyViewPager) findViewById(R.id.iv_photo);
 setContentView(mViewPager);
 mViewPager.setAdapter(new SamplePagerAdapter());
 //position=getIntent().getStringExtra("position");

 //设置默认的坐标,实际情况不要写死,只需点击哪张图片的position,并传过来接受就可以了,就默认显示点击图片的大图。
 //mViewPager.setCurrentItem(Integer.parseInt(position));
 mViewPager.setCurrentItem(2);
 }

 static class SamplePagerAdapter extends PagerAdapter {
 //这里暂时写死了,实际情况中要从服务端获取图片地址结合,传过来
 private static final String[] url = {"/media/Bist9mvIYAAeAyQ.jpg", "/album/whcrop%3D657%2C370%3Bq%3D90/sign=2c994e578a82b9013df895711cfd9441/09fa513d269759eede0805bbb2fb43166d22df62.jpg",
  "/d/file/2013-11-14/13631d143b7076dc3257b1e516a2a9a2.jpg", "/f5/63/d/7.jpg"};

 @Override
 public int getCount() {
  return url.length;
 }

 @Override
 public View instantiateItem(ViewGroup container, int position) {
  PhotoView photoView = new PhotoView(container.getContext());
  final PhotoViewAttacher attacher = new PhotoViewAttacher(photoView);
  Picasso.with(container.getContext())
   .load(url[position])
   .into(photoView, new Callback() {
   @Override
   public void onSuccess() {
    attacher.update();
   }

   @Override
   public void onError() {

   }
   });

  container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

  return photoView;
 }

 @Override
 public void destroyItem(ViewGroup container, int position, Object object) {
  container.removeView((View) object);
 }

 @Override
 public boolean isViewFromObject(View view, Object object) {
  return view == object;
 }

 }
}

有了这个工具我们很轻松就实现了图片点击放大,左右活动,缩放等功能。

相关文章

  • Android控件之EditView常用属性及应用方法

    Android控件之EditView常用属性及应用方法

    本篇文章介绍了,Android控件之EditView常用属性及应用方法。需要的朋友参考下
    2013-04-04
  • Android自定义手机界面状态栏实例代码

    Android自定义手机界面状态栏实例代码

    我们知道IOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态栏背景颜色啦,这是个不错的体验
    2017-03-03
  • Android Studio OkHttpClient使用教程详解

    Android Studio OkHttpClient使用教程详解

    这篇文章主要介绍了Android Studio OkHttpClient使用教程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Kotlin Flow常见场景下的使用实例

    Kotlin Flow常见场景下的使用实例

    这篇文章主要为大家介绍了Kotlin Flow常见场景下的使用实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • android网络编程之android连接网络的简单示例代码

    android网络编程之android连接网络的简单示例代码

    这篇文章主要介绍了android连接网络的简单示例,需要的朋友可以参考下
    2014-04-04
  • Android手机卫士之设置密码对话框

    Android手机卫士之设置密码对话框

    这篇文章主要为大家详细介绍了Android手机卫士之设置密码对话框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android补间动画的实现示例

    Android补间动画的实现示例

    本文主要介绍了Android补间动画的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Android系统实现DroidPlugin插件机制

    Android系统实现DroidPlugin插件机制

    这篇文章主要为大家详细介绍了Android系统上实现DroidPlugin插件机制,可以在无需安装、修改的情况下运行APK文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android进阶Hook拦截系统实例化View过程实现App换肤功能

    Android进阶Hook拦截系统实例化View过程实现App换肤功能

    这篇文章主要为大家介绍了Android进阶Hook拦截系统实例化View过程实现App换肤功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android利用动画实现背景逐渐变暗

    Android利用动画实现背景逐渐变暗

    这篇文章主要为大家详细介绍了Android利用动画实现背景逐渐变暗的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论