Tfly's Blog

一叶一菩提,一花一世界

QQ气泡拖拽效果

技术参考文章贝塞尔曲线介绍 Android自定义控件:类QQ未读消息拖拽效果 补充说明Android自定义控件:类QQ未读消息拖拽效果,这篇文章在求解A,B,C,D四个点上不尽详述,所以下面进行补充说明。 图示: 计算过程: 技术总结 计算A,B,C,D四点坐标 了解拖拽过程连接固定圆和拖拽圆之间的曲线实现,即贝塞尔曲线 如何让QQDotView拖拽区域为整个屏幕?使用WindowMan......

ListView滚动机制分析

目的了解ListView的滚动机制,在滚动过程中View如何添加到ListView。 实现过程先简单介绍下ListView滚动的大概算法。 算法实现: ACTION_MOVE动作触发,滚出屏幕外的View添加进scrap views,并且从ListView里detach 还在屏幕上的View,向滚动方向移动滚动距离 填充views 修正多余的滚动距离 图示: 源码分析下面分析ACTION......

Java泛型介绍

泛型定义:参数化类型,数据类型被指定为一个参数 定义泛型1.定义在类声明上,作用域为整个类 1public class ArrayList<T> 2.定义在方法上(静态方法也类似) 1public <T> void init(T t) 实例化泛型在实例化类或调用方法时要指定具体类。 12ArrayList<String> list=new ArrayLis......

RadioGroup调用check()方法onCheckedChanged()调用多次

情景再现布局文件activity_main.xml如下: 12345678910111213141516171819202122232425262728293031323334<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/......

Spanned flags说明

背景很多时候希望,文本的不同部分有不同的表示方式,比如某些字符串为红色、某些字符串加粗、添加背景色等等。如图所示: 要实现这种效果,通常使用SpannableString类或SpannableStringBuilder类。两者都要用到setSpan(Object what,int start,int end,int flags)方法,关于最后一个参数的含义就是本文章的主题。 flag的种类 ......

SQLite数据类型

概述我们熟知的数据库引擎大部分采用静态数据类型,即列定义的类型定义了值的存储,并且值要严格满足列的定义,同一列所有值的存储方式都相同,比如定义了一个列类型为整型 int,不能在该列上输入’abc’。SQLite的数据类型则采用了动态类型,列定义不能决定值的存储,值的存储由值本身决定,因此在SQLite中,同一列会有多种存储方式。 数据类型与存储类在SQLite中,存储分类和数据类型不是完全......

Android 的坐标系及矩阵变换

Android的坐标系2D坐标系android的2d坐标系如图所示,水平向右为X轴正方向,竖直向下为Y轴正方向,原点为屏幕左上角。 注意:以屏幕左上角为原点的坐标系,称作绝对坐标系,将原点平移到View的左上角,称作相对坐标系。对View进行操作时,更多使用的是相对坐标系。 3D坐标系左手坐标系在计算机科学中,大多3D坐标系使用的是左手坐标系(包括Android),所以,在这里只介绍左手......

android:clipChildren属性

属性介绍android:clipChildren用来设置是否剪切children。 使用场景通常会看到中间的tab会更大,甚至超出parent的限制,如图: 属性使用方法android:clipChildren=”false”表示不剪切children,但是children大小不能超过parent的大小,所以如果children的直接parent大小不够容纳children的大小,那么要一直......

WebView的一些坑

WebViewClient和WebChromeClient区别WebViewClient: It will be called when things happen that impact the rendering of the content WebChromeClient:This class is called when something that might impact a b......

highestOneBit()算法解析

Integer类有个highestOneBit()方法,作用是返回具有单个 1 位的 int 值, 在指定值中最高位的 1 位的位置,比如5(00000101)返回4(00000100)。 highestOneBit()的算法如下: 123456789public static int highestOneBit(int i) { // HD, Figure 3-1 i......