自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiaxiayige的专栏

好记性不如烂笔头

  • 博客(131)
  • 资源 (15)
  • 收藏
  • 关注

原创 Flutter插件开发踩坑记

1.集成其他Flutter插件遇到的问题之一(Missing ‘package’ key)(Android)问题描述:D:\flutterSdk\flutter\.pub-cache\hosted\pub.flutter-io.cn%47\wechat_kit-2.0.0\android\src\main\AndroidManifest.xml:6:9-50 Error:Missing 'package' key attribute on element package at AndroidMani

2021-03-22 14:49:18 1760 2

原创 Flutter开发小技巧

0 前言本文测试机型为: 小米10,红米7 开发环境为:Flutter 1.20.4 • channel stable • https://github.com/flutter/flutter.gitFramework • revision fba99f6cf9 (3 months ago) • 2020-09-14 15:32:52 -0700Engine • revision d1bc06f032Tools • Dart 2.9.2目录1.实现沉浸状态栏2.禁止横竖屏切换3.字

2020-12-09 11:45:59 340

原创 使用LiveData+Retrofit,实现具有生命周期的网络请求

(本文代码示例采用Kotlin编写)1. 前言此前我们一直是使用RxJava+Retrofit实现网络请求,直接使用这种请求方式是没有和Activity或Fragment的生命周期绑定的,就容易出现内存泄漏或者程序崩溃的情况。因此通常还会加上一个RxlifeCycle来保证和我们的生命周期绑定就变成了RxJava+Retrofit+RxLifeCycle这种结构了,但是自从Android官方推出了LiveData组件,因为LiveData是带有生命周期属性的,我们就可以抛弃原来的写法,来创造属于自己的一

2020-11-05 14:40:57 1615

原创 关于Kotlin,你不知道的那些事(一)------inline,noinline,crossinline

1.inline相信大家很多在写kotlin代码的时候都看到过这样的关键字,比如常见的let,with,apply,also,但是大家又是否知道代表了什么含义呢,加了inline的方法能调用,不加inline关键字的方法也能调用,那这个关键字到底有什么作用呢?接下来我们通过实例来分析一下。我们写一个测试类来分析。fun main(args: Array<String>) { val result = sum(1, 2) print("result = $result")

2020-06-22 17:37:07 411

原创 开发技巧之 (Flutter) Dart扩展方法的使用

#Tips (Flutter)Dart扩展方法的应用在kotlin中,我们可以通过编写自己的扩展方法,来复用一些常用的方法调用,这样能够快速的进行迭代开发,并且用起来也舒服,在Dart中有没有这样的方法可以操作呢,答案当然是有咯 ,但是这也只有在dart2.7版本才能够使用。如果大家用Flutter开发, 可以看看自己的dart版本是否能够支持扩展方法呢。flutter --version参考链接:extension-methods例1-字符串打印比如我们要打印日志之类的方法,我们传统的方法就

2020-06-16 09:40:12 2518

原创 开发技巧之Android打包自动命名

Tips-Gradle 打包自动命名一般的,我们构建运行App的时候,通常会在build/output文件夹下面生成一个app-debug.apk 或者app-release.apk,这样如果不做修改的拷贝到了其他地方或者发给别人,过后再看这个名称的apk文件,我们很难一眼就知道这是一个什么文件,是哪个版本的文件。所以这里我们通过Gradle提供给我们的一些方法属性,我们可以自己定义文件输出的命名规则,这里给出一份简单的规则,大家可以根据自己的需要添加修改。这里我们想要的命名规则比如是:微信_9.5.

2020-06-11 14:18:30 1216

原创 Android学习------一教就会的Android换肤实现

1.前言说到换肤,大家并不陌生,淘宝,京东等App一到节假日就会换上一身新衣服,当然里面还会有一些皮肤提供给你自己下载应用。换肤和常见的暗黑模式明亮模式有点类似,但是这种模式大多数是通过更改主题的方式来实现的,当我们要实现一些比较复杂的,比如给某个按钮,文本更换添加背景图片,更改字体字好大小等操作就不是很方便了。今天要将的就是如何实现自定义换肤。2.需求产品要求App内部需要根据不同的节假日或者根据24节气App里面的图标背景,字体颜色样式需要有不一样的变化。2.1 分析需求根据上面的需求

2020-06-08 10:56:33 457

原创 Flutter开发者必知必会的十个开发小技巧

0 前言SafeAreaWrapRichTextClipRRectMediaQueryFutureBuilderFlexible SizedBoxAliginDivider如果上面的组件你能够熟练使用,那么就可以关闭此页面去开心的玩耍啦。如果你不清楚他们有什么用法,那么久往下看吧。每一个都有代码示例哦。Tips 1 - SafeArea直通车 https://api....

2020-03-31 17:18:11 1617 1

原创 Android AOP,从需求到实战(AspectJ)

推荐链接:https://blog.csdn.net/Innost/article/details/493873951.前言关于OOP和AOP的区别介绍,本文就不再详细阐述了,一种是面向对象编程,一种是面向切面编程。从编码思想上有些不太一样。下面我们直接从实战操作中来学习Android中的AOP2.需求2.1 需要给每个方法加上日志打印我们先写一段代码 作为基础代码,我们在此之上 加上我...

2019-12-24 14:45:07 502

原创 代码优化------Snackbar内存泄漏分析及解决

SnckBar内存泄漏分析及解决1 分析工具MemoryAnalyzer(MAT)2 问题代码 fun initView() { /*** 省略 ****/ mSnackbar = Snackbar.make(view, "确定要退出吗?", Snackbar.LENGTH_LONG) mSnackbar!!.setAction("确定") { v ->...

2019-12-13 16:12:00 378 1

原创 Rxjava温故知新(十)------100行代码实现RxJava的Observable.create(简版)

1.前言前面讲解了一些操作符的使用,现在我们看一下部分源码,实现一个简单版本Rxjava的Observable.create到订阅的动作。2.实现简版RxJava2.1 代码分析首先我们来看看RxJava里面的源码走向是怎么的,从Observable.create到subscribe里面做了些什么操作,最后消息会发送到我们的观察者里面我们知道RxJava Observable是一个被观...

2019-11-06 16:58:07 569

原创 Rxjava温故知新(九)------Java泛型和PECS

相关文章推荐1.https://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends-t-in-java2.https://howtodoinjava.com/java/generics/java-generics-what-is-pecs-producer-extends-consumer-sup...

2019-11-04 14:08:44 204

原创 Rxjava温故知新(八)------背压模式

1.操作符onErrorResumeNextonErrorReturnonExceptionResumeNext2.操作符案例2.1 onErrorResumeNext说明拦截发射的异常 ,能够处理 throw Exception级别的异常,能够接收异常消息,需要返回一个新的Observable,执行发送 ,不能处理 throw Error级别异常例子Observable...

2019-11-04 13:55:02 425

原创 Rxjava温故知新(七)------RxJava异常型操作符

Rxjava温故知新(七)------RxJava合并型操作符1.操作符onErrorResumeNextonErrorReturnonExceptionResumeNext2.操作符案例2.1 onErrorResumeNext说明拦截发射的异常 ,能够处理 throw Exception级别的异常,能够接收异常消息,需要返回一个新的Observable,执行发送 ,不能处...

2019-10-29 09:15:33 208

原创 Rxjava温故知新(六)------RxJava合并型操作符

1.操作符列表startWithconcatWithmergezip2.操作符案例2.1 startWith说明[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMEwYULU-1571905690955)(9.png)]先发射 2和3,然后再通过startWith(1),最后输出 1, 2 3 .说明startWith中的内容先输出例子 ...

2019-10-24 16:28:24 165

原创 Rxjava温故知新(五)------RxJava条件型操作符

1.前言条件型操作符,判断类型,向下游发送布尔类型的数据allanycontainsisEmpty2.条件型操作符2.1 all[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sqwCIQ3m-1571797880276)(8.png)]说明all条件操作符,类似于And(与)条件,上游发射的所有数据都会经过判断, 一个条件为false 最后...

2019-10-23 10:32:02 170

原创 Rxjava温故知新(四)------RxJava操作符之过滤型操作符

1.前言过滤型操作符主要就是为了方面我们过滤一些自己的想要的数据,就字面意思。filtertakedistintelementAt2.过滤型操作符##2.1 filter说明filter操作符返回的是一个布尔类型的值,根据自己的条件逻辑判断返回可以达到你想要的结果举例 (打印出年龄大于4的User)写法1 User user1 = new User("111", 1...

2019-10-23 09:17:35 143

原创 Rxjava温故知新(三)------RxJava操作符之变换型操作符

1.前言由于Rxjava是一个变种的观察者设计模式,前面也已经说过了,Rxjava的设计是 一个开始节点,一个结束节点。但是由于Rxjava提供了很多方便的操作符,使得我们的被观察着把数据发送到观察者的途中,我们可以对被观察着进行变形修改。Rxjava是一个流式的API集合,所以我们可以通过一条线的方式梳理我们的逻辑,有可能会有多次变换操作,最终拿到想要的结果画个草图接下来讲讲常见...

2019-10-18 14:53:13 171

原创 Rxjava温故知新(二)------RxJava操作符之创建型操作符

前言上一篇文章降到了Rxjava是一个起点和一个终点的模式,那么这个概念大家一定要记住,起点就是被观察者,终点就是观察者。还需要通过订阅(subscribe)把2者建立关系。1.常见创建型操作符createjustfromArrayemptyrange2.操作符代码示例2.1 create操作符 (应用场景 -多)说明通过create创建一个观察者 Observab...

2019-10-17 13:48:49 138

原创 Rxjava温故知新(一)------ 传统观察者模式和RxJava观察者模式的区别

RxJava已经更新到RxJava3了,本文采用Rxjava2学习。前言RxJava 是一种被扩展的观察者模式,由被观察者(Observable)订阅 观察者(Observer)。Github RxJava1.什么是观察者模式简述:观察者模式是由被观察者和观察者组成,通过被观察者发送通知,观察者接收到通知处理自己的事情。1.1 传统观察者模式(一个被观察者,n个观察者)打个比方...

2019-10-17 13:46:35 468

原创 Android热修复------手写AndFix实现(基于Android7.0)

市面上很多热修复框架,相信大家也都有对比使用过,其他热修复框架这里也不列举对比了,今天就从阿里的AndFix热修复框架入手,学习下AndFix里面的热修复是如何做的。源码地址:https://github.com/alibaba/AndFix上次更新已经是三四年前的了,基本上没有维护了,不过还是有学习的价值。 接下来我们就来简单看下里面到底怎么做的,然后自己实现一个热修复。AndFix实现原...

2019-09-26 22:28:33 463 1

原创 Android学习------Handler源码分析到手写简版Handler实现

从Handler的使用,到源码分析学习Android多年了,还没有看过Handler源码,只是知道Handler是用来发送消息更新UI的,那么具体的实现是怎么样的呢?那么今天,就来偷窥一下Handler源码的世界。1.Hander的基本使用1.1 基本使用,Demo演示首先我们来一个简单的例子,看看平时我们Handler是怎么使用的,然后逐步分析里面的源码实现。创建一个新的工程,Han...

2019-08-04 23:16:17 324

原创 Gradle sync failed: 'Gradle:xxxxx@jar' already disposed 问题解决办法

Gradle sync failed: 'Gradle:xxxxx@jar' already disposed: --------------Creation trace: java.lang.Throwable: 1564477298072 at com.intellij.openapi.util.TraceableDisposable.<init>(TraceableDi...

2019-07-30 17:21:33 3853

原创 Android 机顶盒(Box)替换修改鼠标指针样式(需要Root)

1.需求1.由于我们的产品是运行在机顶盒上使用的,并且是可以插入鼠标操作的。 由于鼠标指针太小,用户使用又是依靠投影设备当作屏幕使用,所以这个时候机顶盒显示出来的鼠标旧显得比较小,而且还有其他一些系统因素,比如背景纯黑色,鼠标指针也是默认黑色的,这样就更不容易看清屏幕上的鼠标指针在哪里了。2.解决方案1.不予解决,一开始我是拒绝的。鼠标指针是跟随系统的,也改变不了系统的资源啊。驳回诉求...

2019-07-10 10:56:21 3108

原创 AndroidUI------沉浸状态栏(兼容4.4-5.0+)

众所周知Android支持沉浸式是在4.4开始,4.4和之后的版本又有些许区别,所以我们需要考虑Android版本的兼容性。接下来我们来尝试看看不同的效果1.Android4.4沉浸式:先看看原图,添加样式 ,可见顶部有一明显的黑色状态栏1.1 方式一 样式修改1.在主题样式文件中设置添加<item name="android:windowTranslucentStatus"...

2019-05-07 23:42:50 276

原创 Android学习笔记 ------ Gradle Plugin 插件制作流程

1.开始创建一个Library项目,并且删除build.gradle中原来的数据2.处理Library的build.gradle文件1.添加groovy插件 apply plugin: 'groovy'2.添加maven插件 apply plugin: 'maven3.添加groovy和gradleAPI的依赖关系: dependencies { implementatio...

2019-03-24 22:42:16 408

原创 Android学习笔记------进程间通信AIDL学习和深入理解

想要直接看效果的可以直接去看 #5.4想要源代码的可以直接去末尾1.AIDL(Android 接口定义语言)是什么?官网说明:https://developer.android.com/guide/components/aidl简单来说就是让处于不同进程间的数据可以交互,可以通信。比如A,B2个独立的App,A的数据可以告诉B,B的数据可以告诉A。2.常见的几种进程间通信有哪些?1...

2019-03-20 23:19:28 185

原创 Android各大手机厂商兼容适配文档快速一览入口

oppohttps://open.oppomobile.com/wiki/doc#id=10246vivohttps://dev.vivo.com.cn/documentCenter/doc/145华为:https://developer.huawei.com/consumer/cn/devservice/doc/50115小米:https://dev.mi.com/console/...

2019-01-19 16:51:31 1266

原创 Android学习------关于Android9.0的兼容

学习链接:https://developer.android.google.cn/about/versions/pie/android-9.0-changes-28#Android9.0适配须知1.前台服务权限声明需要请求前台服务(比如通知栏中的通知,音乐播放器通知栏)权限,(FOREGROUND_SERVICE),这是一个普通权限,所以只需要在mainfest中添加即可,使用 Servic...

2018-11-19 15:38:17 3011

原创 Android学习-兼容Android7.0,8.0版本升级更新(代码片段记录)(Kotlin)

Android7.0需要fileprovider声明,Android8.0需要添加 申明权限&amp;amp;lt;uses-permission android:name=&amp;quot;android.permission.REQUEST_INSTALL_PACKAGES&amp;quot; /&amp;amp;gt;if (Build.VERSION.SDK_INT &amp;amp;gt; Build.VERSION_CODES

2018-11-03 15:06:32 517

原创 FFmpeg基础学习

参考学习网站 https://ffmpeg.org/ffmpeg.html?tdsourcetag=s_pctim_aiomsg1.什么是FFmpeg,它可以做什么?答:FFmpeg 是一个非常快速的视频和音频转换器,//也可以从现场音频/视频源抓取。它还可以在任意采样率之间进行转换,并使用高质量的多相滤波器动态调整视频大小。2.如何下载?答:https://ffmpeg.org/ 选...

2018-10-19 09:38:16 715

原创 重新认识Gradle(二)-开始一个新的Gradle构建 ,创建一个任务

本文章基于Gradle4.6学习本文会学到什么? 1.如何开始一个新的Gradle项目 2.如何创建一个Gradle Task。 3.其他细节有用的知识1.创建一个新的Gradle项目平时我们都是在Android项目中使用gradle命令,相信很多同学基本上很少去手写Gradle命令 执行一些响应的命令。因为AndroidStudio帮我们做了很多,比如自动gradle buli...

2018-08-28 00:45:35 2628

原创 重新认识Gradle(一)-安装篇

首先Gradle是什么?简要回答:Gradle只是一种构建工具,其他构建工具还有Ant,Maven为什么要学习Gradle?简要回答:因为好用,因为构建速度更快。因为我学Android,我用Gradle。 本节你会学习到什么? ###回答:1 .不同平台的Gradle安装 2.Gradle和Gradle Wrapper的区别1.如何安装Gradle,从li...

2018-08-24 13:12:59 4401

原创 Android 打包上传AAR文件到本地Maven仓库并且引用

1.前言建议电脑端观看,多图慎入平常项目中遇到的一些公共组件,公共模块,多个项目都在使用的情况下,我们一般有以下几种做法1.整个module导入工程,如果module中有什么bug,修改了还要其他项目再重新添加进去,很不方便2.module打包AAR,多个项目引用添加,如果有什么bug,修改了重新发给其他项目成员重新更新3.使用Gradle Add Libay的方式 类似:im...

2018-06-09 20:42:38 23408 24

原创 Android Studio 运行java程序 2

Android Studio 运行java程序 21.前言还记得以前写过一篇文章 Android初学之——Android Studio 运行java程序 居然有2w多的阅读量,15年写的,估计都是那个时候才用Eclipse转过来的吧,哈哈。有时候能直接运行一些代码验证自己的想法,希望可以不用再重新到手机上运行一遍程序,则可以写个小程序跑一遍,这样的做法还是挺方便的。所以时过境迁,如今再...

2018-06-06 22:57:05 456

原创 Android学习------ExoPlayer的学习和使用(音频)(一)

ExoPlayer的学习和使用(音频)(一)1.前言Google GitHub ExoPlayer地址:https://github.com/google/ExoPlayer相关教程网站:https://google.github.io/ExoPlayer/guide.html简要说明:ExoPlayer is an application level media pl...

2018-06-06 20:51:58 10267 12

原创 Android------Kotlin Data Class 使用以及注意事项

1.前言:官网介绍: https://kotlinlang.org/docs/reference/data-classes.html会自动帮我们生成get,set方法,减少代码编写量,更轻量级别的实体类。2.使用说明:data class User(val name: String, val age: Int)会自动生成一下方法:equals()/hashCode() p...

2018-05-08 00:09:03 21599

原创 Python初学-----遍历文件夹获取文件夹下面文件的所有行数

一次特殊需求,需要获取项目里面代码文件的行数,一个脚本搞定import osfrom os import pathrootPath=os.getcwd()print(rootPath)fileArray=[]def getAllJavaFile(fileList,rootPath): files=os.listdir(rootPath) #获取文件列表 for...

2018-04-26 14:24:19 1777

原创 Android学习------拖动删除(仿微信朋友圈拖动删除)

1 示例发朋友圈的时候,长按图片可以调整顺序,还可以拖动到底部删除。2 官方示例:https://developer.android.google.cn/guide/topics/ui/drag-drop.html撸代码1 首先布局布局画出来一个RecyclerView+底部一个TextView&lt;?xml version="1.0" encodin...

2018-04-15 23:05:54 4427 1

原创 Python学习-----Tinypng图片压缩小程序(2)

升级版,遍历文件夹import osimport tinifyfrom os import pathtinify.key = "You key"rootPath=os.getcwd()print(rootPath)fileArray=[]def getAllImg(fileList,rootPath): files=os.listdir(rootPath) for fileNa

2017-09-25 15:50:58 516 2

ListView ,GridView 通用Adapter ViewHolder

通用Adapter 通用ViewHolder

2015-11-09

Android系统签名 signapk.jar platform.pk8 platform.x509.pem

signapk.jar platform.pk8 platform.x509.pem

2015-04-16

proguard4.8

解决android代码混淆时出现的问题。最新版本proguard4.8

2014-12-05

android SwitchButton

switchButton switchButton switchButton switchButton

2014-02-20

extjs教程文档

extjs教程文档

2013-03-14

extjs包下载

extjs

2013-03-14

dwr.jar教程

dwr教程

2013-03-14

DWR.jar文件

DWR.JAR

2013-03-14

pl/sql 9 注册机

pl/sql 9 注册机

2013-01-28

java23种设计模式.pdf

Java23种设计模式(总结)

2012-11-01

SQL语句大全大全(经典珍藏版).pdf

sql语句大全金典珍藏版,分享分享

2012-11-01

java面试宝典

面试宝典,让你的就业之路不再坎坷

2012-07-18

去除win7快捷方式

win7去除快捷方式箭头

2012-07-18

计算机组成原理复习资料

计算机组成原理即汇编语言,复习资料

2012-01-11

java 1.7 帮助文档

java1.7帮助文档 可以帮助你更好的学好java java编程的好工具

2011-10-22

空空如也

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

TA关注的人

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