- 博客(275)
- 资源 (2)
- 收藏
- 关注
原创 1.Linux蓝牙基础
一个GAP Periphereal在被连接后,就扮演GATT Server的角色,GAP Central设备正在连接一个GAP Periphereal设备那么他就成为了一个GATT Client的角色。
2022-09-17 16:20:06
2390
原创 Matrix-APKChecker分析
APKChecker分析介绍Matrix是腾讯开源的一个APM项目,对于android优化方面无从下手的话,感觉可以研究一下这里主要分析其中一个模块APKChecker,这个模块和其它模块的关联性不是很大,可以单独提取出来、主要就是检测apk内重复资源文件,大小,未使用文件,stl重复引入等功能。如果有自己的想法也可以进行扩展.使用流程指定配置文件运行./app/build/install/app/bin/app --config ./apk-checker-config.json配置
2021-09-08 10:52:02
677
原创 using例子
#include<iostream>using namespace std;namespace game1{int id = 10;};namespace game2{int id = 20;};void testHowUse(){ cout << game1::id << endl; cout << game2::id << endl;}void selectWho1(){ using namesp
2020-12-23 11:25:35
193
原创 XmlPullParser解析
XmlPullParser解析android 解析xml通过XmlPullParser接口解析的。它的解析顺序根据xml文档从上到下解析的XmlPullParser里面有几个属性:还是看代码琢磨吧 fun parseXml(){ var inputStream = assets.open("activity_main.xml") var xmlFactory = XmlPullParserFactory.newInstance() v
2020-12-16 22:27:27
870
原创 内核里面的数据结构链表,红黑树如何找到我们要的数据类型
最近看binder,发现里面的数据结构链表,红黑树结构体只有自己的节点类型,没有存放我们的数据,不像java,可以给链表一个泛型,传入数据类型结构。很好奇它怎么能根据节点找到我们要的数据。有了下面的demo,解释一下。#include <stdio.h>#include <stdlib.h>struct node{ struct node* next;};struct data{ struct node dnode; int type;};//java.
2020-12-03 22:28:54
164
原创 内部拦截法事件源码分析
子View重写dispatchTouchEvent方法 var mLastX = 0f var mLastY = 0f override fun dispatchTouchEvent(ev: MotionEvent): Boolean { val x = ev.x var y = ev.y when(ev?.action){ MotionEvent.ACTION_DOWN->{ .
2020-11-29 15:34:23
231
原创 滑动冲突外部拦截法源码分析
为了解决滑动冲突可以采用外部拦截法,就是重写父布局的onIntercepteTouchEvent方法:ACTION_DOWN 不拦截,ACTION_MOVE,达到父元素滑动条件就拦截,达不到就不拦截 override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { var intercpted = false var x = ev?.x var y = ev?.y when(e.
2020-11-29 15:00:29
201
原创 View事件机制几点结论探究分析
当前布局(ViewGroup的子类)如果重写dispatchTouchEvent不调用父类的dispatchTouchEvent方法。不管这个dispatchTouchEvent方法返回true还是false,它的子View都将不会受到任何事件。原因:不调用父类ViewGroup的dispatchTouchEvent方法,不再有事件传递流程逻辑的进行.重写ViewGroup的dispatchTouchEvent,必须调用super.dispatchTouchevent()方法,否则事件无法传递下去.
2020-11-29 00:30:40
182
原创 android基础事件流程分析
建立嵌套的布局xml <com.g.grefresh.ViewGroup1 android:id="@+id/parent1" android:orientation="vertical" android:layout_width="300dp" android:background="@android:color/holo_orange_dark" android:layout_height="300dp">
2020-11-28 20:29:34
190
原创 PagerAdapter changed the adapter‘s contents without calling notifyDataSetChanged
The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#`notifyDataSetChanged`!1. 异常发生的地方ViewPager.javavoid populate(int newCurrentItem) { ... final int pageLimit = mOffscreenPageLimit;
2020-11-24 16:39:33
2338
2
原创 32位浮点数 存储方式 java实现
将一个四个字节float类型转化为内存存储格式步骤为:31…031位 符号位 正数是0 负数是130-23位 指数部分:0-22位 尾数部分:下面计算指数部分 和尾数部分如何存入1.先将这个实数的绝对值转化为二进制格式,整数转为二进制,小数转为二进制例如8.25转为二进制1000.010.4转换为二进制0.0110011001100110…2.将这个二进制格式实数的小数...
2018-11-21 14:25:47
2187
原创 kotlin 复合函数 函数链式调用 以及偏函数
package kotlinall.chapter5import java.io.OutputStreamimport java.nio.charset.Charset//复合函数//求f(g(x))的值val add5={i:Int->i+5}val mutilplyBy2 = {i:Int-> i*2}//复合函数 扩展Function1的扩展方法 infix...
2018-11-02 13:58:36
2737
原创 kotlin 函数闭包
//闭包//函数运行的环境就是闭包//持有函数的运行环境//函数内部可以定义函数 也可以定义类val string = "hello world"fun makeFun():()->Unit{ var count = 0 return fun(){ println(++count) }}fun fibonacci():()->Lo...
2018-11-02 11:13:53
1396
原创 kotlin 尾递归优化
package kotlinall.chapter5//尾递归//递归的一种形式//调用自身后无其他操作//tailrec 关键字提示编译器进行尾递归优化data class ListNode(val value:Int,var next:ListNode? = null)tailrec fun findListNode(head:ListNode?,value: Int):Lis...
2018-11-02 10:57:49
654
原创 kotlin 常用高阶函数
package kotlinall.chapter5import java.io.BufferedReaderimport java.io.FileReaderimport java.lang.StringBuilder//高阶函数 传入的参数是函数 或者返回是函数class Hello{ fun world(){ println("Hello World")...
2018-11-02 10:40:42
586
原创 kotlin枚举和密封类
package kotlinall.chapter4/** * 枚举是实例可数的类,枚举也是类 * 可以修改构造,添加成员 * 可以使代码清晰 但是需要一定开销 */enum class LogLevel(val id:Int){ VERBOSE(1),DEBUG(4),INFO(2),WAR(3),ERROR(5),ASSERT(7); fun getTag():S...
2018-11-01 16:04:23
1014
原创 kotlin内部类 匿名内部类
package kotlinall.chapter4open class Outter{ val a:Int = 0 class Inner{//内部类默认 访问属性public 而且静态内部类 fun hello(){ // println(a) 静态内部类无法访问 非静态外部类的成员变量 } } inne...
2018-11-01 15:42:35
1016
原创 kotlin 扩展方法 数据类 属性代理
package kotlinall.chapter4import java.lang.StringBuilderimport kotlin.reflect.KProperty//类成员可见性//kotlin 属性默认public//internel 模块内可见//方法重载/** Overloads* 名称相同,参数不同的方法* Jvm函数签名的概念:函数名,参数列表* 跟...
2018-11-01 15:24:25
477
原创 kotlin继承
abstract class Person(open val age:Int){//去掉abstract 默认class以final修饰 不能继承 可以使用open去修饰也可以继承 abstract fun work()}//类想要被继承 必须使用open修饰 或者abstract//方法想要被复写 也必须open或者abstract修饰 方法复写必须加上override关键字...
2018-11-01 10:57:20
527
原创 kotlin默认参数 具名参数 变长参数
//具名参数//变长 参数写法//某个参数可以接收多个值//可以不为最后一个参数 位于参数列表任意位置//如果传入参数有歧义,需要使用具名参数//*Array 只支持展开Array 只用于变长参数列表实参 不能重载 不算一般意义的运算符//默认参数 为函数参数指定默认值 可以任意位置指定默认值 传入参数有歧义使用具名参数传参fun main(vararg args:String){...
2018-10-31 14:32:31
820
原创 Kotlin异常捕获
//异常捕获fun main(args:Array<String>){ try { val args1 = args[0].toInt() val args2 = args[1].toInt() println("$args1 $args2") }catch (e : NumberFormatException){ ...
2018-10-31 14:17:23
2037
原创 kotlin for 循环语句
//循环语句fun main(args:String){ for(arg in args){//循环1 println(arg) } //循环2 for ((index,value) in args.withIndex()){ println("$index -> $value") } //循环2等价与 ...
2018-10-31 14:06:55
4413
原创 kotlin分支表达式
//中缀表达式//一个函数只有一个参数可而且用infix修饰 去掉.和()使用这个函数//分支表达式private const val USERNAME="gac"private const val PWD = "123"private const val ADMIN="admin"private const val ADMIN_PWD = "admin"private con...
2018-10-31 13:49:43
404
原创 kotlin运算符重载
//运算符重载定义//任意类可以定义或者重载父类的基本运算符//通过运算符的具名函数定义////重载运输符 方法名称 参数个数要对应 参数类型和返回值可以随意定义class Complex(var real:Double,var imaginary:Double){ // operator fun plus(other:Complex):Complex{//定义运算...
2018-10-31 11:16:42
399
原创 kotlin类的成员变量 方法
//kotlin成员变量 成员方法//函数强调本身不考虑从属//方法的称呼通常从类的角度出发//构造方法参数中 val/var修饰的都是属性//类的内部也可以定义属性class 妹子(性格:String,长相:String,声音:String){ fun 唱歌(歌名:String){ println(歌名) } fun 跳舞(舞名:String...
2018-10-31 10:51:18
3744
1
原创 kotlin lambada表达式
val sum ={arg1:Int,arg2:Int ->//lamba 表达式和匿名函数一样的 println("arg1={$arg1} arg2=${arg2}") arg1+arg2//最后一行返回值 //(Int,Int)-> Int 传入两个int 返回一个int}//参数返回值可以用->分割val printHello={ print...
2018-10-31 10:22:12
412
原创 kotlin 函数
//函数区别与class里的方法//函数以fun开头 main函数名 args参数//kotlin没有返回值 返回Unit 相当于java void 可以省略不写//{}里面是函数体fun main(args:Array<String>):Unit{ val arg1 = sum(1,2) println(arg1) println(int2Long(...
2018-10-26 13:58:58
411
原创 kotlin常量与变量
//kotlin 常量与变量val FINAL_HELLO_WORLD:String = "Hello World"//常量 public final String HELLO_WORLD java 里的类型var hello_world:String = "hello world"val FINAL_HELLO_CHINA = "Hello World"//类型可以省略 类型推导 编译器...
2018-10-26 13:48:43
496
原创 kotlin数组
package kotlinall.chapter1//kotlin数组val array_int:IntArray = intArrayOf(1,3,5,7) //java 基本类型定制版本 防止装箱 拆箱val array_char:CharArray = charArrayOf('5','6','4')val array_string:Array<String> = ar...
2018-10-25 14:49:55
1448
1
原创 kotlin函数区间
package kotlinall.chapter1//kotlin 区间val range:IntRange = 0..1024//[0,1024]val range_integer:IntRange = 0 until 1024//[0,1024)val emptyRange:IntRange = 0..-1fun main(args:Array<String>){ ...
2018-10-25 14:49:14
374
原创 空类型,智能类型转换
//面向对象class 妹子 (性格:String, 长相:String, 声音:String):人(性格,长相,声音){ init {//构造方法 方法体 println("new 了一个妹子,他性格${性格},长相${长相}") }}class 帅哥 (var 性格:String,var 长相:String,var 声音:String){ in...
2018-10-24 15:36:31
402
原创 kotlin基础数据类型
kotlin基础数据类型//Number类型//Double 64//Float 32//Long 64//Int 32//Short 16//Byte 8//运行在虚拟机中 长度和操作系统无关val aInt:Int = 8//java int Integer合体 自动进行区分val anotherInt:Int=0xFFval moreInt:Int = 0b00000...
2018-10-24 09:43:20
257
原创 Bitmap 内存缓存框架(二)
内存达到限制优先清理占据内存最大的bimap方案LargestLimitedMemoryCache/** * @描述:限定内存缓存大小,内存超出 优先清理bitmap占据内存最大的 * @filename:LargestLimitedMemoryCache.java * @author:gac * @time:2018/6/29 11:19 */public class Lar...
2018-06-29 13:59:35
632
原创 Bitmap内存缓存框架(一)
UniverseImageLoader加载图片首先从内存加载,对于其使用的内存缓存框架可以拿来自己用,也值得去看一下它的实现。首先实现一个通用的内存框架的接口MemoryCache/** * @描述:cache接口 * @filename:MemoryCache.java * @author:gac * @time:2018/6/28 16:03 */public in...
2018-06-29 11:09:44
819
原创 java类型计数器
/** * 类型计数器 */public class TypeCounter extends HashMap<Class<?>,Integer> { private Class<?> baseType; public TypeCounter(Class<?> baseType){ this.baseType = ...
2018-06-28 00:22:36
1734
原创 android:Bitmap 居中 按照宽高比例进行剪裁
public static Bitmap scaleBitmap(Bitmap bitmap,float w,float h){ float width = bitmap.getWidth(); float height = bitmap.getHeight(); float x = 0,y = 0,scaleWidth = width,scaleH...
2018-06-27 09:31:42
4386
原创 日志打印
public class L { private static boolean sDebug = true; private static String sTag = "gacmy"; private static final int JSON_INDENT = 2; public static void init(boolean debug) { ...
2018-06-12 11:04:06
368
原创 Activity生命周期简要分析
对于源码的分析 基于android 8.0如果一个activity 在activity栈的顶部 屏幕前台显示的话 处于运行状态如果一个activity丢失焦点,但是仍然可见的状态(例如处于顶部activity没有全屏,或者透明的)则这个activity处于paused 状态,这种状态下的activity在内存缺乏的时候可以被回收如果一个activity完全被另一个activity遮挡
2018-01-19 10:00:01
638
音视频编码解码资料(花钱购买)
2018-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人