自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卧龙跃马的博客

Android初学者

  • 博客(42)
  • 收藏
  • 关注

原创 Android使用Maven Publish发布aar到Maven仓库

编写gradle脚本创建mavenpublish.gradle将module的build.gradle文件复制一份并重命名为mavenpublish.gradle在mavenpublish.gradle中添加如下代码apply plugin: 'maven-publish'//生成文档注释task androidJavadocs(type: Javadoc) { failOnError = false source = android.sourceSets.mai

2021-09-08 11:57:59 2179 1

原创 Android View的事件分发机制

Activity的组成图片来源事件分发点击事件MotionEvent一个点击事件就是一个MotionEvent对象点击事件的分发就是对MotionEvent事件的分发传递过程当点击屏幕时,点击事件的传递过程如下:Activity -> PhoneWindow -> DecorView(根View) ->ViewGroup -> View分发事件分发事件主要由dispatchTouchEvent、onInterceptTouchEvent、onTouch

2021-08-24 11:11:41 497

原创 Android自定义标题栏TitleBar

效果xml<dimen name="title_bar_height">40dp</dimen><?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="htt

2021-08-18 14:21:04 567

原创 Android超简单实现验证码倒计时,页面关闭不中断,杀掉进程也不中断

在日常开发中,获取验证码是一个常见的功能,通常验证码倒计时的实现思路都是使用CountDownTimer来实现,但是存在一个问题就是当页面关闭之后重新进入页面,倒计时是不会继续进行的,如果后端验证码接口做了时间限制,那么我们再次请求的时候就会报错,用户体验不好。作为一名CV工程师,在一番百度之后,唯一找到的一个实现方案还需要花钱下载,哎。。。无奈只能自己想了。实现思路其实实现思路很简单,使用CountDownTimer进行倒计时,在开始倒计时的时候,把 当前时间+倒计时总时间 持久化存储,再次打开.

2021-08-18 10:51:58 1373 2

原创 Android在Gradle文件中配置签名文件和APK的名称

def releaseTime() { return new Date().format("yyyy-MM-dd-HH_mm_ss", TimeZone.getTimeZone("GMT+08:00"))}android { signingConfigs { release { storeFile file("../key.jks")//签名文件放于项目根目录 storePassword "123456"

2021-08-16 15:20:39 214

原创 Android RecyclerView设置item的可见数量

注:Recyclerview的adapter使用了第三方库BRV /** * 设置列表可见的item数量 * [visibleCount] item可见数量 * [dividerWidth] 分割线高度 */ private fun setRecyclerviewVisibleItemCount(rv: RecyclerView,visibleCount: Int,dividerWidth: Int){ rv.post { .

2021-08-16 15:16:27 2078

原创 Android文件分割与合并的工具类

koltinpackage com.lzk.libcommon.utilsimport android.util.Logimport java.io.Fileimport java.io.FileNotFoundExceptionimport java.io.IOExceptionimport java.io.RandomAccessFileimport java.lang.Exception/** * @Author: LiaoZhongKai * @Date: 2021/7/.

2021-08-16 15:12:08 769 1

原创 Android组件化架构下Arouter的配置

每个组件都需要依赖Arouter可以将arouter-api使用api在common模块中依赖arouter-compiler则需要在每个模块中依赖,并且每个需要用到Arouter的模块都需要在defaultConfig下做相应配置api 'com.alibaba:arouter-api:1.5.2'kapt 'com.alibaba:arouter-compiler:1.5.2'android { defaultConfig { kapt { .

2021-08-16 15:08:38 405

原创 Android自定义加载框

效果图菊花图标(mipmap-xxhdpi)加载框圆角背景drawable<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="12dp" /> <solid androi.

2021-08-16 14:58:05 574

原创 TokenInterceptor

package com.lzk.libcommon.network.netimport android.content.Intentimport com.alibaba.android.arouter.launcher.ARouterimport com.lzk.libcommon.router.PathConfigimport com.lzk.libcommon.user.UserInfoStoreimport okhttp3.Interceptorimport okhttp3.Respon

2021-08-16 14:48:29 681

原创 Android自定义MaterialButton的样式

通常MaterialButton自带的样式不太符合我们的需求,而Button的样式在APP中通常是通用的,所以可以自定义style,统一按钮样式效果图style.xml<style name="RoundedCornerButton" parent="Widget.MaterialComponents.Button.UnelevatedButton"> <item name="backgroundTint">@color/selector_bu.

2021-08-16 14:44:05 819

原创 DialogFragment自定义弹框

带有取消和确定按钮的对话框效果图view_action_dialog.xml<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.and.

2021-08-16 14:31:56 279

原创 Glide加载长图;WebView加载富文本(图片自适应屏幕大小)

/** * 加载自适应高度图片(长图) * 宽度充满屏幕 * 高度适应图片大小 */ fun loadImageByWrap(url: String,imageView: ImageView){ val width = ScreenUtils.getScreenWidth().toFloat() Glide.with(imageView.context).load(url).apply( RequestO

2021-05-17 16:40:58 362

原创 DialogFragment自定义宽高和圆角背景

DialogFragment自定义宽高在onStart()里面设置宽高class OrderRefundDialog : DialogFragment() { override fun onStart() { super.onStart() val dialog = dialog if (dialog != null) { if (Build.VERSION.SDK_INT >= Build.VERSION.

2021-03-26 09:53:02 507

原创 解决Github Clone项目速度慢的问题

解决Github Clone项目速度慢的问题转载自https://www.cnblogs.com/wangdongying/p/13302168.html例如想克隆BRVAH这个库的代码,它的源码地址是https://github.com/CymChad/BaseRecyclerViewAdapterHelper.git然后在AndroidStudio中拉取代码,但是速度极慢,我的只有20kb/s,要提速只需要将URL中的github.com替换为github.com.cnpmjs.org,即ht

2021-02-19 10:05:00 248

原创 安卓获取IMEI工具类

Java代码package cn.flyaudio.otaclient.utils;import android.content.Context;import android.text.TextUtils;import android.util.Log;import java.lang.reflect.Method;/** * @className IMEIUtils * @desc IMEI工具类 * */public class IMEIUtils { priv.

2021-01-28 14:11:22 591

原创 Monkey测试

使用adb命令:adb shell monkey -p cn.xxx.xxx --throttle 100 -v -v -v 100000>d:\mylog.log结束测试命令:adb shellps | grep monkey //第一个数字是进程号kill 进程号

2020-12-31 10:40:26 125

原创 安卓自定义View实例--水平电量View

功能设置进度条颜色 设置进度条底部背景色 设置进度条和文字的警告色 设置文字大小 设置圆角 进度<=20%,文字显示在整个控件的中间,进度>20%,文字显示在进度条的中间演示效果(最后一个)代码:package com.lzk.customhorizontalbar;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;

2020-12-08 17:55:25 264

原创 安卓Activity dialog主题(透明背景)

代码如下:1. 在style/xml中添加:<style name="transparent_activity" parent="Theme.AppCompat.Dialog"> <item name="colorPrimary">@color/colorPrimary</item> <item name="android:windowNoTitle">true</item> <!-

2020-12-02 19:30:48 1074

原创 踩坑记录

//报错日志:java.lang.NoSuchFieldError: No static field xxx of type I in class Lcom/XX/R$id; or its superclasses解决:子Module的布局文件名称不能与其它module的布局文件名称相同

2020-11-11 19:07:23 158

原创 RxJava实现验证码按钮倒计时

代码如下private var mDisposable: Disposable? = null/** * 验证码按钮倒计时 */ private fun countDown(){ val countDownStr = resources.getString(R.string.get_sms_code_count_down) setCodeButtonEnable(false) val flowable: Flowable.

2020-11-05 11:05:56 128

原创 安卓扩展点击事件,执行点击事件前统一判断

项目中遇到一个问题,点击按钮控制车辆时,需要先判断车机是否在线,但是以前没有考虑到这些情况,所以点击事件就是直接使用的View.setOnClickListener(),有很多个按钮都需要在执行点击事件具体逻辑前判断车机是否在线,如果在每个点击事件里面加if(···) else(···)就太麻烦了,幸好项目是用的Kotlin开发,可以使用扩展方法来实现。扩展方法/** * 扩展方法:校验车机是否在线的点击事件,若在线才会执行具体逻辑,不在线则提示车机不在线 */fun View.setOn.

2020-10-30 22:18:49 252

转载 Cookie和token的区别

转载自 cookie和tokenhttps://www.jianshu.com/p/1abf0c64a309用户登录之后服务器创建一个cookie,然后在服务器端存上用户的一些信息 之后把sessionID放在cookie里面 之后传给用户 用户下次登录的时候带上cookie 然后服务器去根据sessionID去找用户信息 然后返回给用户 OOKtoken一种新机制 因为cookie对于每个用户都需要在服务器端新建一个session 然后消耗大 反正很多坏处token就是把信息保存在用户端第一次.

2020-10-24 16:44:07 1319

原创 好用的软件目录

ScreenToGif官网

2020-10-14 18:48:34 89

原创 AudioManager的使用及音频焦点抢占

AudioManager相关类和方法获取AudioManagerAudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);音频焦点监听OnAudioFocusChangeListener listener = new OnAudioFocusChangeListener() { @Override public void onAudioFocusChange(in

2020-09-21 17:14:54 2010

原创 对Gitee分支的理解

对Gitee分支的理解master该分支主要用来发布上线版本不能在该分支上直接开发和提交代码只有release分支和hotfix分支可以合并到该分支上develop基于master分支克隆日常开发分支,该分支仅用于保存代码,该分支的代码是最新、最全的不在该分支上开发,在feature分支上开发具体的新功能然后合并到该分支上当某一期的功能全部开发完成就合并到release分支,打包给测试人员测试feature基于develop分支克隆具体的功能开发分支新功能开发完成.

2020-09-15 11:39:16 4126 1

原创 ARouter的基本使用

添加依赖和配置android { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } }}dependencies { // 替换成最新版本, 需.

2020-09-02 10:20:51 1144

原创 使用Maven-Publish发布多渠道aar包

在module中配置多个渠道android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { minSdkVersion 21 targetSdkVersion 29 versionCode 1 versionName "1.0" //配置多个渠道 productFlavors { .

2020-09-01 16:42:24 2423 1

原创 AIDL使用示例

AIDL使用示例项目结构AIDL支持的数据类型基本数据类型(除short类型外)StringCharList (集合中的元素必须是支持的类型或者是其它声明的AIDL对象)集合中的元素需要使用in、out、inout修饰;其中 in 表示数据只能由客户端流向服务端(即传入的参数), out 表示数据只能由服务端流向客户端(即输出的参数),而 inout 则表示数据可在服务端与客户端之间双向流通Map (集合中的元素必须是支持的类型或者是其它声明的AIDL对象)集

2020-08-14 18:02:10 534

转载 LiveDataBus使用

LiveDataBusLiveDataBus是基于LiveData实现的类似EventBus的消息通信框架,它是基于LiveData实现的.LiveDataBus的优点LiveData具有的这种可观察性和生命周期感知的能力使用者不用显示调用反注册方法,由于LiveData具有生命周期感知能力,所以LiveDataBus只需要调用注册回调方法,而不需要显示的调用反注册方法。LiveDataBus的实现极其简单,相对EventBus复杂的实现,LiveDataBus只需要一个类就可以实现。Live

2020-08-13 10:39:51 3626

原创 Gradle命令:查询错误信息

在Android studio 的Teminal中输入:gradlew compileDebugSource --stacktrace -info即可查看详细的错误信息,方便在build报错但是没有错误信息的情况下使用

2020-08-05 11:29:20 1363

原创 上传aar包到nexus仓库

在需要上传的module的build.gradle中添加:apply plugin: 'maven'//与dependencies{}同级uploadArchives { repositories { mavenDeployer { //nexus仓库地址 repository(url: "http://localhost:8081/repository/maven-snapshots/") {

2020-07-29 20:34:28 710

原创 取余%

Java 中的 % 运算符并不是取模运算(Modulo Operation),而是取余运算计算方法对于整数aa,bb来说,取模运算和取余运算的过程相同:求整数商:c=a/b 计算模或者余数:r=a−c×b只是取模和取余在第一步求商的方法上有所不同:取余运算在取cc的值时,向00方向舍入( fix() 函数);而取模运算在计算cc的值时,向负无穷方向舍入( floor() 函数)。例如 :7%4 = 3计算过程:7-(7/4的商=1)*4 = 3...

2020-07-27 18:34:33 3831

原创 DialogFragment自定义加载框

效果图如下:布局文件:<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" .

2020-07-09 13:42:35 431

原创 Jetpack之Lifecycle的基本使用

Lifecycle组件是帮忙我们管理Activity和Fragment的生命周期,也就是说,当Activity或者Fragment的生命周期发送变化的时候我们可以得到通知。使用AndroidX就不需要导入额外的包,AndroidX已经包含了Jetpack相关组件了。一:AppCompatActivity默认实现了LifecycleOwner接口,可以直接使用Lifecycle1:创建一个类实现LifecycleObserver接口来监听生命周期package com.lzk.jetpack

2020-07-06 22:52:41 419

原创 AndroidStudio:在一个项目中从Git上引入另一个项目

涨姿势:今天接手一个项目,build.gradle中有这样一句代码:implementation project(path: ':xxxsdk_v2')引入的方式1:先从git上面把它clone下来2:在主项目中引入该libary项目3:在引入的libary上右键,进行一系列git操作,包括添加远程分支,合并代码...

2020-07-06 10:36:05 695

原创 安卓自定义View实例--矩形电量View

<declare-styleable name="ChargeProgressBar"> <attr name="corner" format="dimension"/> <attr name="reach_bar_primary_color" format="color"/> <attr name="reach_bar_second_color" format="color"/> <a..

2020-05-28 15:28:21 322

原创 使用AndroidStudio进行代码重构

使用AndroidStudio进行代码重构Refactor菜单:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaCIpili-1590391029038)(https://img2018.cnblogs.com/blog/472002/201911/472002-20191106122446987-960201700.png “Refactor菜单”)]Rename说明:对类中的成员变量、方法等进行重命名用法:把光标放在方法或字段上面,按Shift+F6(或

2020-05-25 15:18:24 1226

原创 解决gradle下载速度慢

在项目build.gradle中替换allprojects和buildscript下的google()/jcenter()repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven { url'https://maven.aliyun...

2020-04-27 21:53:02 734

原创 状态页面StateLayout:包含加载页面,空页面,错误页面,网络错误页面。内含各种状态默认页面,也支持自定义。

StateLayoutAPI19+状态View,包含加载页面,空页面,错误页面,网络错误页面。内含状态默认页面,也支持自定义状态页面。StateLayout继承自FrameLayout##Github:https://github.com/LZKDreamer/StateLayout预览图引入Step 1. 在项目的build.gradle中添加allprojects {...

2019-12-19 15:10:02 412

空空如也

空空如也

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

TA关注的人

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