自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 Activity启动源码阅读随笔

Activity启动源码阅读随笔1.Launcher组件向AMS发送一个启动MainActivity组件的进程间请求;系统在启动时会启动PackageManageService,并通过PMS来安装APK,PMS在安装一个应用程序的过程中,会解析AndroidManifest.xml文件,从而得到apk的组件信息,在Launcher启动后,会向PMS请求action=ACTION_MAIN,category=CATEGORY_LAUNCHER的Activity组件,并为其创建快捷方式。在Launche

2022-04-22 20:40:01 262

原创 Handler源码阅读随笔

Handler源码阅读随笔1.Handler的创建在App启动的时候,在ActivityThread的main方法里,会为主线程会调用Loop.paper方法,该方法会在TLS里创建并保存一个Loop对象,而在创建Loop对象时,会在Loop的构造方法里创建一个MessageQueue,最后会调用Loop.loop方法来开启循环。2.Loop是如何保证线程唯一的在Loop的paper方法中创建Loop对象时,会将创建的对象保存在ThreadLocal中,ThreadLocal内部是一个Hash

2022-04-22 20:39:19 2042

原创 flutter控件TextField number类型没有小数点或numberWithOptions无效的解决方法

目前解决TextField小数的方案如下 TextField( keyboardType: TextInputType.numberWithOptions(decimal: true,signed: true), inputFormatters: [ PrecisionLimitFormatter(2),//限制精度与正则 ],

2022-04-19 12:07:25 1358

原创 Android Canvas不规则矩形的绘制(两条折线所围成的矩形)

先把代码贴出来,后面有时间再进行分析;涉及的主要函数Path.computeBounds():测量线段所占用的最小矩形空间与位置Path.op():两个Path之间的运算,主要作用是用一些简单的图形通过一些规则合成一些相对比较复杂,或难以直接得到的图形;参考资料:https://www.gcssloop.com/customview/Path_Over.html效果:代码:package com.alrey.customview;import android.content.Contex

2022-03-24 14:47:39 1230

原创 Flutter混合开发状态栏问题(Android)

在阅读此解决方案时,需要确认所出现的问题是否与我一致界面反馈:由Native跳转到flutter界面时,状态栏的设置无效(包括对icon的颜色和statusBar背景颜色),具体表现为,状态栏有灰色蒙板。原因分析首先,对于设置状态栏的相关属性都是需要通过flutter的SystemChannels.platform.invokeMethod方式调用到native方法来设置状态栏相关属性,flutter/service/system_chrome.dartstatic void setS.

2021-09-27 15:50:35 1061

原创 Dart语法糖

以Java语言为对照,列出Dart语言上的部分不同之处;并尽力给出等效的Java代码和Dart代码示例一.运算符三目运算符:condition ? result1 :result2if(condition){ result1;}else{ result2;}boolean condition = true;return condition ? 'result1' : 'result2';///output:result1(变量)空检查运算符:param ?? .

2021-08-11 15:09:45 720 1

原创 Flutter混合开发调试按钮不可用解决方案

Flutter Attach按钮和Flutter Hot Reload按钮不可用(变灰色)有两种情况1.Flutter SDK的证书未配置2.调试app启动模式配置不对1.Flutter SDK证书配置在项目终端运行命令flutter doctor正常结果(可能不一样多,但是没有!和×)Doctor summary (to see all details, run flutter doctor -v):[√] Flutter (Channel stable, 2.0.0, on Mic.

2021-07-13 14:45:41 1510

原创 Kotlin-SharedPreferences工具类

使用到SharedPreferences、Gson、内联函数、泛型、reified.implementation “com.google.code.gson:gson:$google_gson” google_gson = 2.8.5object SpHelper { val sp: SharedPreferences by lazy { ContextUtil.getAppContext().getSharedPreferences("default", Context.

2021-06-07 11:34:59 783 1

原创 Kotlin-自定义ActionBar

第一步:替换app主题<application ... android:theme="@style/AppTheme"> <activity> ... </activity></application>单独设置某个activity的不显示actionBar<activity android:name=".view.activity.MainActi

2021-06-01 16:41:24 506 1

原创 LiveData+ViewModel+Kotlin:多页面监听同一个状态

假设在BaseViewModel中的属性isLogin需要在多个fragment和activity中监听现在有SettingFragment、MainActivity和与之对应的SettingFragmentViewModel、MainActivityViewModel,和BaseViewModel,BaseViewModel是SettingFragmentViewModel和MainActivityViewModel的父类open class BaseViewModel:ViewModel() {.

2021-05-28 14:17:58 1256 1

原创 RxKotlin(RxJava或RxAndroid) + Retrofit示例

RxKotlin(RxJava或RxAndroid) + Retrofit示例第一步添加依赖implementation 'io.reactivex.rxjava2:rxkotlin:2.1.0'//必选implementation 'com.squareup.retrofit2:retrofit:2.5.0'//必选implementation "com.squareup.okhttp3:logging-interceptor:3.11.0"//可选-用于打印http请求日志implemen

2021-05-19 15:27:44 267

原创 RecycleView自定义悬浮头部及背景色差问题

RecycleView自定义悬浮头部1.如何使用自定义布局文件来实现悬浮头部2.悬浮头部背景色差问题先简单说一下我的问题场景:使用RecycleView的ItemDecoration引用自定义布局文件来实现悬浮头部,但是悬浮头部的背景色(在布局文件中直接设置的background)会出现色差,具体表现为设置的16位颜色值与界面上显示的颜色值不一样(如红的不够,蓝灰色又偏黑等等真机颜色与设计图颜色严重不符)1.如何使用自定义布局文件来实现悬浮头部private int mGroupHeight = 48

2021-05-17 18:07:16 247

原创 Android Recyclerview设置Item之间的间距-最简单的方案

不需要LinearLayout.LayoutParams!不需要RecyclerView.ItemDecoration!假设:要在recycleView的每条item的上下各加一个8dp的边距:第一步:在每个item的布局的根布局加上paddingTop。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/r

2021-04-15 16:36:03 9933 1

原创 自定义LengthFilter实现对EditText长度的限制和监听

为简化同时对EditText的长度限制和长度监听的代码,同时避免部分机型上TextWatcher的兼容问题,而产生此解决方案import android.text.InputFilter;import android.text.Spanned;public class WattLengthFilter implements InputFilter { private final int mMax; private LengthWatch mLengthWatch; pu.

2021-04-12 16:45:40 544

原创 Gradle4.0+ 分渠道打包-bugly

一.前言项目app的国内更新是采用的bugly,如果需要上架Google Play,就需要采用Google官方的更新,且app里不能有热更新方案,但是bugly里包含了Tinker相关代码,所以可能会被Google Play下架。在bugly集成官网给出的提示:因此需要对apk分两个渠道打包,一个包含bugly库,一个不包含bugly库。Gradle版本:gradle-wrapper.propertiesdistributionUrl=https\://services.gradle.org/

2021-03-24 16:52:19 400

原创 Android 5.0+应用内多语言切换失效,asset资源切换失效,bundle包多语言失效

今天在开发完app后打算在Android5.0(api22)的模拟器上面好好测试以下,结果已测试就测出了问题,软件首次启动一切正常,能正确读取到系统语言,也能在应用内切换语言,但是后面无论启动多少次都是系统默认语言,举个例子,系统语言是英文的,首次启动后在应用内把应用语言切换到中文,到此为止一切正常,但是把软件清掉重启,语言就会变成英语。先把现象说出来,慢慢分析以下:UI现象:第二次启动后,无论上一次的语言设置为什么语言,都会变成系统语言,但是加载的assets目录下的资源文件未受影响,但是在应用内切换

2021-03-05 16:30:01 1010

翻译 Android 新拟态UI (Neumorphism)

前言本文转自github,只是进行了图片的处理和部分翻译,以方便查阅截至首次发文前找到的原作者的文章地址-May,17,2020若找到本文章更新的时间节点,请私信我更新。原作者github地址文末附源码下载地址,免费。Android上的拟态化UI This is the experimental codes to build Neumorphism designs in Android. Not a library. Just sample project now(目前只是示例项目).

2021-02-23 09:20:55 2196 4

原创 Android截屏工具类的使用

Android截屏工具类的使用此截屏工具采用MediaProjectionManager类实现帧截图,截屏的结果会包含状态栏和底部虚拟按键,涉及到以下三个工具CaptureUtil:主要负责截屏ImageUtil:主要负责对截屏后的Bitmap的处理ScreenUtil:主要负责截图前屏幕参数的初始化import android.annotation.SuppressLint;import android.app.Dialog;import android.content.Contex

2021-02-01 15:28:10 484

原创 Android添加Https自签名证书(Retrofit 2.x、OkHttp 3.x、Glide 4.x)

一.获取证书假设app要请求的网址是https://192.168.1.6:8080,在Chrome浏览器中输入网址会显示证书不安全从浏览器中到处证书点击证书后出现如下窗口点击复制文件,然后下一步到选择好格式后点下一步,选择路径,后缀可以为.crt或.cer后面就是下一步,然后完成然后就可以在选择的导出路径处看到从浏览器中导出的https自签名证书二.导入证书到项目中将获取的证书放到app目录下的res/raw文件中三.向OkHttp添加证书在创建httpClient的

2020-11-06 18:14:09 1211

原创 解决HostnameVerifier警告

前言今天邮箱收到一封官方的邮件,关键内容如下一个HostnameVerifier警告,说限期不修复就会下架Help Center解决方案如果你和我一样不知道HostnameVerifier是个什么东西,且确认自己没有用过这玩意儿,且项目里也没有这个东西(建议全局搜索一下HostnameVerifier),那么就能确定这个警告肯定是由于第三方库所引发的,这就需要你到你谷歌应用控制台去看看警告的详情信息(一般会在提醒列表里),google一般会告诉你是那个类触发了这个警告查看谷歌控制台后,看到了如

2020-09-24 17:06:50 5390

原创 2020年Android应届生秋招技术面试题补充(飞猪、阿里云、小米、有赞)

1.如何定义心跳包的间隔时间并不是一个固定的值,需要根据网络环境来选择,网络状态好的时候可以定为30s一次,当网络状态不好的时候,断线比较频繁的时候就可以定为5s一次2.view的事件分发机制https://www.jianshu.com/p/7d50a6b0b6af本质上是对motionEvent的传递,motionEvent的传递顺序如下:Activity、winow、decorv...

2020-09-24 14:52:25 496

原创 解决DialogFragment闪烁或者闪屏的问题

今天修复一个历史遗留BUG;项目中的dialog基本都是通过DialogFragment来实现的,但是同时也有个问题,比如再加载网页的时候,加载之前xshow出个dialog,网页加载完后dismiss,但是如果网络很好,网页加载的速度很快,不到1s就加载完成的话,就会出现一个问题,界面会闪一下,如果你的Activity的主题是默认的话,就表现为黑屏一下,如果是透明的主题,就表现为可以看到上一个页面,然后立马恢复虽然这个闪屏的时间很短,估计只有几ms,但是看着还是很不爽的。最开始的解决方案是想办法设置一

2020-09-14 14:20:42 5120

原创 Android集成HMS推送(同时集成阿里云辅助通道)的问题

问题场景按照HMS官方文档集成,单独的demo可以运行,再现有项目上把原来阿里云集成的hms单独集成出来,因为再国外的时候,阿里云获取token会失败,但是单独集成hms是可以再海外使用的,把阿里云的hms单独集成处理后,控制台能打印出token,但是再hms的后台推送通知和消息都接收不到,获取hms的SDK的日志显示通知已经推送到了手机,可能原因阿里云自带的hms没有剔除干净,导致自己重新集成的hms首先初始化,然后阿里云里集成的hms会再初始化一次,但是获取的token失效,通过和华为的官方技术人

2020-06-16 14:52:24 655

原创 MIUI小米集成FCM官方移动推送之接收通知问题

前提:APP在前台或者后台(国内的Android系统杀死应用是收不到通知的,系统丝毫不留情面,除非集成系统厂家自己的sdk),已科学上网且网页能正常访问google问题场景:在小米8(MIUI 11)集成了FCM推送,能初始化成功,firebase无报错(可以在控制台过滤firebase看一下有没有报错信息),能够获得google token,在FireBase的网页端控制台下发通知也无任务异常情况,但是手机收不到任何通知,或者有时候能收到通知,但是测着测着就又收不到了,又或者一段时间不继续发通知就收

2020-06-13 11:18:39 7466 1

原创 app在MAC和Win系统的Android Studio(AS)采用同种方式打包APK的包体积巨大差异的问题

问题场景:在mac和win系统的Android studio(下文简称AS)上进行apk的打包,采用build下的默认打包方式,产生的包体积差异巨大,甚至有2倍的差距。可能的原因:其他分支提交代码的时候,提交了debug库,也可能是没有strip过的release包,里面包含了很多调试信息,如果在mac上打包,AS可能默认包含了strip过程,但是在win平台上可能没有包含strip过程。strip:是在linux/unix平台下,gcc/clang/llvm等编辑工具包中的一个工具,例如命令 s

2020-06-12 15:48:57 1176

原创 Android 配置Material Design库及使用MaterialButton

Android 配置Material Design库1.首先在gradle.build文件中添加依赖implementation 'com.android.support:design:29.0.2'添加后的gradle文件如下,多的可删可不删ependencies { implementation fileTree(dir: 'libs', include: ['*.jar']...

2020-04-19 21:42:35 1671

原创 curl 18 transfer closed with outstanding read data remaining OR Installing required Cocopod终极解决方案

先列出在网上找的其他大佬大解决方案,但是这些方案对我都没有用,各位不仿先试试这些方案,如果没有效果,再接着往下看。Installing required CocoaPods dependencies耗时太久基本也会报出此错误,但是网上大多数方法都是重装cocopod,对我也无效。在新建React native项目的过程中遇到此问题,先看下错误信息,DoubleConversion可以看做...

2019-08-16 10:34:54 5675

原创 Swift 5.0按多个字符分割字符串

let str:String = "12#34&ddd*99"; let char:CharacterSet = ["#","&","*"]; let elementarr = str.components(separatedBy: char); print(elementarr);打印结果["12", "34",...

2019-07-27 18:02:07 1574

原创 同一/不同StoryBoard(故事板)下的ViewController(界面)跳转及传值

先贴出代码,然后来分析MainViewController.swiftimport UIKit;import SwiftyJSON;//json序列化import Alamofire;//http网络请求import Toast_Swift;//Toastclass ViewController: UIViewController { @IBOutlet weak var e...

2019-07-26 16:34:17 630

原创 XCode IOS 添加module、依赖

1.将需要添加的module的拖到你的porject目录下,被添加的module的后缀名为xcodeproj2.选择你的项目(HTTPRequestDemo)在右侧选择TAREGETS目录下的同名文件,然后在旁边的窗口中找到General -> Embedded Binaries,因为我已经添加过了,所有在Embedded Binaries会有一个夹子,如果没添加过的话。这个一般没有...

2019-07-24 10:59:32 2426

原创 关于Android粘性广播StickyBroadcast的使用及注意事项

粘性广播介绍粘性广播所发送的广播会在系统中滞留一段时间,当注册了符合的广播接收器的时候,广播接收器会自动接收广播消息。粘性广播的发送 /** * 发送粘性广播 * */ Intent i = new Intent(); i.setAction("StickyBroadcast"); i.putE...

2019-07-23 10:15:09 2524

原创 TextView超链接文本样式去掉下划线和修改颜色

1.新建ComponentClickableSpan类重写ClickableSpanpublic class ComponentClickableSpan extends ClickableSpan { private Context context; public ComponentClickableSpan(Context context){ this.co...

2019-07-03 00:15:45 855

原创 IDEA For MAC OS搭建Java串口通信开发环境

本文参考此文章编写:https://stackoverflow.com/questions/37261533/rxtx-java-eclipse-on-macJava 平台使用RXTXcomm.jar来开发串口;与Windows和Liunx平台不同。这个上面有更详细的操作和介绍也有下载地址https://stackoverflow.com/questions/37261533/rxtx-ja...

2018-10-20 13:41:04 2931 4

原创 IDEA的Android Studio配置黄油刀(butterknife)

功能和介绍就不多说了,直接开始1.打开Preferences2.点击Plugins,选择Browse repositories… ,搜索Android ButterKnife Zelezny插件,进行安装。3.在build.gradle 中假如依赖 implementation ‘com.jakewharton:butterknife:8.8.1’apply plugin: '...

2018-10-16 16:04:49 1041

原创 Could not find com.android.tools.build:gradle:X.X.X.

将mavenCentral()改为jcenter()apply plugin: 'com.android.library'buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' ...

2018-10-13 20:57:28 674

RxKotlin_Retrofit_Demo.zip

使用RxKotlin+Retrofit的示例代码,包含在纯Kotlin项目和Android项目中的使用说明

2021-05-19

neumorphism-master.zip

Android拟态化UI示例代码

2021-02-22

空空如也

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

TA关注的人

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