Loading

随笔分类 -  Android

摘要:class DraggableFrameLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, ) : FrameLayout(context, attrs) { enum class Drag 阅读全文
posted @ 2023-11-22 15:27 徐影魔 阅读(297) 评论(0) 推荐(0)
摘要:Android BLE 广播定制近期项目中用到蓝牙BLE,需要区分设备及显示蓝牙名。对于蓝牙BLE广播,发送字节数超过31会广播失败(原因之一是蓝牙名称太长),再者蓝牙mac地址是动态的无法区分设备。和同事交流后,采用他的项目中的方法。 名称太长问题 广播时,不添加Service UUID,采用2个字节表示服务。 蓝牙名字符长度超 阅读全文
posted @ 2023-03-22 14:50 徐影魔 阅读(361) 评论(0) 推荐(0)
摘要:源码下载 由于AOSP源码由多个项目组成,这篇博客中使用python脚本下载。 import xml.dom.minidom import os from subprocess import call # 1. 修改为源码要保存的路径 rootdir = "D:/projects/AOSP/code 阅读全文
posted @ 2023-03-09 11:08 徐影魔 阅读(74) 评论(0) 推荐(0)
摘要:singletone private $className$() { } private static class SingletonHolder { private static final $className$ INSTANCE = new $className$(); } public st 阅读全文
posted @ 2023-02-15 18:05 徐影魔 阅读(25) 评论(0) 推荐(0)
摘要:菜单位置 配置 Generate JavaDoc Scope(生成文档的作用范围),可根据自己需求自行配置。 导包 若报错找不到android的某些包,可添加如下依赖(可能是由于JavaDoc没有导入AndroidSdk,所以没找到)。 compileOnly(files("${android.sd 阅读全文
posted @ 2023-01-05 14:46 徐影魔 阅读(479) 评论(0) 推荐(0)
摘要:adb doc 权限 adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.P 阅读全文
posted @ 2022-10-24 18:25 徐影魔 阅读(164) 评论(0) 推荐(0)
摘要:投屏,就是将一台设备上的媒体内容,通过一定的技术方案,在另外一台设备上显示。其中这个一定的技术方案,主要分为两种: 推送模式:主要用于投屏音视频。投屏之后手机可以关闭,电视(接收端)不会停止播放。核心原理就是通过指定协议,类似于蓝牙那样搜索匹配,并将音视频的播放地址传输过去,然后接收端播放这个地址的 阅读全文
posted @ 2022-09-09 15:39 徐影魔 阅读(4643) 评论(0) 推荐(0)
摘要:AOSP 下载教程 目录 Settings: /packages/apps/Settings SystemUI: /frameworks/base/packages/SystemUI WifiSettings /packages/apps/Settings/src/com/android/setti 阅读全文
posted @ 2022-07-29 17:49 徐影魔 阅读(35) 评论(0) 推荐(0)
摘要:JavaVM 和 JNIEnv JNI 定义了两个关键数据结构,即“JavaVM”和“JNIEnv”。两者本质上都是指向函数表的二级指针。(在 C++ 版本中,它们是一些类,这些类具有指向函数表的指针,并具有每个通过该函数表间接调用的 JNI 函数的成员函数。)JavaVM 提供“调用接口”函数,您 阅读全文
posted @ 2022-07-05 18:16 徐影魔 阅读(51) 评论(0) 推荐(0)
摘要:public static void applyGrayMode(Window window) { if (window == null) { return; } Paint paint = new Paint(); ColorMatrix colorMatrix = new ColorMatrix 阅读全文
posted @ 2022-04-20 13:32 徐影魔 阅读(191) 评论(0) 推荐(0)
摘要:所谓头条屏幕方案就是修改了DisplayMetrics类,让设备的dp宽强行按设计稿来,所以DisplayMetrics获取的一些参数都是缩放过的,并不是真实的。在一些情况下会出现两次获取结果不一样,就产生了bug。由于项目已经用了这种方案(个人不太倾向使用),所以解决这个问题。目前出现的现象就是第 阅读全文
posted @ 2022-04-19 13:45 徐影魔 阅读(421) 评论(0) 推荐(0)
摘要:说明 本来使用这个项目,但里面有个bug,修复一下,特此记录。 属性 <declare-styleable name="FoldTextView"> <attr name="showMaxLine" format="integer" /> <attr name="tipGravity" format 阅读全文
posted @ 2022-04-03 13:48 徐影魔 阅读(71) 评论(0) 推荐(0)
摘要:起因 由于项目App迭代,一个布局发生了改变。因此产生了一个奇怪的问题,按道理,滑动NestedScrollView的时候,AppBarLayout会上移。这是appbar_scrolling_view_behavior和scroll|enterAlwaysCollapsed使用的常规操作嘛。但是拖 阅读全文
posted @ 2022-03-27 20:29 徐影魔 阅读(1295) 评论(0) 推荐(0)
摘要:Android沉浸式状态栏与EditText问题【沉浸式状态栏实现及遇到的坑】 Android WebView加载html文本时,图片太大不能适配屏幕 Android 键盘遮挡editText遮挡登录按钮 Android Studio 无法预览markdown问题 Git SSL certifica 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(40) 评论(0) 推荐(0)
摘要:SelectItemManger## 几年前写的,不咋地。2022/3/26 package com.nevermore.util; /** * Created by Administrator on 2017/3/26. */ import android.util.SparseBooleanAr 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(348) 评论(0) 推荐(0)
摘要:今天在EMUI上获取状态栏高度结果只有6像素,这算是EMUI的bug吧。所以加了个判断来获取状态栏高度。让状态栏至少为25dp。 public static int getStatusBarHeight(@NonNull Context context) { int height = 0; int 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(49) 评论(0) 推荐(0)
摘要:github 源码 昨天看到有人实现了这个ui,但是主要在布局里写的。当然我之前也是在布局里写的,但是貌似见过用ItemDecoration实现的。于是我评论说让他用ItemDecoration试一下,他回复我想多了。好吧,不管想的多不多,我自己试下就知道可行不可行了。当然是可行的,不然我也不会写这 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(207) 评论(0) 推荐(0)
摘要:由于Kotlin没有三目表达式这种写法,一般用if else就可以,但是写起来比较麻烦,于是我便写了个扩展函数,支持Boolean和表达式,感觉还行。如果大家有更好的方案,可以留言。 /** * * @author xunevermore * create on 2021/10/26 18:20 * 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(152) 评论(0) 推荐(0)
摘要:演示效果 思路 RecyclerView外包裹一个FrameLayout,通过adapter创建悬浮的Item,将其覆盖在RecyclerView上面, 再通过监听RecyclerView的滚动,动态改变悬浮item的translationY,实现悬浮。 使用 floatRvItemContaine 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(378) 评论(0) 推荐(0)
摘要:def jarPackage(buildType) { return tasks.create("jar${buildType.capitalize()}Package", Copy) { def aarFile = file(project.buildDir.path + "/outputs/aa 阅读全文
posted @ 2022-03-26 12:45 徐影魔 阅读(76) 评论(0) 推荐(0)