今天用了下chrisbanes-PhotoView 第三方library,地址:https://github.com/chrisbanes/PhotoView/tree/master

Android studio注意导入library Modules的时候,要在最外层的build.gradle里面加上classpath ‘com.novoda:bintray-release:0.3.4’
比如这样:

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:1.3.0'classpath 'com.novoda:bintray-release:0.3.4'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}

可以去看上面的例子,也可以看下面的三个例子:

1、SimpleSample 基础案例

 <uk.co.senab.photoview.PhotoViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:id="@+id/pv"/>
public class SimpleActivity extends Activity {private ImageView imageView;private PhotoViewAttacher attacher;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simple);imageView = (ImageView) findViewById(R.id.pv);imageView.setImageResource(R.drawable.wallpaper);attacher = new PhotoViewAttacher(imageView);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main_menu, menu);return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {MenuItem item = menu.findItem(R.id.menu_zoom_toggle);if (item != null) {item.setTitle(attacher.canZoom() ? "Disable Zoom" : "Enable Zoom");}return super.onPrepareOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.menu_zoom_toggle:// 根据手势缩放attacher.setZoomable(!attacher.canZoom());break;case R.id.menu_random:// 缩放到随机比例Random random = new Random();float minScale = attacher.getMinimumScale();float maxScale = attacher.getMaximumScale();float randomScale = minScale + (random.nextFloat() * (maxScale - minScale));attacher.setScale(randomScale, true);break;}return super.onOptionsItemSelected(item);}@Overrideprotected void onDestroy() {super.onDestroy();attacher.cleanup();}
}

2、ViewPagerSample 滑动案例

public class ViewPagerActivity extends Activity {private ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_viewpager);mViewPager = (ViewPager) findViewById(R.id.viewpager);mViewPager.setAdapter(new SamplePagerAdapter());}static class SamplePagerAdapter extends PagerAdapter {private static final int[] sDrawables = {R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper};@Overridepublic Object instantiateItem(ViewGroup container, int position) {PhotoView photoView = new PhotoView(container.getContext());photoView.setImageResource(sDrawables[position]);container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);return photoView;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic int getCount() {return sDrawables.length;}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}}
}

3、RotationSample 图片旋转案例

public class RotationSampleActivity extends Activity {private PhotoView photoView;private final android.os.Handler handler = new android.os.Handler();private boolean rotating = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_rotation);photoView = (PhotoView) findViewById(R.id.pv);photoView.setImageResource(R.drawable.wallpaper);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 0, Menu.NONE, "Rotate 10° Right");menu.add(Menu.NONE, 1, Menu.NONE, "Rotate 10° Left");menu.add(Menu.NONE, 2, Menu.NONE, "Toggle automatic rotation");menu.add(Menu.NONE, 3, Menu.NONE, "Reset to 0");menu.add(Menu.NONE, 4, Menu.NONE, "Reset to 90");menu.add(Menu.NONE, 5, Menu.NONE, "Reset to 180");menu.add(Menu.NONE, 6, Menu.NONE, "Reset to 270");return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case 0:photoView.setRotationBy(10);return true;case 1:photoView.setRotationBy(-10);return true;case 2:toggleRotation();return true;case 3:photoView.setRotationTo(0);return true;case 4:photoView.setRotationTo(90);return true;case 5:photoView.setRotationTo(180);return true;case 6:photoView.setRotationTo(270);return true;}return super.onOptionsItemSelected(item);}private void toggleRotation() {if (rotating) {handler.removeCallbacksAndMessages(null);} else {rotateLoop();}rotating = !rotating;}private void rotateLoop() {handler.postDelayed(new Runnable() {@Overridepublic void run() {photoView.setRotationBy(1);rotateLoop();}}, 15);}
}

Android chrisbanes-PhotoView 使用案例相关推荐

  1. android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能

    Android使用Photoview实现图片左右滑动及缩放功能 发布时间:2020-10-12 14:51:12 来源:脚本之家 阅读:119 作者:kuaizilanqiu 我想,不管是做什么样的a ...

  2. Android Native crash 处理案例分享

    简介:Android Native crash 处理案例分享 1. 背景 目前 mPaas[1] Android使用Crash SDK对闪退进行的处理,CrashSDK 是 Android 平台上一款 ...

  3. android shareSDK 微博分享案例

    [置顶] android shareSDK 微博分享案例 分类: Android2014-10-10 08:57 11694人阅读 评论(4) 收藏 举报 android shareSDK 微博分享案 ...

  4. Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6 Show in File Show i

    问题描述:AS出现错误:Error:(31, 13) Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6   Show in File   ...

  5. Error:(63, 20) Failed to resolve: com.github.chrisbanes:PhotoView:2.0.0

    报错:Error:(63, 20) Failed to resolve: com.github.chrisbanes:PhotoView:2.0.0 Show in File Show in Proj ...

  6. android 图解 PhotoView,从‘百草园’到‘三味书屋’!

    PhotoView, android 图解 PhotoView 从0到1,从

  7. 【Android】程序包com.github.chrisbanes.photoview不存在

    解决方法: 1.常规的clear,rebuild 2.在项目下添加配置,在jcenter()下 repositories { ... maven { url "https://jitpack ...

  8. [Android Studio 日常奇怪问题记录] 之Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6

    解决方法: 在build.gradle中添加 maven{url "https://jitpack.io"}

  9. Android之PhotoView使用(原创)

    文章大纲 一.什么是PhotoView 二.代码实战 三.项目源码下载 一.什么是PhotoView   一款 ImageView 展示框架,支持缩放,响应手势,位于图片排行榜的第五位,PhotoVi ...

  10. 学习android 画板源代码,Android实现画画板案例

    郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...

最新文章

  1. vue list添加元素_Vue简单入门及组件的简单使用
  2. 按键抖动仿真Testbench(repeat、task、random)的用法
  3. java调用接口失败重试,httpclient接口测试中重试控制器设置
  4. 光用滴答清单也可以专注学习
  5. 内存分段分页机制理解_深入理解虚拟机,JVM高级特性-自动内存管理机制
  6. java每日小算法(10)
  7. JPA - EntityTransaction与事务
  8. 调整的飞秋官网幅度还非常的大
  9. Flutter 之 StatefulWidget和StatelessWidget
  10. UVa 10635 (LIS+二分) Prince and Princess
  11. Shell 把日志记录按天切割到不同的文件
  12. jquery多字段筛选,极简方法
  13. Cozmo人工智能机器人SDK使用笔记(8)-应用部分apps
  14. 电动汽车动力系统整车仿真,具有双向DCDC变换器实现能量反馈,可带异步电机
  15. 最新麻瓜编程实用主义学Python分享
  16. 对计算机数字不敏感怎么解决,英语听力对数字不敏感的解决办法
  17. Logback最佳实践和使用指导
  18. 【数据结构 课程设计】识别结点(node) 故障和边缘(edge)故障中的网络断层扫描
  19. [CSP-S模拟测试]:游戏(最短路)
  20. 浅谈机器人控制与仿真设计----RDS和ROS

热门文章

  1. UNetbootin for Linux制作u盘安装盘
  2. python读取Excel指定范围并转为数组
  3. arcgis server 学习(一) 地图要素查询
  4. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十五:SDHC模块
  5. 安卓镜像刻录软件_Android烧录工具-安卓烧录工具下载v6.0.43 官方最新版-西西软件下载...
  6. 【实战】物联网安防监控项目【4】———从网页上控制A9的LED灯
  7. 分享实录|区块链技术如何快速落地
  8. ZZULIOJ 2348: 小明的第一份实习任务(前缀和)
  9. MCE公司:药研发的守护天使-MCE化合物库之先导篇
  10. Jxta 命令 shell