自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

本人很懒

什么也没留下

  • 博客(80)
  • 资源 (7)
  • 问答 (4)
  • 收藏
  • 关注

原创 Android事件传递(四):总结篇

下面源码基于Android11 API30文章里会用到上篇文章的布局例子这里先做一个初始化 ,让他们都返回默认值 重写方法dispatchTouchEvent 重写onTouchEvent isClickable MyLinearLayoutOut return super.dispatchTouchEvent(ev); return super.onTouchEvent(event); MyLinearLayout return super...

2021-03-23 16:41:50 253 1

原创 Android事件传递(三):你真的知道 UP 在Activity、View、ViewGroup中怎么传递的么?

上一篇:Android事件传递(二):事件动作 DOWN 在Activity、View、ViewGroup传递下面源码基于Android11 API30上一篇文章分析了DOWN事件以后布局中每个对象的状态:UP动作也是和DOWN一样从Activty开始到ViewGroup的dispatchTouchEvent方法,我们就从这里开始看,我们先分析 DecorView :DecorView extends ... extends ViewGroup: @Overri

2021-03-23 15:31:45 508 1

原创 Android事件传递(二):DOWN 在Activity、View、ViewGroup传递,除了自己本身的传递,还做了什么?

下面源码基于Android11 API301 Activity#dispatchTouchEvent public class Activity extends ContextThemeWrapper implements Window.Callback,...... { ......省略其它代码...... private Window mWindow; public Window getWindow() { r

2021-03-23 14:16:50 653 2

原创 Android事件传递(一):Activity、View、ViewGroup及dispatchtouchEvent、onTouchEvent梳理

1 事件的组成用户对屏幕的操作主要包括下面几种操作 ,它们都是MotionEvent类中定义的常量ACTION_DOWN = 0 按下(手机开始点到屏幕上) ACTION_UP = 1 抬起(手机离开屏幕上) ACTION_MOVE = 2 移动(手机在屏幕上滑动) ACTION_CANCEL = 3 取消 像点击一个按钮整个事件就是ACTION_DOWN ----> ACTION_UP...

2021-03-16 16:13:26 655

原创 Android事件分析前篇

偶尔看到一个问答:https://ask.csdn.net/questions/246798,为什么onTouchEvent方法会在dispatchTouchEvent方法之前执行呢?就跟了一下源码重新看了一下Android的事件传递流程回答如下: public class MyButton extends Button { 。。。。。省略代码。。。。。。 @Override public boolean dispatchTouchEvent(MotionEvent

2021-03-05 14:34:33 123

原创 子线程也能更新UI?

在写一个小项目的时候遇到一个很奇怪的问题,在子线程里面有两个更新UI操作,但是前面一个不报错,后面一个报错了。我确实没有乱说,代码(完整代码,后面log对应行数都是准的)如下:package com.demo.text_demo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;impo.

2021-03-04 10:31:59 417 2

原创 LayoutInflater加载xml布局源码分析及View的mParent的初始化

上一篇文章: setContentView源码分析在上一篇文章到最后加载我们自己的xml布局文件到父布局中:LayoutInflater.from(this.mContext).inflate(resId, contentParent);那么LayoutInflater是如何加载xml布局文件的呢?目录1. LayoutInflater.from(Context)2. inflate(resId, contentParent)3. 附1. LayoutInflater.from(Cont

2021-02-04 16:25:00 340 1

原创 setContentView源码分析

public class ActivityTest extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); }} ↓ ...

2021-01-27 14:33:21 1434 4

原创 AndroidStudio AIDL 详细步骤

AIDL (Android Interface Definition Language)即Android接口定义语言。最近在看Binder的原理,Android里面AIDL就是Binder的经典实现,先记录一下AIDL的使用步骤。1 服务端Service1.1 使用AndroidStudio创建aidl文件然后弹出一个让你修改文件名的页面,文件名自己随便取点Finish以后aidl文件目录如下图:然后打开aidl文件夹目录并打开刚刚创建的 OperateNumInterf

2020-12-14 16:53:42 3934

原创 Kotlin break continue 一看就懂

break1 双层循环break外层循环loopOne@ for (i in 1..10) { println("i ${i}") for (j in 1..10) { if (i == 2 && j == 8) break@loopOne print("j ${j} ") } println() }输出日志如下:2.

2020-11-25 10:17:46 1340

原创 AndroidStudio 打包apk 报错Error:Execution failed for task ‘:app:packageRelease‘

签名打包apk的时候报错Error:Execution failed for task ':app:packageRelease',如下图各种clean,重启Studio,并没有什么卵用。期间还报了各种其他错误如下:Cause: invalid block typeCause: invalid distance too far backEntry 'res/drawable-xxhdpi-v4/loading_16.png' name differFailed to create..

2020-11-23 09:10:52 6627 2

原创 非Activity环境startActivity什么意思?Calling startActivity() from outside of an Activity 

什么是非Activity环境startActivity?在Activity里面可以直接startActivity,如果不在Activity里面就需要用 context.startActivity 的方式。那是不是用context.startActivity的方式就是非Activity环境startActivity呢?答案是不一定。如果context是Activty, context.startActivity是Activity环境startActivity;如果context不是Act.

2020-10-29 10:04:02 293

原创 微信下载文件目录

微信发送apk文件会默认加一个.1后缀,虽然手机下载QQ浏览器能直接安装,但是,并不想下。打算直接打开微信文件保存目录修改文件名去掉 .1 然后就可以安装了。网上说微信目录是这样的:/tencent/MicroMsg/Download手机文件管理 → tencent → MicroMsg →Download但是我打开MicroMsg发现没有Download文件夹。。。。然后我在另一个目录中找到了:手机文件管理 → Android → data → com.tencent.mm→Mi.

2020-10-27 17:05:13 9286

原创 怎么在AndroidManifest的Application中使用多个tools:replace

因为项目中需要用到多个tools:replace,用法如下 <application .....。 android:allowBackup="false" android:appComponentFactory="AAA" tools:replace="android:appComponentFactory,android:allowBackup">就是在 tools:replace 后面用逗号隔开就可以了...

2020-10-26 14:00:57 2308

原创 AndroidStudio 3.6.3 R.layout. 找不到布局文件

版本:AndroidStudio 3.6.3在确认R文件没有导错的情况下,试了File–>Sync with File System 还是不行。重启AndroidStudio就可以了。

2020-10-15 16:12:03 902

原创 AndroidStudio升级以后 间接依赖报错问题 implementation project 和 api project

使用AndroidStudio3.0以上版本进行组件式开发发现间接依赖的库报错找不到对应的Library我的项目是这样的|--moduleA|--moduleB|--moduleC1 在moduleB的build.gradle文件中依赖moduleA:implementation project(path: ':moduleA')2 在moduleC的build.gradle文件中依赖moduleB:implementation project(path: '...

2020-10-13 13:49:42 10356

原创 免费 在线转换 音频,图像,PDF,视频,文档等格式转换

地址点这里: https://www.aconvert.com/cn/audio/可以在线免费转换音频,图像,PDF,视频,文档格式页面是这样的1 点击 选择文件 选择想要转换的文件。2 点击目标格式 选择你想要的格式3 点击 开始转换 开始上传文件并转换我是将一个m4a的音频文件转换成MP3格式,转换后下载页面:如果你的浏览器不知道怎么新建下载方式1:那就用手机浏览器扫描下面的那个二维码,华为自带浏览器页面如下:点击那个下载按钮就直接下载。用手机UC..

2020-09-15 10:21:19 2488

原创 Kotlin Lambda详解及非局部返回是啥意思?

lambda 表达式总是括在花括号中, 完整语法形式的参数声明放在花括号内,并有可选的类型标注, 函数体跟在一个->符号之后。如果推断出的该 lambda 的返回类型不是Unit,那么该 lambda 主体中的最后一个(或可能是单个) 表达式会视为返回值。意思就是说lambda表达式一定要放在花括号 { } 中,->前面是参数,后面是方法体就是你要拿这个参数进行的操作。如果你的lambda是有返回值的,->后面最后一个表达式会被视为返回值,代码如下:lam1 对...

2020-09-10 16:34:45 1140 2

原创 Kotlin 枚举类 enum

枚举类就是一组命名的常数,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.在使用中一般常用的

2020-09-10 14:58:15 12959

原创 Kotlin 对象声明与对象表达式

先来看一下对象表达式和对象声明是如何实现的 /** /** * 对象表达式 * 对象声明 */ */ var obj = object { object MyObject {.

2020-08-31 14:06:57 415

原创 Duplicate jar entry [android/support/design/widget/CoordinatorLayout$1.class

Duplicate jar entry [android/support/design/widget/CoordinatorLayout$1.class

2020-08-26 11:29:13 801

原创 Android版本对照

平台版本API 级别VERSION_CODEAndroid 10.029QAndroid 928PieAndroid 8.127OreoAndroid 826OreoAndroid 7.125NougatAndroid 7.024NougatAndroid 6.023MarshmallowAndroid 5.122LOLLIPOP_MR1Android 5.021LOLLIPOPAndroid ...

2020-08-26 10:36:06 3728

原创 RxJava2 源码分析笔记(三) 线程切换

终于来到线程切换先看一个如何切线程的简略流程图注: 上面蓝牙主流程中 subscribeOn(Schedulers.io()) ,observeOn(AndroidSchedulers.mainThread()) 但是subscribeOn 也可以传AndroidSchedulers.mainThread();observeOn也可以传Schedulers.io() 这是让RxJava的线程可以来回切换的关键!...

2020-08-18 11:23:17 611

原创 RxJava2 源码分析笔记(二)

上一篇文章: RxJava2 源码分析笔记(一)下面来看一个复杂一点的调用是如何工作的 AStudent aStudent = new AStudent();//我自己建的类 aStudent.setName(" dog "); Observable .just(aStudent) .map(new

2020-08-13 16:54:15 305

原创 RxJava2 源码分析笔记(一)

先看一个最简单的调用Observable.create(new ObservableOnSubscribe<Object>() { @Override public void subscribe(@NonNull ObservableEmitter<Object> emitter) throws Exception { System.out.println(" 被观察者 subscribe ");

2020-08-12 13:58:32 178

原创  rx.xxx 和 io.reactivex.xxx RxJava1 和 RxJava2 和 RxJava3

描述 RxJava 1.X RxJava 2.X package包名 rx.xxx io.reactivex.xxx Reactive Streams规范 1.X早于Reactive Streams规范出现,仅部分支持规范 完全支持 Backpressure 背压 对背压的支持不完善 Observable设计为不支持背压 新增Flowable支持背压 null空值 支持 不再支持null值,传入null值会抛出NullPoi.

2020-08-12 08:59:18 1715

原创 Kotlin 泛型 协变out 和 逆变 in 及Java中extends和super的对比

List<? extends TextView> textViews = new ArrayList<TextView>(); TextView textView = textViews.get(0); //确定可以获取到TextView(根据多态是其子类也会向上转型,所以可以) textViews.add(new Button(this)); //报错 textViews.add(new Vi...

2020-07-15 10:08:17 1516

原创 AccessibilityService 类似微信自动抢红包的实现

类似微信抢红包也就是自动点击按钮实现1 创建一个类继承AccessibilityServicepublic class AutoClickService extends AccessibilityService { @Override public void onCreate() { super.onCreate(); } @Override protected void onServiceConnected() {

2020-07-07 15:03:24 685

原创 Kotlin 主构造函数与次构造函数的理解

遇到了Kotlin: Primary constructor call expected的报错如果类有一个主构造函数,每个次构造函数需要委托给主构造函数, 可以直接委托或者通过别的次构造函数间接委托。委托到同一个类的另一个构造函数用this关键字即可这句话就是说如果一个类有主构造函数,只要他还有次构造函数就必须调用主构造函数,方式可以不同方式1:每个次构造函数都调用主构造函数class Parent(name: String) { var age = 0; va...

2020-06-04 15:21:23 4298 7

原创 Kotlin 双冒号 :: 将函数作为参数使用及使用函数作为参数的三种方式

class ColonMagic { /** * 不需要参数 */ private fun sayNoWords() { println(" no msg ") } /** * 一个参数 * message:String类型 */ private fun say(message: String) { println(message) } /** *.

2020-06-02 14:48:58 1214 2

原创 Flutter Dart 引用方法 带括号 和 不带括号的比较

通过代码比较一下class Person { bool say(String msg) { print(msg); return msg == null ? false : true; } void setPeople() { /** * People.setSay1 参数需要是一个bool值 * say("im people")带括号就是返回一个bool值 * 所以问题 * */ new People.s

2020-05-13 16:21:16 2133 2

原创 Dart笔记

1 Dart中类 中无论函数还是方法都不支持重载,方法名一样,参数不同会报错。class A{ A(){ } A(int a){ //这个地方会报错,说A()函数已经存在 } A.eat(){ //构造函数 } A.sing(int food){ //构造函数 } A.sleep(){ //构造函数 }}2 Getter 和 Stter 方法class D{ int num1,num2...

2020-05-11 15:54:21 245

原创 VisualStudioCode VSD 集成Dart 采坑记录

1代码不联想VSD配置Dart都成功以后,代码不联想有一个警告:For full Dart language support, please open a folder containing your Dart files instead of individual loose files好吧,原来是直接新建一个 .dart 文件进行编辑不支持,需要新建一个文件夹,再在里面新建 .dart文件就可以了就是打开随便哪个盘,新建一个文件夹,用VSD打开,再新建 .dart文件就可以了...

2020-05-11 09:32:42 1513

原创 Android MVP框架 小结

公司项目中用了MVP框架,这里进行一点总结,详细说明都在代码注释里面项目中我喜欢按功能进行处理先展示base包中的处理 BaseActivitypublic class BaseActivity extends AppCompatActivity { /** * 1 进行一些Activity的公共处理 * 2 对Activity的批量管理操作...

2020-04-23 13:12:56 213

原创 AndroidStudio logcat 日志 包名显示问号 亲测!!!

04-20 13:37:28.576 18277-18277/? I/ly: msg: 初始化定位AndroidStudio突然出现日志里面的包名显示为问号,原来一直是好的网上的办法全都是:检查 Tools / Android / Enable ADB Integration是否勾上,没有的话,勾上,然后,重启adb我打开看了一下,我的Enable ADB Integration...

2020-04-20 13:46:39 938

原创 蓝牙搜索不到周围其他蓝牙设备

最近公司需要做一个小项目,用到蓝牙,首先在Mainfest清单中声明蓝牙权限和定位权限 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /&g...

2020-04-14 16:00:22 910

原创 视频格式转换网站

地址1:https://www.aconvert.com/cn/video/地址2:https://convertio.co/zh/mp4-mpg/地址3:https://cloudconvert.com/formats/#video

2019-11-11 16:13:33 6908

原创 is not accessible from java.lang.Class android.app.ActivityThread

最近遇到一个报错is not accessible from java.lang.Class<android.app.ActivityThread>很奇怪最后发现相关的类的一个构造函数 是protected 改为public 即可构造函数无论是protected 还是 private 都是不行的会报这个错误...

2019-10-23 15:41:38 5450 1

原创 图片PDF转word

最近需要把PDF转word,试了几个网站发现PDF是图片做成的而不是文本直接做的。找了些国内的软件都要收费。直接放网站:https://www.onlineocr.net/限制:只有50页的免费权限使用:1 点右上角SIGN UP 去注册一个账号,注册很简单2 注册账号,填邮箱但不用登陆邮箱验证,所以随便填个邮箱就可以,但要是正确的邮箱格式3 登录以后就按...

2019-06-01 09:52:09 3467

原创 Android setLineSpacing(float add, float mult);

setLineSpacing()原型为public void setLineSpacing(float add, float mult); 参数add:增加的间距数值,对应android:lineSpacingExtra参数。 参数mult:增加的间距倍数,对应android:lineSpacingMultiplier参数。最终结果:原行间距 x mult+add tv.setLine...

2018-08-27 14:11:10 9396

Scource Insight4.00.0084

解压以后阅读安装指导: 1 先打开sourceinsight_4.0.86.0-setup.exe进行安装直到安装完成 2 打开安装目录用上面的sourceinsight4.exe替换安装目录中的sourceinsight4.exe 3 打开sourceinsight程序,会有一个弹窗,选择第三个选项 ○ import a new license file. Choose this option if a license file was sent to you. 导入上面的si4.pediy.lic文件。

2020-12-15

高德地图 添加路线 删除路线 demo

高德地图添加路线,移除路线以及更改路线颜色、宽度等操作 高德地图其他操作都很简单就没有涉及

2018-04-18

高德地图移除路线Demo

高德地图添加路线,移除路线以及更改路线颜色、宽度等操作 高德地图其他操作都很简单就

2018-04-17

Android项目实战教程加源码 20个

Android项目实战视频加源码,超过20的项目,各种项目任意选择下载

2017-10-30

Android游戏制作教程 完整视频+源码

里面有传智播客、千峰的视频教程,还有超过十个游戏源码。有兴趣的可以下载看一下

2017-10-30

绝对可用,WPS_10.1.0.5458_setup.1452759676

WPS_10.1.0.5458_setup.1452759676,安装可用

2016-09-08

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

TA关注的人

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