小部件加载
小部件加载的流程,三方交互,Provider数据方,system_server中转站以及宿主方Host方(AppWidgetHost)Provider 进程provider这里面就是继承了provider,就具体来写这个RemoteView的地方,然后它这里为什么用的是remoteView呢?因为你这里是provider进程,你到时候还要跨进程传输到system_server,然后传送到这个Host,两次IPC binder调用,然后再渲染,然后你这个具体我不太懂,但是这个应该是不同的进程,导致这个View,它实际上拿不到具体的属性,然后只能用这个remoteView这种传输layoutId+action来做 具体来说 RemoteViews 不是 View。 它是一个 指令包 — layoutId + Action 列表Parcel 序列化过去的:layoutId + [SetText(“hello”), SetImage(R.drawable.xx), …]我这里其实很迷惑,你这里是R.这个不能跨进程吗?那那个context我记得都能loadApk,这个相当于也能跨进程拿资...
循环翻页
pageView继承自viewgroup它这里面的layout是水平走的大致就是顺序layout子view的left+right 累和做到页面水平顺序排列这些子 View 的 left/right 在 onLayout() 里确定,之后不再变然后scrollTo,这个就是滑动然后scrollX就是从哪里的坐标开始展示scrollX = 0 时,屏幕显示 x=01080 的区域scrollX = 1080 时,屏幕显示 x=10802160 的区域依次类推吧 问题:wrap 时 scrollTo 必须穿过中间页就它是从3到1,3 -> 2 -> 1这种的思路1:中间drawChildren的时候跳过,然后自己特判计算一下duration改一下就好了,问题是这个不能慢慢拖+方向反了思路2:修改trainsitionX每个 View 最终在屏幕上的位置 = layout 位置 + translationX屏幕渲染位置 = view.left + view.translationX left layout定...
双击锁屏选项定制
### 需求定义双击锁屏这个东西需要权限,然后有时候这个东西,比如无障碍权限,有些ROM他可能用不了,所以用户想要自己选择对应的权限方式#### 枚举数据展示的这个双击锁屏方式用枚举‘’’enum class SleepMode( @StringRes val labelResourceId: Int, // 每个枚举值带一个字符串资源 ID ) { AUTO(labelResourceId = R.string.sleep_mode_auto), // “Automatic” ROOT(labelResourceId = R.string.sleep_mode_root), // “Root” ACCESSIBILITY(labelResourceId = R.string.sleep_mode_accessibility), // “Accessibility servic...
刷题day2
移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作: 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。返回 k。 题意大概意思就是给你一个数组,一个值,返回这个数组去除这个值的顺序数组 解法暴力遍历最简单 然后优化应该就是双指针了。就这样吧,你可以新开一个数组,然后顺序走++,因为你每次++都一定会填入一个你需要的数值然后这个数值的得到是通过原始num数组和val是否相等来的,这个也是顺序++判断的 题解还有个解法没仔细看,叫对撞指针?看不明白就这样吧
刷题day1
题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作: 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。返回 k。 思路这里要我返回这个顺序递增的这个数组,最暴力就是平移+排序然后我的思路是,你后面这个nums2, 他可以二分找到这个要插入的位置,然后这插入的这个位置是一个顺序set对应每个nums2的元素都需要对nums1来进行二分,如果num1 n, nums2 m,那这里复杂度就是mlogn,然后这里我需要对每个插入的这些nums2的这些元素分别来做排序也就是milogmi, sum mi = m; 每个桶大小 mi,排序 O(mi log mi),总和 O(Σ mi log mi),其中 Σmi = m由于 Σ mi log mi ≤ m log m(当所有元素集中在一个桶...
shortcutMenu小需求
lawnchairfeat: add open in store shortcut (#6461) 需求简介需求很简单,就是你长按一个app,然后如果它不是系统应用,有来源,就显示来源,然可以跳转到对应的来源去 需求拆解可以拆成几个部分,就是长按这个app,filter,跳转intent shortcutMenu然后长按这里 1234567891011121314151617kotlinoverride fun getSupportedShortcuts(container: Int): Stream<SystemShortcut.Factory<*>> = Stream.concat( super.getSupportedShortcuts(container), // AOSP 原有的快捷方式(App Info 等) Stream.concat( Stream.of(LawnchairShortcut.UNINSTALL, LawnchairShortcut.CUSTOMIZE, LawnchairShort...
flutter入门 (1)
flutter,哎没办法,也是拉完了兄弟,学点跨端,指不准还能有一口饭吃。 statewidget树类似于这个dom树。所以的flutter画面都是由widget组成的。我是感觉flutter和compose react真的很像。与其说是节点,不如说我这个都是由组件组成,不同的组件拆成不同的颗粒度而已。 12345678910111213// React 的 JSX<div> <Text>hello</Text> <Button onClick={handleClick}>click</Button></div>// Flutter 的 WidgetColumn( children: [ Text('hello'), ElevatedButton(onPressed: handleClick, child: Text('click')), ],) 然后这里也是类似于 React 的 useState / Compose 的 reme...
devc++中文乱码问题
解决devc++中文乱码问题详细图解也许你需要试一试ansi、gbk或者unicodetips:我后来又经历过主页面是乱码的情况,然后是通过取消勾选,重启一下就好了(就是进去dev的主页面,到处都是棍斤拷)点取消,然后重启 然后,就又乱码了然后我就把utf-8改成了gbk,然后现在又好了,只是字体没以前那么纤细了 也许会会弹出这个,但是无论你选哪个,最后输出仍然会是中文 over~
20221162
一些散的知识点但是比较容易忘的不同进制数之间的转化 涉及小数整数部分 除基取余,上右下左小数部分 乘基取整,上左下右$$(835.63)_{10} = (1503.50243)_8$$简单来说,就是整数部分用短除号一直除到结果为0,所有的余数从下往上,拿到的就是对应的值,也就是下面的在右边,上边的在左边。而小数部分,每一次都需要取出小数部分,乘以基,得到的数列在右边,然后接着取小数乘,往后循环,最后拿出列在右边的数的整数部分,使用与整数相反的排列顺序。 浮点数表示 IEEE753标准小数点 尾数 基 阶码1位符号位,8位阶码(移码表示:bias=2的n次方-1),23位尾数(前面有一个默认的1),意思是尾数算出的小数要加上1再进行运算 非规格化数阶码全是0 尾数不为0 无穷阶码全1 尾数全0 非数阶码全1 尾数不为0 一个数有多种表示形式$$规格化形式:1.0 \times 10^{-9}(唯一)$$$$非规格化形式:0.1 \times 10^{-8}, 10.0 \times 10^{-10}$$ 当计算机无法表示计算得到的数时,会转化成最近可表示数数据宽...
matplotlib入门<一>
matplotlib入门x轴和y轴matplotlib比较难写,我们一般缩写成plt。用plot()方法进行绘制图像,第一个参数表示x轴,第二个参数表示y轴 123456789xpoints = np.array([1, 8]) ypoints = np.array([3, 10]) plt.plot(xpoints, ypoints) plt.show() ``` 画多个点(有连线) xpoints = np.array([1, 2, 6, 8])ypoints = np.array([3, 8, 1, 10])plt.plot(xpoints, ypoints)plt.show() 1234 `tips:`这里的x轴是有默认值的,如果你没有传入x轴的参数,默认是从0开始增长,到传入y轴的参数个数-1 ypoints = np.array([3, 8, 1, 10, 5, 7])plt.plot(ypoints)plt.show() 12345678 ## 参数markermarker用指定的标记来强调每个点marker=...







