自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 【Android】让Android Studio支持中文路径

今天用android studio导入项目,一直报错,错误如下:Error:(9, 0) Your project path contains non-ASCII characters.研究了好久发现android studio不能直接导入带中文路径的项目,网上查了好久的资料终于找到啦!亲测可用哟,解决方式如下:步骤一:找到 C\Users\用户名.gradle目录下的gradle.properties,如果该文件不存在则创建。步骤二:在gradle.properties中添加如下设置:com

2021-04-28 20:37:52 2468

原创 【Android】控件按下抬起变色

Android按下抬起变色的功能主要用到的是 state_pressed这个属性 值有True(代表按下) false(代表抬起)在res文件夹下新建一个文件夹drawable,创建文件:<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">如果只想改变按下变色,注释掉默认背景颜色:<!-- <i

2021-04-27 20:21:05 441

原创 【Android】转成AndroidX

1 更新升级插件将AS更新至 AS 3.2及以上;Gradle 插件版本改为 4.6及以上;项目下 gradle/wrapper/gradle-wrapper.propertie 文件中的distributionUrl改为:distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip 或以上compileSdkVersion 版本升级到 28及以上;buildToolsVersion 版本改为

2021-04-27 20:20:36 734

原创 【Android】DataBinding数据绑定:使用ObservableFields中的天坑

DataBinding系列文章:https://www.jianshu.com/p/d429174b8d07定义Bean的两种方法:区别很大,看着感觉差不多,功能应该一样,但是!!最后Bean2的写法无法实现数据绑定!!!(1)定义Bean2:public class DoubleBindBean2 { public final ObservableField<String> username = new ObservableField<>(); publ

2021-04-27 20:19:35 1572 1

原创 【Java】Java中计算程序运行耗时的方法对比(时间)

Java中测试程序代码运行时间的方式有两种:第一种:以毫秒为单位计算的。long startTime=System.currentTimeMillis();//下面是一些测试代码:耗时操作for(int i=0;i<10000;i++){ System.out.println("当前是:"+i);}long endTime=System.currentTimeMillis();System.out.println("当前程序耗时:"+(endTime-startTime)+"ms"

2021-04-27 20:18:08 4252

原创 【Android】Kotlin

1 Kotlin是什么Kotlin是一种基于JVM的编程语言。Kotlin是对java的一种扩展。Kotlin支持函数式编程。Kotlin类与java类能互相调用。2 环境搭建3 实例var 变量fun 函数? 非空判断!! 若为空,抛出异常...

2021-04-26 20:48:26 167

原创 【Android】lint检查

1 Android lint 检查Android lint是一个静态代码分析工具。它会对我们的代码进行扫描和检查,提前发现问题,通过lint tool工具输出一个文件,告诉我们哪行代码有问题。具体来说,它能对我们的Android项目中潜在的bug,可优化的代码、安全性、性能、可用性、可访问性、国际化等进行检查。现在的AS默认安装。2 lint工作流程3 如何配置lint配置lint.xmljava代码和xml布局文件中添加注解来抑制lint检查自定义lint根据自己的

2021-04-26 20:38:28 522

原创 【Android】进程保活

1 Android进程的优先级Foreground processVisible processService processBackground processEmpty process 唯一目的:做缓存,缩短下次运行组件所需的启动时间2 Android进程的回收策略Low memory killer:通过比较复杂的评分机制,对进程打分,将分数高的进程判定为bad进程,杀死并释放内存。OOM_ODJ:判别进程的优先级。3 进程保活方案利用系统广播拉活缺点:可以通过在And

2021-04-26 20:04:12 120

原创 【Android】自定义控件:概述+手写RecyclerView

自绘控件:自定义容器类控件手写RecycleView()

2021-04-26 19:39:02 139

原创 【Android】Material Design

主题共3种:适配API在21以下的,需要使用兼容包:各种颜色,及其所控制的地方:其中:(1)toolbar,拥有高度灵活性,可定制性,用来代替actionbar(2)DrawerLayout,左右滑动的窗口(3)NavigationView ,与DrawerLayout配合(4)BottomNavigationView,底部提示框(5)FloatingActionButton,悬浮按钮(6)Snackbar,提示功能,用来替代Toast(好文:https://www.jiansh

2021-04-26 19:38:21 132

原创 【Android】Android长按复制文本功能

安卓一般能用到长按复制的控件Textview,Editext,可能也有WebView在开始之前先说一个我遇到的一个坑:viewGroup中有一个这个属性android:descendantFocusability=”blocksDescendants”这个属性有三个值:beforeDescendants:viewgroup会优先其子类控件而获取到焦点afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点blocksDescendants:vie

2021-04-25 19:33:05 7078

原创 【Android】热更新

1. 热更新流程2. 主流热更新框架Dexposed 热更新、日志记录等AndFix 只专注于热更新Nuwa 基于Android的dex分包技术3. 热更新原理Android类加载机制:DexClassLoader 和 PathClassLoader热修复机制:在ClassLoader中创建一个用于存放dex文件的dexElements数组,通过线上的Crash定位找到出问题的类文件,修正这个类文件,打包成一个dex文件(补丁),将补丁放在dexElements最前方,由于ClassL

2021-04-24 22:14:15 173

原创 【Android】Android插件化

1. 插件化来源65536 / 64K 方法数上限随着APP越来越大,里面的方法也越来越多,虽然可以通过H5和跨平台开发技术一定程度上避免这个问题,但是,APP使用体验比不上Native。2. 插件化要解决的问题动态加载APK资源加载代码加载2.1 动态加载APK类加载器:(将Java的字节码文件加载到虚拟机)1: DexClassLoader从APK中的dex实体的java文件中加载,主要用于动态加载,代码热更新2: PathClassLoader只能加载文件目录下的APK2.

2021-04-24 21:54:27 101

原创 【Android】Android架构:MVC-MVP-MVVM深度、高质量学习

1 MVC(模型、视图、控制器)介绍MVC:在Android开发过程中,曾经比较流行的框架是MVC模式。采用MVC模式,便于UI界面的显示、和业务逻辑的分离。具体来说:M层Model层,用来做具体逻辑的处理,会进行一些数据库的操作、网络操作等,这些复杂耗时的操作可以在Model层进行处理。V层View层,用于处理数据显示的部分。XML布局可以视为View层。C层Controller层,Android中Activity主要用于处理用户交互问题,可以视作Controller。然后从Model层读

2021-04-24 21:16:56 313 5

原创 【Android】android studio 安装出现两个图标

我把android项目安装到手机上的时候,发现我的app在手机上出现了两个图标。两个图标点开之后正常打开我的应用,如果卸载其中一个的话,则是把两个都删掉。解决方法:将library包中的AndroidManifest.xml文件中的下列内容注释掉:<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" a

2021-04-14 20:07:09 1548

原创 【Android】平台默认的字符集编码格式查询

Charset.defaultCharset()System.out.println(Charset.defaultCharset());

2021-04-14 20:06:51 1018

转载 【Android】Android点击事件:实现点击空白处让EditText失去焦点并收起系统软键盘

这里我的解决思路就是通过事件的分发来判断手指点下的位置,是不是editText。如果点击的是editText那么就按照原来正常进行;如果点击的不是editText那么就应该让editText失去焦点并收起键盘。所以一共有三个点:在哪里截取点击事件并进行处理?如何判断点击位置是否为editText的位置?如何收起软键盘并让editText失去焦点?一个一个来看:首先我们可以在Activity的dispatchTouchEvent方法中截取点击事件。至于为什么,这个是关于点击事件分发的相关内容;

2021-04-14 20:06:23 1975 1

原创 【网络】ping指定IP的指定端口号

一般,要想测试某个IP是否在用,我们可以使用PING命令。但是PING无法对指定的端口进行操作。要PING指定IP的端口,或者说测试某个IP的连通性,我们可以使用如下方法。telnet IP PORT如:telnet 127.0.0.0 8080如果该地址或者该端口不可用,命令会立马退出返回。如果该IP的端口可以联通 ,那么会建立一条TCP连接。进入连接后,退出的方式为直接输入quit然后回车即可。...

2021-04-14 20:05:44 6170

原创 【Android】回调接口Callback的使用

在第一个类EditSpinner 中:设置item的点击回调接口,创建接口对象private OnItemClickLitener mOnItemClickLitener;设置item的点击回调接口,定义接口中的方法public interface OnItemClickLitener { void onItemClick(AdapterView<?> parent, View view, int position, long id);}创建类中的方法,给该类中的接口对象

2021-04-14 20:05:16 519

转载 牛客网在线判题系统(输入输出问题)

原文链接:https://blog.csdn.net/hesongzefairy/article/details/107877827之前一直用LeetCode刷题,但是线上笔试基本都是牛客网的OJ系统对输入输出有一些要求,第一次考试没有提前做功课,算法题在case输入这里坑了很多时间,题目做出来但是case通过率0%,记个笔记。1.第一类:牛客网里的剑指offer的题和leetcode上一样,函数定义已经写好了,只需要完成函数,返回相关的值就可以,不需要处理任何输入输出,不要在函数里输出任何东西。2.

2021-04-12 23:22:53 1173

转载 【Android】Android项目将module打包成aar文件

版权声明:本文为CSDN博主「娃哈哈19910206」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/a872822645/article/details/81120193打开Studio 右上角。Gradle–>要打包的Module–>Tasks—>build–> 注意 。。这里有好几个选项assemble 这是同时打 debug 包 和 release 包assembleDebu

2021-04-12 19:32:57 295

原创 【Android】使用Gradle把自己开发的项目部署到JitPack

先创建一个新的工程,开发时,千万要注意各个模块和整个工程的命名一定要有区别;确保工程可以正常运行;将工程上传到GitHub,并在GitHub上创建发布版本,标注版本号,最好用1.1.2类似的数字标注;登录https://jitpack.io/,输入用户名/GitHub上的相应工程名,底下会出现所有的发布版本号,点get it,确保Log列的图标时绿色才能正常被加载,如果是红色,说明有错误。...

2021-04-12 19:17:16 123

原创 【Android】组件化

组件化1 Gradle1.1 打印信息Gradle构建工具,Groovy脚本语言基本Java做了拓展,Gradle = JDK + Groovy新建工程,在app的build.gradle中,添加:println("hello gradle")或println "hello gradle"同步时,在Build中可以看到打印出来的信息:> Configure project :apphello gradle> Configure project :libraryhell

2021-04-11 21:58:00 3009

原创 【Android】数据存储,sqlite使用注意事项

获得公共路径下的文件夹目录:public class GetDir { // 获取Excel文件夹 public static String getDir(String pathname) { // SD卡指定文件夹 String sdcardPath = Environment.getExternalStorageDirectory().toString(); File dir = new File(sdcardPath + File.se

2021-04-11 21:57:25 180

原创 【Android】spinner下拉框样式修改

为spinner项创建一个自定义XML文件:spinner_item.xml。将自定义颜色和大小发送到该文件中的文本。<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerItemStyle"

2021-04-11 21:57:05 1996

原创 【Android】RecyclerView:处理item的点击事件

方式1:通过在adapter中提供回调来实现item的点击事件1、Activity中public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private MainAdapter mAdapter; private List<String> mDatas; @Override protected void onCreate(B

2021-04-11 21:56:42 791

原创 【Android】spinner设置默认值和下拉方式

1、spinner设置默认值spinner用适配器装载完数据后, 再设置spinner默认值:spinner有两个方法来设置默认值:.setSelection(position)和.setSelection(position, animate)cursor = db.rawQuery(sql, null);String type = null;if (cursor.moveToNext()) { type = cursor.getString(0); // 把笔记类别设置为默认类别 int

2021-04-11 21:56:13 6476

原创 【Android】设置EditText的下划线颜色

自定义主题修改下划线参考:https://blog.csdn.net/Lindroid20/article/details/72551102 <style name="MyEditText" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@android:color/darker_gray</item> <item name="colorCon

2021-04-11 21:55:44 5284 1

原创 【Android】ARouter路由快速上手

官方网站:https://github.com/alibaba/ARouter查看最新版本:1.添加依赖app的build.gradle:android { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()]

2021-04-11 21:55:02 121

原创 【Android】android异常与性能优化深度、高质量学习

1. anr异常1.1 anr是什么Application Not Responding ,应用程序无响应的弹框1.2 造成anr的原因应用程序的响应性是由Activity Manager和WindowManager系统服务监视的。当检测到Activity或者BroadcastReceiver中,5秒或10秒没有执行完任务之后,安卓就会弹出ANR对话框,具体是两种情况:在Activity或Service中,5秒内无法相应用户的输入事件;在BroadcastReceiver中,10秒内无法执行

2021-04-11 21:54:04 165

原创 【Android】Android项目构建深度、高质量学习

1. AS目录结构首先左上切换到Project目录下.idea :系统自动生成的关于AS的配置目录(版权,jar包等)gradle:Gradle目录(项目构建工具)app:AS创建工程中的一个ModuleExternal Libraries:依赖文件(版本号,SDK等)app中:build://构建目录,系统自动生成的编译目录libs://依赖包存放目录src://源码,资源目录androidTest://系统自动生成的用于测试的目录main://主目录 java://Jav

2021-04-10 14:31:03 112

原创 【Android】ToggleButton点击变色

只需要写一个selector作为togglebutton的背景就行了android中大部分的控件都可以通过selector来改变样式:在drawable文件夹中,创建一个xml文件my_btn_toggle.xml:<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@color/re

2021-04-09 19:22:39 580

原创 【Android】View绘制深度、高质量学习

1 View绘制:decorview、window、surface等概念链接:https://www.jianshu.com/p/c77082f1b30aActivity接受到焦点的时候,会请求绘制我们的UI布局(是由Android的FreamWork层来处理的)绘制从根节点开始,对我们的布局依次进行测量和绘制。PhoneWindow其实就是我们Window窗口的一个实现类(这个概念是在我们的Android的FreamWork当中一个Window的抽象类,这个抽象类是对我们Android系统当中

2021-04-03 21:05:36 286

原创 【Android】UML建模

1 正向、逆向工程在UML图中的应用原文链接:https://blog.csdn.net/qq_32036981/article/details/109459326UML建模目的:一个复杂的架构,在纸上去写去画,是非常复杂的,但通过UML建模就能实现一个脑图,一目了然。正向工程:从UML建模中 导出 Java类;逆向工程:把一个或多个Java文件 导入 UML建模工具当中,变成oom类图模型。(这里注:oom不是OutOfMemory,而是ObjectOriented Model)。安装Pow

2021-04-03 19:29:50 405

原创 【Android】kotlin语法学习

1 语法入门package com.example.kotlinstudyvar age: Int = 18var name: String = "dindin"var nameNotNull: String ? = nullfun main(args: Array<String>){ //name = nameNotNull!! nameNotNull = nameNotNull printLen(name)}fun printLen(str: St

2021-04-03 19:28:50 211 1

原创 【Android】在Activity中更新fragment界面,在Activity中调用fragment的函数

/** * 在Activity中调用fragment中的方法updateSelectedTag */void updateFragmentInActivity(){ 类型强转成目标fragment类型,然后,调用fragment中的方法即可 A a = (A) getSupportFragmentManager().getFragments().get(0); a.updateSelectedTag();}...

2021-04-01 10:36:01 1692 1

rxpermission.aar

Android权限请求一次搞定,配合博文https://blog.csdn.net/qq_30885821/article/details/114383243

2021-03-05

DrawLinesTest

jar包,配合完整使用讲解:https://blog.csdn.net/qq_30885821/article/details/109637541

2020-11-12

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

TA关注的人

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