自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(358)
  • 收藏
  • 关注

原创 Android api level对照表

android api level对照表

2015-11-16 17:39:20 33885 2

原创 协程Coroutine,Dispatcher

协程Coroutine,Dispatcher

2022-01-18 18:23:11 387

翻译 Kotlin Contracts

文章链接By baeldung1. 概览在本教程中,我们将讨论Kotlin Contracts。 它的语法还不稳定,但是二进制实现是稳定的,并且Kotlin stdlib已经在使用了。基本上,Kotlin contracts是一种通知编译器有关函数行为的方式。2. Maven配置Kotlin1.3版本引入此功能,所以我们需要使用1.3或更高的版本。本教程中,我们使用最新版本-1.3.0。请参考Kotlin介绍获取更多关于配置的细节。3. Contracts的目的虽然像编译器一样聪明,但它不

2021-03-28 13:55:03 383

原创 动态调整ConstaintLayout元素位置

背景最近一个需求需要动态添加删除ConstraintLayout里的元素,一时不知道如何处理。虽然ConstraintLayout确实减少了层级,提升了绘制效率,但对于动态增删却一直没有尝试过。借着这个需求也好好调研了下ConstraintLayout的一些相关属性。按照以往的经验,增删view应该也跟RelativityLayout或者LinearLayout一样,直接添加就行了。不过在查阅了开发文档和Stack Overflow之后,发现并不是这么简单。这里有个核心的类ConstraintSet,控

2020-11-28 22:38:33 3876

原创 Constraintlayout中实现view的压盖或负margin

需要在ConstraintLayout中实现View的压盖,搜到发现ConstraintLayout不支持负的margin,不能像RelativeLayout那样方便的实现。google+stackoverflow解决方案如下:How to achieve overlap/negative margin on Constraint Layout?<?xml version="1.0...

2019-05-27 16:56:54 5277 1

翻译 [译]如果在Flutter中添加图片

原文链接:https://stackoverflow.com/questions/50903106/add-image-in-flutter-app创建assets/images文件夹assets文件夹位于工程的根目录,与pubspec.yaml文件同级。Android Studio中,可以右键单击项目视图。不需要命名为asstes或者images,甚至不需要把images弄成子文件夹。...

2019-02-01 16:21:59 2171 1

翻译 [译]如何在应用内部修改字体大小

最开始看到这个需求,首先想到的是修改每个文字显示组件的textsize。看了下项目,那是相当的多啊。难道就没有一种简洁的方式么?看了下系统的显示设置功能,有个字体大小调整,设置一下就修改了系统的字体大小。既然系统可以,那就应该有参数可以修改应用的字体大小。google+stackoverflowhttps://stackoverflow.com/questions/6786439/how-t...

2018-10-18 11:40:36 793

原创 react-native 构建工程注意点

react-native更新到0.57版本之后,新建工程总会出现无法安装js文件问题。具体表现是根据网上的搜索,可以使用如下步骤解决:react-native init projectcd projectnpm add @babel/runtimenpm installmkdir -p android/app/src/main/assetsreact-native run-an...

2018-09-29 17:06:51 385

原创 图解HTTP笔记(待补充)

httphttp报文:报文首部 cr+lf 报文主体请求报文:请求行 请求首部 通用首部 实体首部方法说明支持的HTTP协议版本GET获取资源接收的请求正在处理POST传输实体主体1.0、1.1PUT传输文件1.0、1.1HEAD获得报文首部1.0、1.1DELETE删除文件1.0、1.1OPTIONS询问支...

2018-09-27 13:28:55 239

翻译 Configuration on demand is not supported by the current version of the Android Gradle plugin

Configuration on demand is not supported by the current version of the Android Gradle plugin问题gradle-wrapper.properties里升级了gradle版本后(4.6-&amp;gt;4.10),代码编译不过去,报Configuration on demand is not supported b...

2018-09-25 17:55:24 1375

原创 [原]HashMap结构

总结一下,以备后用

2018-06-29 13:56:51 189

翻译 [译]正确获取约束 - ConstraintLayout

正确获取约束 - ConstraintLayout 原文链接:https://proandroiddev.com/getting-your-constraints-right-constraintlayout-786254ed1166Constraintlayout文档描述: 一个ConstraintLayout是一个ViewGroup,它允许以灵活的方式调整组件的位置和大小。...

2018-06-25 13:46:44 819 1

原创 修复升级ndk到17.0.4754217编译so失败问题

今天编译工程总过不去,查看失败原因,因为ndk的mips编译不过去。A problem occurred starting process ‘command ‘/Users/didi/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin/mips64el-l...

2018-05-25 17:25:37 5266

翻译 [译]如何检查键盘是否弹起

原文链接: https://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android?page=1&amp;amp;tab=votes#tab-top废话不说,直接上代码方法一第一步:获取Activity布局的根布局id,比如R.id.root,使用它获得当前视图的...

2018-05-17 14:44:16 657

翻译 [译]Kotlin的属性委托和惰性初始化是如何工作

原文链接:https://medium.com/til-kotlin/how-kotlins-delegated-properties-and-lazy-initialization-work-552cbad8be60Kotlin的属性委托和惰性初始化是如何工作访问属性在支持面向对象范式的编程语言中非常常见。Kotlin也提供了许多类似的方法,by lazy进行惰性初始化就是一个很...

2018-05-15 13:39:16 1508

翻译 [译]开发工具的No-op版本

原文链接:https://medium.com/@orhanobut/no-op-versions-for-dev-tools-b0a865934398开发工具的No-op版本 “在计算机科学中,NOP或NOOP(无操作的简称)是汇编语言指令,编程语言语句或计算机协议命令,它什么都不做。” wiki对于每个拉取请求,我们总结了构建信息以及可能的更改,并用电子邮件发送...

2018-05-08 17:15:04 1624

翻译 [译]改善ProGuard名称混淆

原文链接:https://proandroiddev.com/improving-proguard-name-obfuscation-83b27b34c52a改进ProGuard名称混淆文中,我将展示如何加强ProGuard的名称模糊处理,使攻击者难以对代码进行逆向工程,以及如何有助于防止不正确混淆造成的许多错误。告诉你一个秘密:ProGuard实际上是一个代码优化器。其中一个优化...

2018-04-10 11:55:13 4386

原创 View刷新过程Java-JNI

View刷新过程这里只讨论Java&lt;-&gt;JNI之间的刷新,仅限CPU部分。GPU和Display部分需要看C++源码,暂时忽略View invalidate()requestFocus()ViewParent invalidateChild()ViewGroup invalidateChildInParent()ViewRootImpl invalidate(...

2018-04-03 23:31:51 249

原创 Android DataBinding错误记录

&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;layout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" 错误1 android:layout_height="match_parent&

2018-03-06 23:02:11 3118 1

翻译 开启Android Nougat 'Charles'ing SSL网络

开启Android Nougat ‘Charles’ing SSL网络原文链接:https://medium.com/@elye.project/android-nougat-charlesing-ssl-network-efa0951e66de如果你的应用与后端网络交互,你可能需要使用Charles网络调试代理工具。这是拦截网络并执行所需跟踪甚至更改它的一种非常方便的方法。它也适...

2018-02-11 22:12:35 490

原创 view同时更新backgroundcolor和corner

因为corner在view里不是一个属性,不像iOS那样可以直接修改,所以需要适当的修改一笑已经有的实现。 Step 1// 自定义属性,表示背景中的cornerpublic void setRadius(int radius) { this.radius = radius;}@Overridepublic void setBackgroundColor(int col

2018-01-15 16:01:43 363

翻译 [译]Dex文件格式

Dex文件格式原文链接:https://blog.bugsnag.com/dex-and-d8/你是否好奇Android应用是如何编译和到爆陈apk的呢?本文将以微型Dex文件的实际例子深入Dalvik 可执行格式。Dex文件是什么?Dex文件包含最终由Android运行时执行的代码。每个APK都有唯一的class.dex,它包含了应用的所有类或方法。本质上,代码库中任何使用

2018-01-11 18:56:03 1465

翻译 EditText获取焦点不弹出InputWindow

原文链接:https://stackoverflow.com/questions/10200950/android-edittext-inputtype-none-doesnt-work-becomes-textmultiline获取焦点时不弹inputwindow Step 1:editText1= (EditText) findViewById(R.id.editText1);ed

2018-01-10 21:32:40 329 1

转载 [转]Java中的Switch对整型、字符型、字符串型的具体实现细节

转自http://www.hollischuang.com/archives/61Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进。到目前为止switch支持这样几种数据类型:byte short int char String 。但是,作为一个程序员我们不仅要知道他有多么好用,还要知道它是如何实现的,witch对整型的支持是怎么实现的呢?对字符型是怎么实现

2017-12-27 11:02:31 328

翻译 [译]禁止EditText弹出复制黏贴

原文链接:https://stackoverflow.com/questions/41673185/disable-edittext-context-menu禁止exittext弹出复制黏贴解决问题分三步step 1mEditEext.setCustomSelectionActionModeCallback(new ActionMode.Callback() { public boolean

2017-12-26 14:08:49 1632 1

翻译 [译]区分ProGuard不同的"keep"指令

如果搜索Java活Android库的ProGuard规则,你会在StackOverflow上看到一堆回答,告诉你要这样做:-keep class com.foo.library.** { *; }这个建议很糟糕,你永远都不应该这样做。首先,它过于宽泛——包中的双星号表示该顶级包下的每个包里的所有类;而花括号内的星号用于这些类中的每个成员(变量,方法和常量)。也就是说,它使用与库中的所有代码。如果你是

2017-11-21 13:14:46 5117

翻译 [译]Android Package Name Vs Application ID

Android Package Name Vs Application ID原文链接:https://blog.mindorks.com/android-package-name-vs-application-id-ad95b08815a6为不同目的创建多APKPackageName vs ApplicaitonId如今,我们经常遇到需要为APK创建不同包名的情况。大多数人很容易就做到这点了,但是有

2017-11-15 18:18:22 527

翻译 [译]Multi-Gradient shape

原文链接:https://stackoverflow.com/questions/4381033/multi-gradient-shapes需求: 给定n个颜色,每种颜色需要按照比例设置为view的背景。解决:Button theButton = (Button)findViewById(R.id.thebutton);ShapeDrawable.ShaderFactory sf = new S

2017-11-09 11:27:40 261

翻译 [译]Android Protobuf实例教程

Android Protobuf实例教程原文链接:https://android.jlelse.eu/simple-android-protobuf-tutorial-with-actual-code-bfb581299f47寻找可能比JSON更好的东西?查看Google Protocol Buffers(简称Protobuf)。已经有大量与JSON比较的文章了。http://blog.codecl

2017-10-27 15:28:36 950

原创 Android命令行启动debug

今天调试程序。可恶的程序启动就crash了,as都没法链接debugger,那就没法定位问题了。 果断google+stackoverflow 方法如下:adb shell am start -D -n "com.none.map.flow/com.none.map.demo.MainActivity" -a android.intent.action.MAIN -c android.inten

2017-09-04 13:28:19 3627

原创 breakpoint查看调用栈

之前介绍过Android开发时如何在代码中打印调用栈,但是这种方式还需要重新编译代码,比较费时费力。其实breakpoint就自带这个功能,叫Evaluate and log。这个功能可以在breakpoint地方输出log。具体方法如下:log如下:java.lang.Exception at com.droidcba.kedditbysteps.features.news.NewsFra

2017-08-03 11:00:35 849

翻译 [译]Android架构组件 - 查看Lifecycles - 第三部分

原文链接:https://riggaroo.co.za/android-architecture-components-looking-lifecycles-part-3/在这篇博文中,我们将介绍处理生命周期变化的新类。问题让我们想象一下,在应用程序中有一个视频播放器的情况。在同一个activity中,我们也可能会有其他操作,例如收集使用数据和外部事件的监听器(例如 - 网络更改)。通常情况下,最终

2017-07-19 19:46:52 1863

原创 提取anr的traces.txt文件

非root手机拉取方法adb shell "cp /data/anr/traces.txt /storage/extSdCard/" adb pull /storage/extSdCard/traces.txt

2017-06-30 16:16:19 3388 3

原创 Kotlin Extension Function

Extension FunctionExtension Function是Kotlin中比较酷炫的功能,可以直接对已有类进行扩展,扩展的功能当做静态方法使用,而这个方法并不需要原来类的代码,并且这个类可以使任何基于JVM的语言。 Extension Function定义如下:fun <T> Collection<T>.joinToString( separator: String,

2017-06-16 16:55:57 1395

原创 Kotlin Data Class

Kotlin Data ClassKotlin源码,简单的Student.kt类data class Student(val name: String, val age: Int?= null)使用命令javap -c Student.class反解析class文件,得到Student.class的编译的代码。对于name域,因为不可为空,所以有checkParameterIsNotNull方法进行

2017-06-15 18:03:49 2743

翻译 [译]Android架构组件 – 查看ViewModel – 第二部分

原文链接:https://riggaroo.co.za/android-architecture-components-looking-viewmodels-part-2/如果你回忆上一篇文章,下图指出了我们将如何组织我们的“日期倒计时”应用。本文我们将创建上图显示的EventListViewModel和AddEventViewModel。可在这篇文章找到所有源码。在开始创建ViewModels之前

2017-06-12 20:33:11 3117

翻译 [译]Android架构组件 – 查看Room和LiveData – 第一部分

原文链接:https://riggaroo.co.za/android-architecture-components-looking-room-livedata-part-1/新的架构组件是什么?架构组件的基本框架包括:Room - 一个SQLite对象映射器。非常类似于其他库,如ORMlite或greenDAO。它使用SQL,同时仍然允许对查询的编译时保证。LiveData

2017-06-12 19:32:41 9824

原创 Android编译过程

可以看出生成一个apk有多复杂。 这里围绕几个关键的工具。aapt 处理Manifest,Resource,Assets资源,生成R.java文件aidl 处理.aidl文件,生成.java文件javac 处理java文件,jar包proguard 处理.class文件,jar包,对其进行混淆,压缩dex 处理混淆后的jar文件,生成.dex文件ndk-build 编译native代

2017-05-27 11:27:10 464

原创 Service流程

Service流程

2017-05-24 14:38:59 644

原创 Gradle:String index out of range: 0

Received result Failure[value=org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: String index out of range: 0]早上来merge代码后,gradle sync就报String index out

2017-05-13 12:04:45 6443

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除