- 博客(15)
- 收藏
- 关注
原创 Android 自定义绘制之文字测量知识点
上面的写法只是针对静态文字的绝对居中,但如果文字换成“abcq”,那么其中的“abc”就会略微向上移动,如果是动态变化的文字,就会造成文字的高低动态变化,显得很乱,那么动态变化的文字如何居中呢。上端贴边有三种方式,分别是利用TextBounds的top、FontMatrics的top或者ascent 三个值,来去掉边。Bottom:最低字符到baseline的值,即descent的最大值,为正数。Top:最高字符到baseline的值,即ascent的最大值,为负数。
2023-08-17 16:46:06
393
原创 解决 Plugin [id: ‘com.android.application‘, version: ‘x.x.x‘, apply: false] was not found ......
步骤一:查看一下你的gradle对应的JDK版本是否过低,目前8.0版本对应的是JDK17.
2023-06-19 15:18:39
38506
10
原创 Android View 绘制流程 过程分析
前言今天整理了一下Android View的绘制流程,记录一下一、如何获取View的宽高我们经常会遇到要获取控件宽高的情况,可以通过以下两种方式来获取。1. 通过View的post() MFragmentTabView tabView = findViewById(R.id.fragment_tab_view); tabView.post(new Runnable() { @Override public void run() { tabView.getW
2022-04-26 17:31:44
1944
原创 Android Launcher 的HomeActivity的创建流程
基于上一篇关于Launcher进程的创建后,记录一下Launcher进程创建后HomeActivity的创建流程,还是只记录关键点1.ActivityThread(进程入口类,主线程,管理四大组件的调度)->main()->Looper.prepareMainLooper() 初始化Looper->attach() 转2->Looper.loop() 主线程开始轮询2.ActivityThread->attach(IApplicationThread appThr
2021-12-03 14:29:12
473
原创 Android Launcher应用进程启动流程 基于Android-12
最近研究了一下Launcher应用进程的创建流程,记录一下1.ActivityManagerService(应用进程的启动、切换和调度、四大组件的启动和管理)-> systemReady() 系统服务启动完成后,会调用systemReady(),启动Launcher2.ActivityTaskManagerService$LocalService(负责管理Activity及其容器如Task,Display等)-> startHomeOnAllDisplays()3.RootWindow
2021-12-02 18:02:00
2691
原创 Android 全局 防止按钮多次点击
在 BaseActivity 类中引用如下代码即可private long LAST_CLICK_TIME; // 上一次点击事件private boolean isFastClick() { boolean flag = true; long currentClickTime = System.currentTimeMillis(); // 两次点击间隔不能少于500ms if ((currentClickTime - LAST_CLICK_TIME) >= 5
2021-11-01 10:20:11
1826
原创 Android 跳转应用市场评价
Intent intent = new Intent("android.intent.action.MAIN");intent.addCategory("android.intent.category.APP_MARKET");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);
2018-05-04 15:44:57
765
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人