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

发布时间:2020-10-12 14:51:12

来源:脚本之家

阅读:119

作者:kuaizilanqiu

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

第一步:注入依赖

compile 'com.squareup.picasso:picasso:2.5.2'

compile 'com.github.chrisbanes:PhotoView:1.3.0'

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

且看布局:

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 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能相关推荐

  1. Android横向滚动卡片,Android实现横向滑动卡片效果

    Android实现横向滑动卡片效果 发布时间:2020-09-04 22:51:17 来源:脚本之家 阅读:255 作者:itbobby 最近项目上需要实现这样效果的一个页面,本来想找个现成的两下搞定 ...

  2. Android横向滚动卡片,Android滑动卡片成效:Swipecards

    一个类似于 Tinder的Android库,用于创建滑动卡片效果. 您可以向左或向右滑动来切换喜欢或不喜欢的内容. //implement the onFlingListener public cla ...

  3. Android横向滚动卡片,Android仿探探卡片式滑动效果实现

    前言 第一次进入探探软件界面,就被这种通过卡片式滑动来选择"喜欢/不喜欢"的设计所吸引了.当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路.不过毋庸置疑的是,这种效果 ...

  4. android 横向滚动 导航,仿今日头条横向滚动导航栏--原生js

    咳咳!先打一波小广告,在上一篇里忘记了,那啥--我的那个个人博客做好了-->(我的博客) 好嘞,言归正传,说说我们的效果. 其实就是实现横向滑动,进行选择. 原理: 鼠标按下,获取当前鼠标坐标, ...

  5. android 横向滚动选择,HorizontalScrollSelectedView

    横向滚动的,可以支持大量文本选择的 自定义View ,简单易用 , 无OOM情况 效果图 博客介绍 Downloadallprojects { repositories {    ... maven  ...

  6. Android 横向滚动列表 (类似横向ListView)

    示例: 布局代码***.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  7. android 横向铺满,Android开发全程记录(八)——设置ImageView显示的图片铺满全屏(适应魅族等不常见屏幕比例)...

    为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...

  8. Android横向滚动卡片,RecyclerView+CardView实现横向卡片式滑动效果

    现在来介绍两种控件recyclerview和cardview,并通过实例将它们结合在一起实现一种横向卡片式滑动效果. 1.recyclerview recyvlerview是android sdk 新 ...

  9. android循环滚动textview,Android 循环上下滚动

    最近在做项目的时候遇到了一个上下滚动文字的需求,在网上找到了一个自定义的TextView,但是切换效果很图片,没有滚动的效果,考虑到html的marquee效果添加到TextView中,无奈没有效果, ...

最新文章

  1. python3.7版本_Centos7升级Python3.7.3版本
  2. 基于问题导向与成果产出的教学模式:《大数据与城市规划》特色课程
  3. iOS11和机器学习CoreML库
  4. css实现倒8字效果
  5. php 表单录入,PHP 表单和用户输入
  6. leetcode面试题 04.12. 求和路径(dfs)
  7. python计算二维平面的曲线的曲率
  8. 面向对象的3个基本要素和5个基本设计原则(整理)
  9. 常用linux网络配置命令
  10. 你真的会用 VS Code 的 Ctrl、Shift和Alt吗?高效易用的快捷键:多光标、跳转引用等轻松搞定
  11. java编译命令是什么_java编译命令,java的编译命令是什么?
  12. 开源免费的pdf文档编辑器LibreOffice
  13. 计算机硬件性能检测报告,性能测试实验报告.doc
  14. python速成_速成python
  15. Juniper防火墙的HA(高可用性)配置
  16. A16.从零开始前后端react+flask - 将前端数据保存到数据库
  17. 电脑休眠、睡眠、待机的区别
  18. sql语句中的limit用法
  19. RabbitMQ-三、Java使用--3、路由选择 (Routing)
  20. 精读:REDQUEEN: Fuzzing with Input-to-State Correspondence

热门文章

  1. python菱形_python如何输出菱形与空心菱形详解与巧妙地使用center方法
  2. 免费python网络课程-python网络课程
  3. 零基础学python难吗-学习python12小时后,告诉你,学python真没你想的那么难!
  4. 用python画漂亮图-使用 Python/matplotlib 画出漂亮的论文插图
  5. 智能机器人语音ic丨智能玩具语音识别芯片丨机器人语音播报芯片丨AI语音提示芯片...
  6. 华哥讲堂:解析智能电视语音控制功能
  7. 【当贝市场】智能电视语音识别功能泄露隐私?
  8. 苹果测试集了成语音识别和人脸识别的智能家居?
  9. jQuery之animate自定义动画
  10. ActionScript 3.0 API 中的 Video 类