- 博客(58)
- 资源 (8)
- 收藏
- 关注
原创 Android 编译脚本 envsetup.sh
版本:android-12.0.0_r3目录:build/envsetup.shfunction hmm() {cat <<EOFRun "m help" for help with the build system itself.运行“m help”以获取有关构建系统本身的帮助Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:..
2022-03-06 17:58:14
5453
1
原创 Linux系列--Vi编辑器
1. 创建及打开vi a.txt2. 切换到插入模式i3. 切换到命令模式esc 键4. 保存并退出:wqw表示写入,q表示退出5. 退出但不保存:q!(!表示强制退出)6. 显示行号set nu7. 取消行号set nonu直接输入数字再按esc键,可直接将光标移至改行行首8. 查找"aaa"字符串,按"n"继续查找/aaa9.查找特定字符串?字符串...
2022-03-06 16:54:58
386
原创 Liunx系列-用户和权限
-rw-r--r-- - -表示文件类型 rw- rw-表示文件所有者对文件的权限 r-- r--表示文件所在组对该文件的权限 r-- r--表示其他组对该文件的权限 r表示可读,用数字4表示 w表示可写,用数字2表示 x表示可执行,用数字1表示 1.修改文件(文件夹)test的权限chomd 777 test 说明: 7=4+2+1,第一个7表示对文件所有者权限进行修改,第二个7表示对所有者所在组的权 限进行修改,第三个..
2022-03-06 16:30:12
3135
原创 Android样式:常用主题属性
1.Colors?attr/colorPrimary 应用程式的主要品牌色彩 ?attr/colorSecondary应用程式的次要品牌色彩,通常是主要品牌色彩的明亮补充。 ?attr/colorOn[Primary, Secondary, Surface etc] 与命名颜色形成对比的颜色。 ?attr/color[Primary, Secondary]Vari...
2020-02-13 18:03:48
2977
原创 使用Dagger2 对第三方依赖库进行初始化,减少Application 代码的冗余
作用:对于在 Application 中进行初始化(如第三方依赖库) 使用 Dagger 进行包装处理,减少Application 代码的冗余。原理 :将每个依赖的初始化算法包装到它自己的类中,向Dagger发信号通知我们要将它们绑定到一个集合中,然后迭代它并告诉每个依赖执行它的初始化。实现步骤:1. 定义一个Initializer 接口,每个依赖初始化包装器(TimberIn...
2019-09-02 16:59:56
428
原创 Dagger2 将实例绑定到组件的新方法(@Component.Factory and @SubComponent.Factory)
在使用Dagger2,我们都遇到了一种情况,希望从外部将依赖项传递给我们的模块,以便于在其他类中注入,最常见的例子是将应用程序Context传递给AppModule。还有其他用例,例如将用户ID传递给用户详细信息屏幕,我们需要用户模块从外部获取用户ID。以前有两种方法可以解决这个问题,但Dagger 2.22引入了另一种方式。尝试分析应用最佳解决方案的如下三种方法。方法一:通过构造函数参...
2019-09-02 14:57:55
1434
原创 Java中算法复习
1. 冒泡排序 /** * 冒泡排序 * * @param array 需要排序的数组 * @param size 数组的长度 * @return 排序后的数组 */ private static int[] bubbleSort(int[] array, int size) { for (int i...
2019-08-30 15:11:47
124
原创 Linux 常用命令
命令 说明 sudo apt-get update 更新软件 sudo apt-get install vim vim编辑器安装 :set nu vim编辑器下设置行号 :sp newfilename vim编辑器下创建并打开一个新文件 Ctrl + W + ↓or↑ vim编辑器下多个文件切换编辑 zebra stripe
2019-08-30 15:10:25
109
原创 Python 中常见面试题
1.GIL的作用?cpython解释器中存在一个GIL(全局解释器锁),他的作用就是保证同一时刻只有一个线程可以执行代码。2.csrf 验证机制?从 cookie中获取一个csrf_token的值,从请求体获取一个csrf_token的值,如果两个值相同,则检验通过,可以进入到视图函数中执行,如果两个值不同,则检验失败,会向前端返回状态码400的错误。3.网络分层?...
2019-08-28 16:58:12
112
原创 Kotlin 基础(二)
1.延迟初始化属性// Kotlin可以对属性设置为延迟初始化lateinit var dept: Department提示: 延迟初始化属性要求:不能是可空类型;只能使用为var声明;lateinit关键字应该放在var之前。2.委托属性Kotlin提供一种委托属性,使用by关键字声明class User { var name: String by Dele...
2019-08-07 23:43:03
148
原创 Android 关于使用 google material 支持库
1.在gradle.properties文件添加android.useAndroidX=trueandroid.enableJetifier=true2.build.gradle文件中添加,注意Android支持库依赖的是 androidx包,否则会报错dependencies { implementation fileTree(dir: 'libs', ...
2019-08-06 23:51:32
14472
1
原创 Android TextView对长文本或复杂文本计算绘制优化
// TextView textView = new TextView(context); // 在UI线程中,从TextView确定布局参数 PrecomputedTextCompat.Params textMetricsParams = TextViewCompat.getTextMetricsParams(textView); ...
2019-08-06 23:45:03
858
原创 查看apk的 minSdkVersion targetSdkVersion 包名
将需要查看的xxx.apk拷贝到Android SDK的目录下的build-tools\29.0.1\ 目录下 ,然后在该目录下 打开终端:输入 :aaptdumpbadgingxxx.apk 回车即可查看或者将输出的信息保存到文件中:输入:aaptdumpbadgingxxx.apk> apkInfo.txt...
2019-07-29 17:29:29
1159
原创 Anroid EditText 不允许输入汉字
1.方式一可以在布局文件中设置EditText属性:android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"2.方式二通过代码设置监听// 不允许输入汉字mEditText.setKeyListener(new DigitsKeyListener() { @Overr...
2019-07-21 23:06:33
1147
原创 使用Retrofit2+RxAndroid+Okhttp3 获取服务器数据时,格式不统一处理
通常开发情况下,后台一般会给出约定好的格式:{ "code": 200, "msg": "成功", "data": {}}但是,有些后台开发者,根本不管前台开发方便与否,自成一体的风格,不按约定成俗的格式规范,返回的格式不统一,data可能是空数组,空JSON ,字符串等,如果不做处理,会出现JSON解析时异常(com.google.gson.JsonS...
2019-07-14 17:37:59
922
原创 ConstraintLayout + CardView + Space + Guideline 使用
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk...
2019-06-01 11:27:41
2023
1
原创 Android远程监控屏幕状态---mimicap编译及使用
minicap是一个可以远程获取android屏幕画面的开源库,它在低版本的android系统上采用截屏的方式获取画面,在4.2以上的android系统上采用创建VirtualDisplay的方式来获取画面、性能大大提高.https://github.com/openstf/minicap1. 通过git 克隆minicap 项目 C:\>git clone https://...
2019-05-29 10:00:24
2740
原创 Android项目中管理Gradle依赖项
模块化是应用程序开发中的一种技术,它允许我们将功能分离到独立的模块中。模块化应用程序为每个模块都有许多build.gradle文件。因此,我们需要管理其中的依赖项。目标是使依赖声明更加整洁和富有表现力。此外,简化库的维护。我们将依赖于一个名为buildSrc的特殊模块。按照以下步骤操作:1.使用Kotlin DSL作为构建脚本,创建一个新的Android Studio项目。2. 在项...
2019-05-22 10:38:22
554
原创 Android 第三方库常用混淆
ButterKnifeimplementation 'com.jakewharton:butterknife:9.0.0'annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0'# ------------ButterKnife--------------------------------------# R...
2019-05-20 09:46:22
3452
原创 RecyclerView 性能优化一 Prefetch(预取)
如果您使用RecyclerView提供的默认布局管理器,您将自动获得此优化。但是,如果您使用的是嵌套的RecyclerViews,或者您编写了自己的布局管理器,则需要更改代码才能利用此功能。对于嵌套的RecyclerViews,在内部LayoutManagers上调用LinearLayoutManager的新setInitialItemPrefetchCount()方法(在v25.1中可用)以...
2019-05-17 13:59:06
3800
原创 TableLayout中stretchColumns和shrinkColumns使用
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_paren...
2019-05-16 23:23:13
513
原创 Android 常见异常及处理
错误一:Fatal signal 11 (SIGSEGV) at 0x0000000c (code=1), thread 15888解决:关闭硬件加速,在Android清单应用程序中添加:android:hardwareAccelerated="false"错误二:Error: Invoke-customs are only supported starting with Andr...
2019-05-16 23:04:44
691
原创 Android 中网络请求接口测试用例编写步骤
1.在应用的test目录(app/src/test/)下新建 resources/api-response目录,然后将各个接口的json文件放入在该目录文件下 eg: app/src/test/resources/api-response/popular-movies.json2.添加测试依赖库testImplementation 'junit:junit:4.12'a...
2019-05-16 17:32:41
960
原创 Android应用程序中实现Dagger2的7个基本步骤
第1步:向应用build.gradle文件添加必要的依赖项(Dagger2)dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'c...
2019-05-16 16:05:34
295
原创 Android 自定义电影标签
public class TagView extends RelativeLayout { private int mWidth; private int lineMargin; private int tagMargin; private int textPaddingLeft; private int textPaddingRight; ...
2019-05-15 17:00:02
324
原创 Android 圆环进度条绘制
实现一个自定义圆环进度条public class CircularProgressBar extends View { // Properties private float progress = 0; private float strokeWidth = getResources().getDimension(R.dimen.default_stroke_wid...
2019-05-15 16:33:25
406
原创 Android中LiveData+Room+Paging简单实现步骤
1.添加依赖库 //for lifecycle and LiveData and ViewModel implementation "android.arch.lifecycle:runtime:$archRuntimeVersion" implementation "android.arch.lifecycle:extensions:$archExtensionVe...
2019-05-14 12:00:14
3477
4
原创 从一个圆角矩形平滑过渡到圆形View
public class Rectangle2CircleView extends View { private static final String PROPERTY_RADIUS = "property_radius"; private static final String PROPERTY_ROTATE = "property_rotate"; pri...
2019-05-13 14:21:49
1541
原创 Linux系统下mongod配置文件
mongod.conf配置文件# mongod.conf# for documentation of all options, see:# http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data.storage: dbPath: /var/...
2019-05-13 14:02:27
1345
原创 Android中监听系统时间改变及开机广播后通过AlarmManager进行通知
1.当时间发生改变时,进行广播通知public class TimeChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("android.intent.action.TIME_SE...
2019-05-02 00:14:16
5167
原创 Android Studio项目中使用 AndroidX支持库的相关配置说明
1.在项目的 gradle.properties文件中配置如下:# 启用Androidx生成支持的标志android.useAndroidX=true# 启用Maven库转换的标志android.enableJetifier=true说明:android.useAndroidX=true表示将使用androidx包下相关的类,在导入时注意导入androidx包下相关...
2019-05-01 23:53:41
15794
原创 Android中简单计时器类Chronometer
1.布局文件.<Chronometer android:id="@+id/chronometer" android:layout_width="wrap_content" android:layout_height="wrap_content" />2.使用. Chronometer chronometer = findVi...
2019-05-01 23:50:12
289
原创 Android 沉浸式模式及主题透明
1.设置主题 <style name="NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> <!-- 避免启动白屏,打开的一瞬间 activity 透明 --> <item name="android:windowBackground">@android:colo...
2019-05-01 23:31:56
643
原创 Android中CircularProgressDrawable类的方法介绍及使用
1.添加依赖implementation 'com.android.support:support-v4:28.0.0'2.CircularProgressDrawable中方法及说明private void circularProgress(Context context) { ImageView imageView = findViewById(R.id....
2019-05-01 23:07:07
2135
原创 Android 字体排版
1.字体指标顶部(Top):给定文本大小的字体中最高字形的基线上方的最大距离。上升(Ascent):单个间隔文本的基线上方的建议距离。平均线(Mean line):没有提升的字母的顶行。基线(Baseline):这是每个字母所在的行。下降(Descent):单个间隔文本的建议距离低于基线。底部(Bottom):给定文本大小的字体中最低字形的基线以下的最大距离。前导...
2019-05-01 22:46:38
523
原创 Kotlin 基础(一)
1.标识符特定标识符field和it。在Kotlin语言中有两个由编译器定义的特定标识符,它们只能在特定场景中使用有特定的作用,而在其他的场景中可以做标识符使用。提示:field标识符用于属性访问器中,访问属性支持字段;it标识符用于Lambda表达式中,在省略参数列表时作为隐式参数,即不需要声明就可以使用的参数。 // 创建一个字符串数组 var arrays = ...
2019-04-21 22:51:41
272
原创 Android 中Bitmap 进行绘制编辑
private void drawBitmap(Bitmap bitmap) { Bitmap newBmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); Canvas canvas = new Canvas(newBmp); ...
2019-04-18 22:49:47
2113
原创 Android 中设置字体
class Typefaces { private static final String TAG = "Typefaces"; private static final Hashtable<String, Typeface> CACHE = new Hashtable<>(); private Typefaces() { } ...
2019-04-18 22:41:36
121
原创 Java 中冒泡排序和选择排序
1.冒泡排序 /** * 冒泡排序 * * @param array 需要排序的数组 * @param size 数组的长度 * @return 排序后的数组 */ private static int[] bubbleSort(int[] array, int size) { for (int i...
2019-04-14 15:04:20
307
原创 Android 8.0(Oreo) 启动页面
1.为什么需要启动画面?Android应用程序首次启动应用程序时需要一些时间来加载(冷启动)。这是应用程序需要自行配置的时间。在此延迟期间,布局不会加载,因此会弹出一个空白屏幕,直到应用程序完全加载,然后继续其正常行为。所以为了提升用户的体验,需要显示一个启动画面,我们不会使用布局文件,而是将启动画面的背景指定为Activity的主题背景。2.怎么使用?2.1 创建一个Splash...
2019-04-07 18:46:42
1225
daggermultibindings.zip
2019-09-02
Linux 服务器构建- Samba
2019-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人