android组件用法说明,Android第三方控件PhotoView使用方法详解

Android第三方控件PhotoView使用方法详解

发布时间:2020-10-21 15:06:09

来源:脚本之家

阅读:74

作者:zhaihaohao1

PhotoView的简介:

这是一个图片查看库,实现图片浏览功能,支持pinch(捏合)手势或者点击放大缩小。支持在ViewPager中翻页浏览图片。

PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件。功能实用和强大。

PhotoView的功能:

图片浏览查看

双指缩放

单点触摸缩放

图片缩放模式设置

基本用法:导入jar包,布局XML里设置PhotoView

将ImageView传入PhotoViewAttacher

代码演示:

使用 PhotoView进行网络图片和本地图片的加载,缩放和点击事件处理

布局文件中:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity"

android:orientation="vertical"

>

android:id="@+id/iv_photo1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

/>

android:id="@+id/iv_photo2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

/>

MainActivity中:

public class MainActivity extends Activity {

private PhotoView iv_photo1;

private PhotoView iv_photo2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv_photo1 = (PhotoView) findViewById(R.id.iv_photo1);

iv_photo2 = (PhotoView) findViewById(R.id.iv_photo2);

// localImage();

netImage();

}

/**

* 加载本地图片

*

*/

private void localImage() {

// 加载本地图片,缩放处理

try {

// 图片在asset目录中

InputStream is = getAssets().open("photo2.jpg");

Bitmap bm = BitmapFactory.decodeStream(is);

iv_photo1.setImageBitmap(bm);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 加载网络图片

*/

private void netImage() {

ImageLoader loader = ImageLoader.getInstance();

loader.displayImage("https://www.baidu.com/img/bdlogo.png", iv_photo2);

iv_photo2.setOnPhotoTapListener(new OnPhotoTapListener() {

@Override

public void onPhotoTap(View arg0, float arg1, float arg2) {

Toast.makeText(MainActivity.this, "图片被点击了", 10).show();

}

});

}

}

BaseApplication中:

/**

* 加载网络图片时,需要对ImageLoader进行全局配置

*

*/

public class BaseApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

initImagloader(getApplicationContext());

}

private void initImagloader(Context context) {

File cacheDir = StorageUtils.getOwnCacheDirectory(context,

"photoview/Cache");// 获取到缓存的目录地址

// 创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(

context)

// 线程池内加载的数量

.threadPoolSize(3).threadPriority(Thread.NORM_PRIORITY - 2)

.memoryCache(new WeakMemoryCache())

.denyCacheImageMultipleSizesInMemory()

.discCacheFileNameGenerator(new Md5FileNameGenerator())

// 将保存的时候的URI名称用MD5 加密

.tasksProcessingOrder(QueueProcessingType.LIFO)

.discCache(new UnlimitedDiscCache(cacheDir))// 自定义缓存路径

// .defaultDisplayImageOptions(DisplayImageOptions.createSimple())

.writeDebugLogs() // Remove for release app

.build();

// Initialize ImageLoader with configuration.

ImageLoader.getInstance().init(config);// 全局初始化此配置

}

}

主清单配置文件中:

android:name="com.zhhandroid.BaseApplication"

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/app_name" >

需要导入的jar包:

photoview-library-1.2.2.jar

universal-image-loader-1.9.2_sources.jar

效果展示:

d275bc55a9bb6952822f0e0883a50b06.gif

jar包及源码:下载

这个库里面上面库里面有bug,参考这个库

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea中新建分支并且切换到新建的分支上

开发新功能,idea上新建自己的分支,要在dev分支上新建 首先,idea右下角可以看到目前在dev分支上 点击dev,接着New Branch 输入分支名 在Local Branches中就显示了 然后可以看到已经切换到刚新建的分支上了 想要切换到刚新建的分支上开发时,可以点击分支,在弹框上点击Checkout

vnpy怎么创建策略并回测_【手把手教你】入门量化回测最强神器backtrader(一)

1 引言目前基于Python的量化回测框架有很多,开源框架有zipline、vnpy、pyalgotrader和backtrader等,而量化平台有Quantopian(国外)、聚宽、万矿、优矿、米筐、掘金等,这些量化框架或平台各有优劣。就个人而言&#xff…

数据结构基础:算法的基础知识笔记

1、算法的概念算法是问题求解过程中的精确描述,它为解决某一特定类型的问题规定了一个运算过程。2、算法的特点2.1 有穷性一个算法必须在有穷的步骤结束后结束,并且每一步都在有穷时间内完成。2.2 确定性算法的执行过程中每一步都要有确定的定义&#xf…

数据结构基础:图结构的学习笔记

1、图的定义图是比树更加复杂的数据结构,在图的结构当中,任意两个节点之间都有可能有直接关系,所以图中一个节点的前驱和后继的数目是没有限制的。2、图的用途用于描述各种复杂的数据对象,在自然科学、社会科学和人文科学等很多领…

企业网站 源码 服务邮箱:_企业网站建设对于服务器的选择至关重要

网站建设是离不开租用服务器的,这是目前大多数企业都在做的。但有些企业由于对网站服务器的租用技巧及经验的缺乏,经常会导致网站在运营过程中出现非常多的问题,严重影响了企业业务的正常开展。石家庄网站建设方面的人才来说明几点不容忽视的…

linux sli 提高效率,从原理到性能提升 MCP78智能SLI全解析

NVIDIA正式发布了“Hbrid SLI”技术在昨日的2008 CES上,NVIDIA正式向外界发布了“Hbrid SLI”技术,即我们所俗称的混合SLI,而NVIDIA在发布时已更正式名为“智能SLI技术”。虽然这仅仅是NVIDIA在此次消费电子展上的宣讲主题之一,但…

[GitHub]第三讲:简单分支操作

Git 最核心的操作对象是版本( commit ),最核心的操作技巧就是分支。 什么是分支? 仓库创建后,一旦有了新 commit,默认就会放到一个分支上,名字叫 master。前面咱们一直看到的多个版本组成的一条…

算法基础:常用的排序算法知识笔记

1、算法外排序分类2、冒泡排序冒泡排序(Bubble Sort)属于交换排序,它的原理是:循环两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止。实现算法:/*** 冒泡排序优化后的算法* 设置一个…

302状态码_http状态码是什么?301 302 404的SEO应用场景

什么是HTTP状态码?简单的讲,就是用以表示网页服务器HTTP响应状态的3位数字代码。其中1xx表示临时响应,2xx表示成功处理了请求,3xx代表重定向,4xx表示请求错误,而5xx表示服务器错误。除了网页正常返回200之外…

算法基础:常用的查找算法知识笔记

1、查找表和查找效率的概念查找表是指由同一类型的数据元素构成的集合。分为静态查找表和动态查找表。1.1 静态查找表1、查询某个特定元素是否在查找表的集合当中2、查询某个特定元素的各种属性1.2 动态查找表1、在查找表中插入一个数据元素2、在查找表中删除一个元素1.3 关键字…

注解参数怎么使用变量_硅橡胶胶水有哪些特点?使用参数表现的怎么样?如何储存?...

作为单组分产品,硅橡胶胶水的使用方法简单又灵活。直接涂抹在粘接基面上,固化之后即可抵抗外界的压力与冲击。别看它的规格不是很打,却可以顺顺利利完成粘接,形成保护膜。硅橡胶胶水有哪些特点?没有固化之前,是半透明…

Java中return的两种用法

一、return语句总是用在方法中,有两个作用。 一个是返回方法指定类型的值(这个值总是确定的)。 一个是结束方法的执行(仅仅一个return语句)。 一般的就百是用在有反回值的方法中,用来返回方度法指定问类…

算法基础:递归算法知识笔记

1、递归算法定义递归算法是将重复问题分解为同类的子问题而解决问题的方法,其核心思想是分治策略。简单来说就是自己调用自己。直到达到退出递归的条件,则完成递归。2、递归的步骤1、找整个递归的终止条件:递归应该在什么时候结束&#xff1f…

ttl继承逻辑门的逻辑功能与参数测试 实验总结_LMS电声测试仪,LMS-V测试系统,精声电声...

LMS-V测试系统LMS扬声器测试仪从推出到现在25年的时间,在全世界被很多扬声器开发与制造厂家广泛应用研发与生产质量控制,传统的LMS扬声器测试仪采用ISA卡的形式提供,所以面临着越来越多的零件过时,所以为了彻底解决这些问题&#…

java中break标记的使用

笔试题目&#xff1a;break目前位于内层的for循环&#xff0c;如何才能让break作用于外层 的for循环。可以标记解决 标记的命名只要符合标识符的命名规则即可。 Test public void test2(){aaa:for(int j 0 ; j<3 ; j){ // j0 外层for循环for(int i 0 ; i< 2 ; i){ //…

电脑基础知识入门:键盘上的英文,意思和功能汇总!

电脑键盘是把文字信息的控制信息输入电脑的通道&#xff0c;从英文打字机的键盘演变而来的。它最早出现在电脑上的时候&#xff0c;还是一种叫做“电传打字机”的部件。那些陌生的键盘按键都有什么用途?很多孩子不知道键盘上功能键和字母数字键以外的键盘按键有什么用&#xf…

elementui el-dialog 离顶部的位置_驻马店建筑物避雷带的安装位置,本月报价

首页 > 新闻中心发布时间&#xff1a;2020-11-06 18:23:42 导读&#xff1a;科杰防雷为您提供驻马店建筑物避雷带的安装位置的相关知识与详情&#xff1a; 该系统在正常运行时&#xff0c;不管三相负荷平衡不平衡&#xff0c;在中性线N带电情况下&#xff0c;PE线不会带电。…

android 弹出框带标题栏,Android开发靠标题栏的弹框

一、效果图title_dialog.png二、思路首先它是一个弹框&#xff0c;只是弹框的布局做些处理&#xff0c;布局占满屏幕&#xff0c;只有需要白色的布局的背景设为白色。其他没设置背景颜色&#xff0c;自然用dialog的style的windowBackground三、案例关键代码dialog的xmlxmlns:ap…

算法基础:图的相关算法知识笔记

一、图的相关算法1、图的分类知识如下图&#xff1a;2、生成树概念对连通图进行遍历&#xff0c;过程中所经过的边和顶点的组合可看做是一棵普通树&#xff0c;通常称为生成树。连通图的生成树具有这样的特征&#xff1a;边的数量 顶点数 - 13、最小生成树在连通网的所有生成树…

java中break和continue的用法例子

break用于switch语句 1. break用于switch语句中&#xff0c;终止switch语句 下面先看 加上break,效果如下 我们可以看到&#xff0c;没有用过break关键字时&#xff0c;不会在判断下一个case的值&#xff0c;直接向后运行&#xff0c;直到遇到break&#xff0c;或者整体swit…