Jonce 发布的文章

PorterDuffXfermode的用法

Android.graphics.Paint

public Xfermode setXfermode (Xfermode xfermode)
Set or clear the xfermode object. Pass null to clear any previous xfermode.
As a convenience, the parameter passed is also returned.

设置两张图片相交时的模式。
在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;如果它是部分透明的,那么它将会被染上下面的颜色。
而setXfermode就可以来解决这个问题 .

Canvas canvas = new Canvas(dstBitmap);  
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));    
canvas.drawBitmap(srcBitmap, 0f, 0f, paint);  

canvas原有的图片可以理解为背景,就是dst;
新画上去的图片可以理解为前景,就是src。

EE05B252-EFFC-4F14-A4FD-59BC9E58A55D.png

搭建Json在线格式化站点

前言

周末闲来无事,想到了想搭建一个格式化Json数据的工具,最好能到处可以使用。首选搭建一个在线的站点,完全满足要求。

步骤:

  1. 下载站点资源
  2. 修改编辑资源路径及跳转的url
  3. 搭建访问站点环境
  4. 访问验证/浏览器兼容

开始

Google了一把选择Json.cn为仿制模版,

下载站点资源

3867E41F-96B1-4BF7-85EF-8DF0FEA2AFE0.png

- 阅读剩余部分 -

HashMap 的实现原理

HashMap 概述

HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒定不变。

此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代collection视图所需要的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以迭代性能很重要,则不要将初始容量设置得太高将加载因子设置得太低。

需要注意的是: Hashmap 不是同步的, 如果多个线程同时访问一个HashMap, 而其中至少一个线程从结构上(指添加或者删除一个或多个映射关系的任何操作)修改了,则必须保持外部同步,以防止对映射进行意外的非同步访问。

HashMap的数据结构
在Java编程语言中,最基本的结构就是两种,一个是数组,另一个是指针(引用), HashMap就是通过这连个数据结构进行实现。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

hashmap1.jpg

- 阅读剩余部分 -