Skip to content

Instantly share code, notes, and snippets.

View CMFS's full-sized avatar
🎯
Focusing

Tong Gang CMFS

🎯
Focusing
View GitHub Profile
@CMFS
CMFS / GestureLayout.java
Created December 11, 2018 17:31
支持双指移动、缩放、旋转操作的布局
import android.content.Context;
import android.graphics.PointF;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.GestureDetectorCompat;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
@CMFS
CMFS / Android-TouchDelegate.md
Created November 15, 2018 10:21
[Note] 利用TouchDelegate解决扩大控件点击范围

TouchDelegate

当控件过小时,很难准确地点击。此时可以利用TouchDelegate扩大控件点击范围。

使用步骤:

  1. 获取控件当前点击范围
  2. 计算扩大后的点击范围
  3. 应用扩大后的点击范围

示例:

@CMFS
CMFS / Android-View-滑动冲突.md
Created November 15, 2018 06:00
[Note] View滑动冲突

View滑动冲突

原文

常见的滑动冲突主要分三种:

  1. 外部滑动方向和内部滑动方向不一致
  2. 外部滑动方向和内部滑动方向一致
  3. 前两种的嵌套

解决方案:

@CMFS
CMFS / Android-Activity-Launch-Mode.md
Created November 7, 2018 00:55
[Note] Activity LaunchMode

Activity LaunchMode

  1. Default
  2. SingleTop
  3. SingleTask
  4. SingleInstance

适用场景

原文

@CMFS
CMFS / MVC-and-MVP.md
Created November 6, 2018 10:33
[Note] MVC and MVP

MVC and MVP

原文

MVC

MVC的关键点在于:

  1. 用户交互(View)调用Controller的方法
  2. Controller更新Model
  3. Model提供数据改变的监听
  4. View监听Model的改变
@CMFS
CMFS / Android-Memory-Profiler.md
Created November 5, 2018 17:09
Android内存泄漏分析

Android Memory Profiler

基于Android Studio 3.4 Canary 1

有如下几个值:

  • Total
  • Java:从Java或Kotlin代码分配的对象内存
  • Native:从C或C++代码分配的对象内存
  • Graphic:图形缓冲区队列向屏幕显示像素(包括GL表面、GL纹理等等)所使用的内存。(请注意,这是与CPU共享的内存,不是GPU专用内存)
  • Stack:您的应用中原生堆栈和Java堆栈使用的内存。这通常与您的应用运行多少线程有关。
@CMFS
CMFS / android_key_event_dispatch.md
Created October 11, 2018 06:20
[Note] Android按键事件分发拦截处理机制

KeyDispatch

为控件添加事件分发拦截处理机制。

相关类:

  • KeyDispatch
  • KeyDispatchHost
  • KeyDispatchController
  • OnKeyDispatchInterceptor
@CMFS
CMFS / activity_and_fragment_args.md
Last active October 11, 2018 06:10
[Note] Activity和Fragment参数标记注解

ComponentParams

用于标记组件(如Activity和Fragment等)接受参数的方式。

在没有设计文档或相关规范时,通过在对应类上添加源码注解来进行说明接收哪些参数,无需查看具体代码。如果需要也可以调整为运行时注解或编译时注解读取对应参数。

主要包含三个注解:

  • ComponentParams
  • Param
  • Params
@CMFS
CMFS / module_vs_component.md
Last active October 11, 2018 03:33
[Note] 模块和组件的区别

I'd like to share my idea about this difference. Both component and module are used to refer to a group of functions or a part of a function. Module is more logical, for example: module Finance, module HR, module Manufacturing... ... On the other hand, component is more physical. In software, it can be a dll, ocx, exe,...

source

@CMFS
CMFS / Android保活简介.md
Created October 8, 2018 05:45
[Note] Android保活简介

Android保活简介

  • 黑色保活:多进程使用广播相互唤醒(包括监听系统广播唤醒)
  • 白色保活:启动前台Service
  • 灰色保活:利用系统漏洞启动前台Service
    • API<18:启动前台Service直接传入new Notification()
    • 18<=API<25:同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理
  • API>=25后修复此漏洞