自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Android Jetpack 简单介绍(三)

最近看到一句朋友圈发的摘抄,略有感触:想不到吧,又该穿长袖了,你看,时间走得多快,可你,却还是一无所获。疫情刚上班时,树叶都还没发芽,现在,叶子已经开始枯了。你怕不怕,这辈子就是你上辈子说的下辈子!我再次学习一下Jetpack:接着《Android Jetpack简单介绍(二》继续说;项目中自动生成的MainViewModel,它做作用是什么呢?我们点进ViewModel看看;源码就不贴出了,我们直接上源码中带的例子:MainFragment publi..

2020-10-15 16:06:47 34

原创 Android 检测手机是否被Root

public class CheckSysUtils { public static boolean isDeviceRooted() { return checkRootMethod1() || checkRootMethod2() || checkRootMethod3(); } //查看系统是否测试版 private static boolean checkRootMethod1() { String buildTags = and..

2021-01-19 17:47:57 10

转载 设置 app 不能在模拟器上运行

今天收到测试提的一个问题,就是需要做到“移动应用不能在模拟器中运行”。度娘了一圈,已实现,现做记录:本次记录主要参考:https://blog.csdn.net/wei_zexu/article/details/109535682?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-3&spm=1001.2101.3001.4242都说“夜神”模拟器功能强大,于是我也装了一个;将打包好的a

2021-01-19 14:19:24 37

原创 This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this pr

Github上面下载了一个 项目,想学习一下,打算运行一下,编译了一会,就报错;错误如下:意思是此版本的用于IntelliJ IDEA(或Android Studio)的Android支持插件无法打开此项目,请使用4.1或更新版本重试。接下来那就升一下级;Update and Restart 点一下如你所想,更新后重启,便可;...

2021-01-18 18:22:27 33

原创 Kotlin WebView 使用

使用Kotlin 敲了一个WebView 练手案例;正常加载一个Url,及加载失败后,点击重加载按钮后,重新加载;上代码:class MainActivity : AppCompatActivity(), View.OnClickListener { private val url = "https://www.baidu.com/" var isError: Boolean = false override fun onCreate(savedInstanceSt

2021-01-07 11:57:17 14 1

原创 setTextColor

一:<.......android:color="#EEEEEE"/>二:view.setTextColor(Color.parseColor("#FF2222"));三:view.setTextColor(Color.GRAY);四:view.setTextColor(getResources().getColor(R.color.colorPrimary));五:view.setTextColor(0x000000);六:view.setTextColor(Color.rgb...

2020-12-30 21:25:36 6

原创 EditText 限制输入字符

上代码:<EditText android:layout_width="200dp" android:layout_height="50dp" android:inputType="number" android:digits="0123456789." />如上就限定了一个EditText中只可以输入IP地址;值得记录的是一个我曾经没用过的属性:android:digits="",在digits属性中设置允许的字符,未允许的字符即使软键盘上

2020-12-23 11:01:30 7

原创 Caused by:com.alibaba.android.arouter.exception.HandlerException:ARouter::ARouter init logistics ...

在做一个模块化项目的时候,需要将项目中暂时不用的模块暂时删除掉,删除掉之后重新跑项目,就报这个错;错误定位在ARouter初始化那一行。必是和ARouter有关。我的解决办法:1、首先删除干净项目中与被删模块ARouter入口代码; ARouter.getInstance().build("/XXX/XXX").navigation().loginPush(“需要传递的参数”); 2、卸载当前apk,重新安装 ;问题至此解决;原因是:...

2020-12-09 14:26:12 91

原创 仿多层次ProgressBar

先看效果话不多说,直接上代码,有用的拿去<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layou

2020-12-01 14:07:59 8

原创 面试基础知识储备

1、Java8种基本数据类型; byte: 1字节 short: 2字节 int: 4字节 long: 8字节 double:8字节 float:4字节 char:2字节(C语言中是1字节)可以存储一个汉字 boolean:1字节 false/true(理论上占用1bit,1/8字节,实际处理按1byte处理)2、int与integer的区别int是基本数据类型 Integer是int 的封装类 int和Integer都可以表示某一个数值 ...

2020-11-27 17:52:49 15

原创 List 数据去冗 LinkedHashSet

对List数据的去冗,分两种情况,话不多说,直接上代码:第一种:package com.example.mylist;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import java.util.ArrayList;import java.util.LinkedHashSet;import java.util.List;publ

2020-11-02 18:22:37 12

原创 RxJava3 创建操作符整理

最近这三四个项目中都用到了RxJava,使用频率之高,觉着有必要进行整理,方便自己巩固记忆,也便于他人学习查找;本文就RxJava3的创建操作符进行记录,整理如下图:RxJava 使用步骤 :数据源产生数据并发射给订阅了这个数据的观察者(响应式编程)。所以主要分为三步:第一步:创建被观察者(数据源)并生产数据第二步:创建观察者第三步:订阅(关系绑定)1、create点击一个按钮时,建立订阅关系输出如下:2、just点击一个按钮..

2020-07-28 17:40:48 86

原创 Android 用RxJava3实现 倒计时和 延时加载

用RxJava3 写一个倒计时,个人认为比较优雅;看例子:1、首先集成implementation "io.reactivex.rxjava3:rxjava:3.0.4"implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'2、具体代码如下://点击按钮,开始倒计时public void startTimeClick(View view) { /** * start: 开始数值 * count:

2020-07-23 15:47:09 231

原创 线程池相关的概念

记录一点关于线程池的概念: 一、什么是线程池: 线程池简单的说就是管理线程的一个总调度官。 它可以存储着多个核心线程和多个非核心线程, 也可以派遣核心线程或非核心线程去处理事情。 线程池原理简单的解释就是会创建多个线程并且进行管理, 提交给线程的任务会被线程池指派给其中的线程进行执行, 通过线程池的同意调度,管理使得多线程的使用更简单,高效。 二、为什么要使用线程池? 1.重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。 2.能有效控制线程池的最大并...

2020-07-22 15:56:17 19

原创 关于华为手机密码保险箱功能关闭

华为EMUI 9.0之后增加的密码保险箱功能,很方便,但是不符合我们的业务需求;如何关闭呢?很简单,关闭EditText的自动填充,如下:EditText中添加: android:importantForAutofill="no"也可在代码中动态设置:setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO)踏破铁鞋无觅处,得来全不费工夫;...

2020-06-04 21:55:25 705

原创 SmartToast

项目Github地址:https://github.com/the-pig-of-jungle/smart-show项目概况:一个封装了Toast、Snackbar、Dialog的开源库;先看Toast封装的效果(逐个点击):集成:// for androidximplementation ('com.github.the-pig-of-jungle.smart-show:all:3.0.2')//如果会使用到SmartSnackbar模块,需添加material库,suc

2020-06-04 19:56:56 752 2

原创 Caused by: java.util.ConcurrentModificationException解决及分析

话不多说,上例子:定义了一个集合,然后forEach遍历,当值为“test2”时,将其从集合中删除;但是程序跑起来后,就报错了,报错信息如下:报错信息指向forEach,这又是为什么呢?我们先点进ArrayList看看是哪里报的错:看到抛出异常的地方,自然就明白为什么出错了:原因:ArrayList的父类AbstarctList中有一个域modCount,每次对集合进行修改(增添元素,删除元素……)时都会modCount++而foreach的背后实现原理其实就是.

2020-06-03 18:16:25 306

原创 一个功能强大的RecyclerViewAdapter 适配器 BaseRecyclerViewAdapterHelper

github:地址:https://github.com/CymChad/BaseRecyclerViewAdapterHelper/blob/master/readme/0-BaseRecyclerViewAdapterHelper.mdgithub上介绍的比较详细,就不过多赘述;

2020-06-02 14:37:13 79

原创 Kotlin 自定义View报错

在用Kotlin 写一个自定义view 的时候,出现报错:原因是,我们在自定义View时,人如果有自定义View有属性或者在XML中调用,而我们这样写(也就是Java中的一个参数的构造方法):自然就报错了。正确方式如下(即为Java中的两个参数的哦构造方法):...

2020-05-31 17:42:27 114

原创 Android 事件分发机制梳理 Kotlin
原力计划

关于Android事件分发,想必是哪个Android 开发者都绕不开的基础知识。今天就简短的梳理一下,并用简单的Demo进行演示:首先得知道,Android 事件在哪几个对象之间传递呢?答:Activity、ViewGroup、View在这三个对象之间的事件传递的方法有哪些呢?直接上demo代码片段:Activity 代码:自定义view代码片段:自定义ViewGroup代码片段:知道了以上,再简单的进行验证一下事件分发的流程:很简单的案例..

2020-05-31 17:17:27 81

原创 MPAndroidChart 整理

近来由于业务需求,要做图表类型的数据展示,故想到了MPAndroidChart先上图:由于是Pad上的截图,所以图片有点大;首先说MPAndroidChart的集成;implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'maven { url "https://jitpack.io" }集成后直接上代码:1、布局代码:<?xml version="1.0" encoding="...

2020-05-28 22:33:37 326

原创 Gradle project sync failed. Basic functionality(e.g.editing.debugging) will not work properly.

在项目中,我们往往需要继承一些第三方的库,以便更加快捷的实现我们的需求;但是在新建的工程中,我们继承进第三方库后,项目编译不过;控制台出现报错:ERROR: Failed to resolveGradle project sync failed . Basic functionality(e.g.editing.debugging) will not work property;Try Again 几次还是这样,是为什么呢?既有可能是在build.gradle中少加了一个maven

2020-05-27 10:40:28 76

原创 MediaPlayer 播放在线音频卡死

近来项目中有播放音频的需求,于是想用MediaPlayer先写个Demo;布局代码如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par

2020-05-24 20:15:35 477

原创 Android Jetpack 简单介绍(二)

新建你的第一个Jetpack学习Demo新建一个项目,关键点如图(选择Fragment+ViewModel):新建项目后,再看目录结构,如下图:自动生成了Activity+Fragment+ViewModel接着,我们再看一下它的gradle:新建的项目中自动集成了Jetpack库中用于管理Activity和Fragment生命周期的Lifecycles组件;...

2020-04-27 12:04:03 66

原创 Android Jetpack 简单介绍(一)

在学习Jetpack之前,先回顾一下Android开发中的三种开发模式:1、MVC 模式 Model-View-Controller2、MVP 模式 Model-View-Presenter3、MVVM 模式 Mode-Viewl-ViewModel由于今天主要介绍Jetpack,所以就不得不再次回顾一下MVVM;由于Android开发生态的多样性,一个项目...

2020-04-27 10:07:24 95

原创 找不到kotlin.jvm.functions.Function2的类文件

在敲一个Demo时,引用了一个开源的组件,集成进来,看看样式还挺好;看源码发现,组件是用Kotlin写的,当我监听它ItemSelectListener,重写了onItemSelect方法,并在里面写了个吐司,想看看 吐司的内容;于是就要将项目跑起来,问题就随之而来:控制台也在疯狂的暗示:找不到kotlin.jvm.functions.Function2的类文件,这如何是好呢?...

2020-04-24 15:24:14 1277 1

原创 从源码角度再看EventBus 的使用

首先得明确EventBus是用来做什么的呢?由greenrobot 组织贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架功能:通过解耦发布者和订阅者简化Android事件传递EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行...

2020-04-22 21:22:41 113

原创 Activity 中 Handler的正确使用

public class MainActivity extends AppCompatActivity { TextView test_text; private final MyHandler mHandler = new MyHandler(this); @Override protected void onCreate(Bundle savedInsta...

2020-04-18 14:22:39 252

原创 Java 中的单利模式,及关键字 volatile 和 synchronized的使用

先上一个简单的单例懒汉模式的例子,并将关键字 volatile 和 synchronized在单例中用起来;volatile关键字我理解的作用,就是多个线程同时操作同一个变量时,保证不同线程拿到的都是修改后的同一变量;synchronized同步块(同步锁),通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同...

2020-04-16 22:07:36 138 2

原创 Java 基础巩固

今天晚上,简单的看看几个容器类的集成实现关系;1、先看HashMap;Map map = new HashMap();点进HashMap,可以看到HashMap的继承实现关系;再点进AbsTracMap看看2、再看HashTableHashtable hashtable = new Hashtable();点进去看看再点进Dictionary看看:...

2020-04-15 22:38:20 127

原创 两个APP之间的跳转,从A应用跳转至B应用,如B未安装,则进行下载安装

最近有一个小需求,就是从A应用跳转到同一公司下的B应用,如B未安装,则进行下载安装;需求简单,再此记录,其中也有常常被大家忽略的小知识;记录一下,方便下次拿来直接用,也供大家互相学习;实现步骤如下;1、权限添加、权限的动态申请,及在manifest清单文件中的配置;2、检测手机内是否安装B应用;3、如已安装直接跳转;4、如未安装,则下载安装;接下来,咱们一步步的看代码实...

2020-04-14 20:59:47 177

原创 不再造轮子,让Android开发更迅速

前年写过一篇关于Android的一点基础知识的文章,对回顾总结还是有一定的,随着时间流逝,第三方框架也是在推陈出新;今天也有点时间,所以总结下近来用到的第三方框架。1、implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'LifeCycle是GoogleApp架构中推荐的一个组件,以上这个版本包含了liveData,li...

2020-04-12 20:50:49 129

原创 Android RSA加密在项目中的应用

由于项目安全考虑,需要对关键数据进行加密;本文就RSA加密进行再次学习,本文就文中的工具类进行简单说明;如有不足之处,希望大家予以反馈,便于互相学习;先说下RSA加密的优缺点:优点:安全性好。非对称加密使用一对秘钥,一个用来加密(publicKey),一个用来解密(privateKey);而且公钥(publicKey)是公开的(前后台的公钥是一致的),私钥只在需要做解密的一端保存(一般来讲...

2020-04-12 15:21:12 137

原创 Android ARouter初识

先贴上ARouter官方中文介绍:https://github.com/alibaba/ARouter/blob/master/README_CN.md相必没有接触过组件化或者ARouter的小伙伴,都想知道ARouter到底是干什么用的呢?简而言之:ARouter是阿里开源的一款android路由框架。通过路由进行界面跳转,区别于 Intent的显隐式跳转。在模块化的项目中,友...

2020-04-08 21:06:05 63

原创 记一次 Native Crash Abort message:‘FORTIPY :vsprintf:prevented 33-byte write into 32-byte buffer ’

先贴上关键日志第一眼看到日志,以为是缺少了Arm64 的so文件,查看后发现并没缺少;无奈之下,只有复现这个Crash,一点点缩小排查范围;最终将问题的矛头指向了项目中Native 层Md5加密的地方:extern "C" JNIEXPORT jstring JNICALLJava_com_symbol_business_NdkMethods_signatureParams(JNI...

2020-04-04 09:14:30 506

原创 记Android 中Application Not Responding(ANR)解决

三个多月前换了新工作,新公司的项目是从外包开发的半成品。代码可圈可点,但就是稳定性差点;动不动就无响应;迫于时间紧凑,于近日,才将其解决。故作记录; 我们都知道,造成ANR的根本原因无非是在:Activity中超过5s无响应、Broasdcastreceiver中超过10s、Service中超过20s;如上,就会是页面卡死,用户体验极差; 在仔细阅读完项目...

2019-08-06 12:58:04 150

原创 此项目开发过程中遇到的基础知识

一、关于Handler机制1、handler:主要用于消息处理2、Message:消息,子线程向UI线程发送消息,消息中携带者相应数据3、MessageQueue:消息队列,由一个个Message消息组成4、Looper:信息泵(消息轮循器),循环处理消息队列MessageQueue中的Message,将其发送给相应的Handler他们之间的关系:Handler负责发送

2018-01-15 15:00:49 134

原创 Android 横竖屏切换小记

由于我的项目中,会强制横屏播放视频。所以我在AndroidManifest.xml文件中需药设置的Activity所在位置设置了android:screenOrientation="landscape"

2017-10-30 13:41:03 178

原创 Device supports x86, but APK only supports armeabi-v7a

由于长时间使用真机测试,模拟器不会用了。今天使用模拟器,居然报错:Device supports x86, but APK only supports armeabi-v7a网上查了好多相关博客,我理解能力差,没有什么直接一目了然的解决办法,反而在那里讲原理。我曹,服了都;解决办法很简单,如下图:

2017-08-18 13:35:48 1843 1

原创 Incomptible types:HomeFragment and Fragment

由于是抄袭demo,所以照葫芦画瓢。没想到一直出现Incomptible types:HomeFragment and Fragment        问题很简单,就是关于fragment的包没有应用对如下:import android.app.Fragment和import android.support.v4.app.Fragment将如

2017-08-01 10:57:32 342

MyMpChartDemo.zip

该资源是我参照MPAndroidChart的源码梳理的使用demo,有柱状图、饼状图、折线图、雷达图;

2020-05-28

MyIntentDemo.zip

最近有一个小需求,就是从A应用跳转到同一公司下的B应用,如B未安装,则进行下载安装; 需求简单,再此记录,其中也有常常被大家忽略的小知识;记录一下,方便下次拿来直接用,也供大家互相学习; 实现步骤如下; 1、权限添加、权限的动态申请,及在manifest清单文件中的配置; 2、检测手机内是否安装B应用; 3、如已安装直接跳转; 4、如未安装,则下载安装; ———————————————— 版权声明:本文为CSDN博主「乃哥1」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_32886769/article/details/105519880

2020-04-15

ARouterDemo.zip

本Demo就单一的为Android小白就ARouter使用提供简单的例子和注释说明;demo比较单一,比较浅显,有不足之处也望指出,互相学习;

2020-04-09

JCVideoPlayerStandard 播放列表中item时长获取问题

发表于 2017-03-18 最后回复 2017-06-22

空空如也

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

TA关注的人 TA的粉丝

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