bitmap

RxJava 简易上手指南

ぃ、小莉子 提交于 2020-02-29 21:46:32
RxJava简易上手指南 标签(空格分隔): android rxjava 作者:陈小默 版权声明:禁止商用,转载请注明出处 [toc] 本文章仅作为初学者最快上手实践,不会深入涉及代码原理,有兴趣的朋友可以参阅 扔物线-给Android开发者的RxJava详解 #一、介绍 RxJava通过扩展的观察者模式实现异步操作 Observable:被观察者 Observer:观察者 Subscriber:消息订阅者 其中的关系是观察者(Observer)或者消息订阅者(Subscriber)通过订阅(subscribe)的方式观察被观察者(Observable)的行为 #二、回调方法介绍 ##2.1 观察者对象<span id = "观察者对象"></span> //观察者对象 实现了观察者接口,其中泛型代表了观察者需要的相应对象 Observer<String> observer = new Observer<String>() { @Override public void onCompleted() { //观察任务完成时回调 } @Override public void onError(Throwable e) { //发生错误时回调,并即刻终止事件序列的传递(与onCompleted方法互斥) } @Override public void onNext(String s)

Android ImageView

瘦欲@ 提交于 2020-02-29 19:48:26
ImageView   ImageView,图像视图,直接继承自View类,它的主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示。ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作。   ImageView的一些常用属性,并且这些属性都有与之对应的getter、setter方法: android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片的长宽比。 android:maxHeight:设置ImageView的最大高度。 android:maxWidth:设置ImageView的最大宽度。 android:scaleType:设置所显示的图片如何缩放或移动以适应ImageView的大小。 android:src:设置ImageView所显示的Drawable对象的ID。   对于android:scaleType属性,因为关于图像在ImageView中的显示效果,所以有如下属性值可以选择: matrix:使用matrix方式进行缩放。 fitXY:横向、纵向独立缩放,以适应该ImageView。 fitStart:保持纵横比缩放图片,并且将图片放在ImageView的左上角。 fitCenter:保持纵横比缩放图片

Android 多线程----AsyncTask异步任务详解

夙愿已清 提交于 2020-02-29 08:48:04
【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号: http://www.cnblogs.com/smyhvae/ 文章来源: http://www.cnblogs.com/smyhvae/p/3866570.html 【正文】 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信。 一、Android当中的多线程: 在Android当中,当一个应用程序的组件启动的时候,并且没有其他的应用程序组件在运行时,Android系统就会为该应用程序组件开辟一个新的线程来执行。默认的情况下,在一个相同Android应用程序当中,里面的组件都是运行在同一个线程里的,这个线程称之为Main线程。当我们通过某个组件来启动另一个组件的时候,这个时候默认都是在同一个线程当中完成的。当然,我们可以自己来管理我们的Android应用的线程,我们可以根据我们自己的需要来给应用程序创建额外的线程。 二、Main Thread 和 Worker Thread: 在Android当中,通常将线程分为两种,一种叫做Main Thread,除了Main Thread之外的线程都可称为Worker Thread。 当一个应用程序运行的时候,Android操作系统就会给该应用程序启动一个线程,这个线程就是我们的Main Thread,这个线程非常重要

bitmap 和布隆过滤器

随声附和 提交于 2020-02-28 15:56:25
如何解决排重问题: 对于大量的数据,有很多排重方案可以使用,典型的就是 哈希表 。哈希表实际上为 每一个可能出现的数字 提供了一个 一一映射 的关系,每个元素都相当于有了自己的独享的一份空间,这个映射由散列函数来提供(这里我们先不考虑碰撞)。实际上哈希表甚至还能记录每个元素出现的次数,但是用哈希表的话,会占用很多的空间,所以此处不考虑。 做两件事: 集合中每个元素有一个 独享的空间 找到一个到这个空间的 映射方法 Bitmap的好处在于 空间复杂度不随原始集合内元素的个数增加而增加 ,而它的坏处也源于这一点—— 空间复杂度随集合内最大元素增大而线性增大 。 google的guava包中提供了BloomFilter类,新建一个maven工程,引入guava包 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>22.0</version> </dependency> bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中。和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储一个标志,用来判断key是否在集合中。 算法: 1. 首先需要k个hash函数

Android Bitmap压缩策略

Deadly 提交于 2020-02-28 03:38:40
一、为什么Bitmap需要高效加载? 现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制,只有 小几十M,如16M,这导致加载 Bitmap 的时候很容易出现内存溢出。如下异常信 息,便是在开发中经常需要的: java.lang.OutofMemoryError:bitmap size exceeds VM budget 为了解决这个问题,就出现了Bitmap的高效加载策略。其实核心思想很简单。假设 通过 ImageView 来显示图片,很多时候 ImageView 并没有原始图片的尺寸那么大, 这个时候把整个图片加载进来后再设置给 ImageView ,显然是没有必要的,因为 ImageView 根本没办法显示原始图片。这时候就可以按一定的采样率来将图片缩小 后再加载进来,这样图片既能在 ImageView 显示出来,又能降低内存占用从而在一 定程度上避免 OOM ,提高了 Bitmap 加载时的性能 二、Bitmap高效加载的具体方式 1.加载Bitmap的方式 Bitmap在Android中指的是一张图片。通过BitmapFactory类提供的四类方法: decodeFile , decodeResource , decodeStream 和 decodeByteArray ,分别从文件系统, 资源,输入流和字节数组中加载出一个Bitmap对象,其中

Android Bitmap压缩策略

时光总嘲笑我的痴心妄想 提交于 2020-02-27 23:18:29
一、为什么Bitmap需要高效加载? 现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制,只有 小几十M,如16M,这导致加载 Bitmap 的时候很容易出现内存溢出。如下异常信 息,便是在开发中经常需要的: java.lang.OutofMemoryError:bitmap size exceeds VM budget 为了解决这个问题,就出现了Bitmap的高效加载策略。其实核心思想很简单。假设 通过 ImageView 来显示图片,很多时候 ImageView 并没有原始图片的尺寸那么大, 这个时候把整个图片加载进来后再设置给 ImageView ,显然是没有必要的,因为 ImageView 根本没办法显示原始图片。这时候就可以按一定的采样率来将图片缩小 后再加载进来,这样图片既能在 ImageView 显示出来,又能降低内存占用从而在一 定程度上避免 OOM ,提高了 Bitmap 加载时的性能 二、Bitmap高效加载的具体方式 1.加载Bitmap的方式 Bitmap在Android中指的是一张图片。通过BitmapFactory类提供的四类方法: decodeFile , decodeResource , decodeStream 和 decodeByteArray ,分别从文件系统, 资源,输入流和字节数组中加载出一个Bitmap对象,其中

Bitmap

大憨熊 提交于 2020-02-27 18:25:03
一、避免Bitmap加载太大的图片引起OOM 不考虑图片精度问题,则可以使用图片压缩,压缩后的目标图片大小可以参照视图控件的大小: 1.计算视图控件的宽和高 2.Decode时使用BitmapFactory.Options参数,设置BitmapFactory.Options的inJustDecodeBounds变量为true,只获取图片的长和宽,不为图片分配内存 3.计算宽的压缩比和高的压缩比,取小的,这样压缩后的图片大小一定都会>=视图控件的宽和高,设置options.inSampleSize值为计算出的压缩比 4.设置 options.inJustDecodeBounds = false,调用BitmapFactory.decodeResource(res, resId, options)根据options参数解析图片 /** 计算压缩比 */ public static int calculateInSampleSize ( BitmapFactory . Options options , int reqWidth , int reqHeight ) { // 源图片的高度和宽度 final int height = options . outHeight ; final int width = options . outWidth ; int inSampleSize =

生成规定大小的图片(缩略图生成)

穿精又带淫゛_ 提交于 2020-02-27 08:33:03
做一购物网站,改版N次,每次改版那产品列表图的大小都会变,第一次是90*70,第二次改版又变成160*120,每次改版都得把产品图片文件夹中的2W多张图片一个一个转为对应的大小的图片,以前用的是网上找的一个方法: 代码 /// <summary> 生成缩略图 /// /// </summary> /// <param name="originalImagePath"> 源图路径(物理路径) </param> /// <param name="thumbnailPath"> 缩略图路径(物理路径) </param> /// <param name="width"> 缩略图宽度 </param> /// <param name="height"> 缩略图高度 </param> /// <param name="mode"> 生成缩略图的方式 </param> /// public static void MakeThumbnail( string originalImagePath, string thumbnailPath, int width, int height, string mode) { System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath); int

一口一口吃掉Volley(二)

穿精又带淫゛_ 提交于 2020-02-27 04:14:03
欢迎访问我的 个人博客 转发请注明出处:http://www.wensibo.top/2017/02/17/一口一口吃掉Volley(二)/ 相信看了 第一篇教程 之后,你应该会对Volley有一个初步的了解了吧,那接下来就继续学习如何使用Volley进行开发吧! 配置Gradle 使用如下命令导入Volley库: compile 'com.mcxiaoke.volley:library:1.0.19' 如果你还是使用Eclipse进行开发的话,可以下载 volley的jar包 导入工程。 添加联网许可 在AndroidManifest.xml文件中添加联网的请求 <uses-permission android:name="android.permission.INTERNET"/> 使用StringRequest 如果你需要通过网络访问的资源属于String字符串的资源,那么使用StringRequest就最为简单了,只需按照如下步骤就行了。 ① 获取一个RequestQueue RequestQueue mQueue = Volley.newRequestQueue(this); ② 构造一个StringRequest对象 StringRequest stringRequest=new StringRequest("http://www.wensibo.top" , new

Android设置高斯模糊

我与影子孤独终老i 提交于 2020-02-26 15:51:49
分享自己写的一个高斯模糊的工具类,可以根据Bitmap,Imageviw,Drawable或者资源文件设置 public class BlurImageView { /** 水平方向模糊度 */ public static float HRADIUS = 5; /** 竖直方向模糊度 */ public static float VRADIUS = 5; /** 模糊迭代度 */ public static int ITERATIONS = 5; /** * 根据bitmap设置高斯模糊 * @param bmp:bitmap参数 * @return */ public static Drawable BoxBlurFilter(Bitmap bmp) { int width = bmp.getWidth(); int height = bmp.getHeight(); int[] inPixels = new int[width * height]; int[] outPixels = new int[width * height]; Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888); bmp.getPixels(inPixels, 0, width, 0, 0, width,