- 博客(39)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SmartRefreshLayout下拉刷新上拉加载框架
Android智能下拉刷新框架,支持越界回弹,集成了几十种炫酷的Header和 Footer。 RefreshLayout,OverScroll。特点功能:支持所有的 View(AbsListView、RecyclerView、WebView....View) 和多层嵌套的视图结构支持自定义并且已经集成了很多炫酷的 Header 和 Footer (图).支持和 ListVie
2017-09-04 17:13:07
2489
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android studio 中如何删除无用资源?
1、在Anaylze中选择Run Inspection by Name...2、在点击之后弹出的窗口输入unused resources后,回车3、根据情况,选择情况,选择整个项目、指定Module...,也可以自己过滤。点击ok4、得到结果,里面全是没用的文件。可以一个个删,也可以一次性删除
2017-06-04 14:25:34
3191
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android Glide使用的详解
1、在build.gradle中添加依赖: compile 'com.github.bumptech.glide:glide:3.7.0'需要support-v4库的支持,如果你的项目没有support-v4库(项目默认已经添加了),还需要添加support-v4依赖: compile'com.android.support:support-v4:23.
2017-05-11 11:47:59
3085
原创 常用正则表达式大全
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。
2022-03-15 10:17:55
4018
原创 Flutter环境搭建和Android Studio配置以及安装问题详解
目录1. 下载Flutter SDK2. 将下载好的SDK解压到任意目录3. 配置环境变量4. 命令行cmd中执行flutter doctor命令5. Android Studio安装Dart插件6. Android Studio安装Flutter插件7.创建Flutter项目1. 下载Flutter SDK https://flutter.dev/docs/get-started/install/windows2. 将下载好的SD...
2021-07-15 13:21:09
310
2
原创 Kotlin基础语法(一)
一、基本语法1. 表达式的使用//1、函数声明,可用表达式,自动推断返回类型之类的fun sum(a:Int,b:Int):Int{ return a + b}//改为表达式,并自动推断返回类型fun sum(a:Int,b:Int) = a+b//2、结合条件判断的表达式fun max(a:Int,b:Int):Int{ if(a>b){ return a }else{ return b }}//可简写为fun max(a:Int,b...
2020-12-31 09:46:41
237
原创 fatal: remote origin already exists.解决方法
今天往码云提交代码的时候,遇到了几个问题,记录一下,方便以后查找第一个问题git remote add origin**************fatal: remote origin already exists.(报错远程起源已经存在。)上网查了下,有很多小白遇到过这个问题,以下是网上摘取的解决办法,解决办法如下:1、先输入 git remote rm origin2、再输入 git remote add origin**************这样就不会报错了!第二
2020-06-28 18:06:48
48416
7
原创 android:screenOrientation="portrait" 一直警告报红
在AndroidManifest.xml中设置activity竖向,一般都是直接设置android:screenOrientation="portrait",升级gradle后这里会有警告,提示Expecting android:screenOrientation="unspecified",虽然app运行没问题但看着也很不爽。解决方法:在application标签里,加入tool:ignore="LockedOrientationActivity"这句话,manifest标签里引入toolxmlns:
2020-05-11 10:31:09
3764
原创 Unable to find method'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List' 构建错误解决办法
Unable to find method'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List'Possible causes for this unexpected error include:Gradle’sdependency cache may be corrupt (this sometime...
2019-10-21 16:20:52
281
原创 解决添加Butterknife8.8.1依赖后出错的问题
我们先依照如下方式配置ButterKnife:1.在Project的 build.gradle 中添加如下代码:classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'2.在app的 build.gradle 中添加如下代码:apply plugin: 'com.jakewharton.butterknife'(在顶部添...
2019-10-21 16:14:07
2110
原创 Android EventBus 的使用
1、EventBus 简介EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。1.1 三个角色Event:事件,它可以是任意类型,EventBus会根据事件类型进行全局的通知。 Subscri...
2019-08-21 15:37:15
178
原创 Android 绘制圆形颜色背景渐变 shape
<?xml version="1.0" encoding="utf-8"?><!-- 圆形边框 + 填充 --><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" android:useLevel="true"> ...
2019-08-09 16:28:48
4524
原创 android十大开源框架
1-1 课程导学第2章 Okhttp网络库深入解析和相关面试题分析本章主要先通过分析OKhttp的简单使用,对于OKhttp的调度器、拦截器、缓存策略、连接池等进行了相应的源码和原理分析,并对于socket、websocket、http缓存、多线程下载、文件下载、https等经典Android面试题进行分析。2-1 okhttp框架流程分析2-2 okhttp同步请求方法2-3...
2019-08-08 17:58:51
2700
原创 封装实用的Toast工具类
1)Toast底层使用handler机制,分别post一个nShow和一个mHide来控制Toast显示还是隐藏2)Toast的视图是通过WindowManager的addView来加载的3)先通过makeText()实例化出一个Toast,然后调用toast.Show()方法,这时并不会马上显示Toast,而是会实例化一个TN变量,然后通过service.enqueueToast()将其...
2019-08-06 17:45:49
235
原创 GitHub上制作自己的Library,直接implementation使用
平时做项目肯定用了很多别人的库,如果有一个自己的库,那逼格就高了。准备工作 建个module 2.选择Android Library,然后起个名字,然后finish3.把准备的代码贴到library中,然后上传github 这是我上传之后的代码https://github.com/zhangshangkun/GlideImageUtil-s4.发...
2019-08-06 16:50:22
1546
原创 android中的Intent和PendingIntent的区别
1、Intent和PendingIntent的区别intent英文意思是意图,pending表示即将发生或来临的事情。 Intent是立即使用的,而PendingIntent可以等到事件发生后触发,PendingIntent可以cancel Intent在程序结束后即终止,而PendingIntent在程序结束后依然有效 PendingIntent自带Context,而I...
2019-08-05 10:15:06
245
原创 Android自定义全局捕获异常并上传,实现实时收集APP崩溃crash信息
在APP上线后,可能会出现一些BUG导致了APP的闪退,用户体验就非常致命,我们一定要第一时间找到问题的所在1、我们需要自定义一个异常收集类(创建一个Thread.UncaughtExceptionHandler的继承类);2、替换掉APP本身的异常处理(在Thread.UncaughtExceptionHandler实现类中使用Thread.setDefaultUncaughtExcept...
2019-06-12 16:02:57
1202
原创 Dialog和PopupWindow的区别
最本质的区别就是:AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。这两种区别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背...
2019-02-20 16:52:49
601
原创 仿QQ空间之打造个性化可拉伸头部控件
1、自定义控件 1、这里引用一个xml文件做为listview的headerView, LayoutInflater. inflate()的时候,注意最后的root为null,而不是this,以防 addHeaderView时出问题。 2、监听overScrollBy(),下拉过度时,放大mImageView。 3、监听onSc...
2018-02-03 14:16:41
440
原创 Git——新手入门与上传项目到远程仓库GitHub
Git概述Git:是目前世界上最先进的分布式版本控制系统,一个开源式的分布式版本控制工具。简单浅显地来说(就我个人而言),就是一个全球程序员的代码仓库集中地,每个人都可以在这里拥有一个自己的小仓库(注册一个独立的账号就可以了),你的代码可以一件一件的保存在这里,也可以分享给全球的程序猿同类们,所以即使你在本地对自己的项目随意删改(哪怕它爆炸~-~)都是可以通过Git从GitHub上传回之前提交的代
2018-01-18 14:23:51
302
原创 Android AIDL(接口定义语言)简单理解和基本使用方法
一、概述 AIDL意思即Android Interface Definition Language,翻过来就是Android接口定义语言,是用于定义服务端和客户端通信接口的一种描述语言,可以拿来生产IPC代码,从某种意义上说AIDL其实就是一个模板,因为在使用过程中,实际起作用的并不是AIDL文件,而是据此生产的一个Interface的实例代码,AIDL其实是为了避免我们重复写代码而出
2018-01-17 16:55:27
3179
原创 Git 不需要重复输入账号和密码
linux下方法在~/下, touch创建文件 .git-credentials touch .git-credentials用vim编辑此文件 vim .git-credentials输入内容格式 https://username:password@github.comwindows下方法在终端下执行 git config --global credentia
2017-12-20 16:34:02
1312
原创 Android WebView用法和WebView加载提升网页速度
前言WebView是Android里的组件,下面将全面介绍WebView的常用用法。1.简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。2.作用·显示和渲染Web页面·直接使用html文件(网络上或本地asset
2017-11-25 12:04:12
31105
4
原创 Android解析XML的三种方式
XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器,下面,我将一一向大家详细介绍。1. SAX解析方式SAX(Simple API for XML)解析器是一种基于事件的解析器,事件驱动的流式解析方式是,
2017-11-20 14:50:48
470
原创 Android Studio工程引用第三方so文件
应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。jar包存放到工程的libs目录下。
2017-11-09 16:50:13
1930
原创 Android 加载PDF文件
今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下。用法很简单:1.在build.gradle里面添加依赖compile 'com.github.barteksc:android-pdf-viewer:2.8.0'2.然后就可以直接在layout里面使用了<com.github.barteksc.pdfviewer.P...
2017-11-03 16:22:53
1455
原创 将PHP和Redis关联,代码中可用
使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本关联PHP和Redis需要php_redis.dll和php_igbinary.dll文件。根据PHP版本号,编译器版本号等信息我们选择较新的php_redis-2.2.7-5.5-ts-vc11-x86.zip和php_igbinary-1.2.1-5.5-ts-vc11-x86.zip下载地址:
2017-10-13 15:33:35
492
原创 Android-Handler机制详解
1、handler是什么? handler是更新UI界面的机制,也是消息处理的机制,我们可以发送消息,也可以处理消息2、为什么要有Handler? Android在设计的时候,封装了一套消息创建、传递、处理机制,如果不遵循这样的机制就没办法更新UI信息,就会抛出异常。3、handler怎么用? 1、post(Ru
2017-09-14 11:36:23
340
原创 Android-activity的生命周期
一、初识Activity在日常应用中Activity是与用户交互的接口,它提供了一个用户完成相关操作的窗口。当我们在开发中创建Activity后,通过调用setContentView(View)方法来给该Activity指定一个布局界面,而这个界面就是提供给用户交互的接口。Android系统中是通过Activity栈的方式来管理Activity的,而Activity自身则是通过生命周期的方
2017-09-14 11:22:56
283
原创 Android自定义view之Measure
1、整个View树的绘图流程是在ViewRootImpl类的performTraversals()方法(这个方法巨长)开始的,该函数做的执行过程主要是根据之前设置的状态,判断是否重新计算视图大小(measure)、是否重新放置视图的位置(layout)、以及是否重绘 (draw),其核心也就是通过判断来选择顺序执行这三个方法中的哪个,如下:private void perfor
2017-06-13 16:12:52
505
原创 Android面试题
1、 Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和
2017-06-13 14:17:04
1199
原创 Android工程师常见面试题集答案
1、请解释下在单线程模型中Message,Handler,Message Queue,Looper之间的关系。拿主线程来说,主线程启动时会调用Looper.prepare()方法,会初始化一个Looper,放入Threadlocal中,接着调用Looper.loop()不断遍历Message Queue,Handler的创建依赖与当前线程中的Looper,如果当前线程没有Loope
2017-06-13 10:59:22
433
原创 Java中的经典算法之冒泡排序(Bubble Sort)
原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第2个和第3个数,将小数放前,大数放后。然后比较第3个数和第4个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。 举例说明:要排序数组:int[] arr={7,4,9,3,10,2}
2017-06-13 10:16:58
351
原创 Android6.0/7.0新特性
· 运行时权限系统6.0 现在Android把权限分为了敏感权限与非敏感权限,对于非敏感权限,开发者同样是在AndroidMainifest中进行权限申请,这 些权限会在android App安装的时候显示出来,与现在一样,而敏感权限,则会通过Dialog的方式在使用时弹出· Notification && Notification Menu
2017-06-10 15:08:59
511
原创 Retrofit用法详解
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求,其源码详见OkHttp Github。一、首先先来看一个完整Get请求是如何实现:1、创建业务请求接口,具体代码如下: public interface
2017-06-09 17:22:59
435
原创 Android 开发神器系列—调试程序不再完全依赖USB数据线
做为一个多年奋战在Android 应用开发一线的程序员来说,程序调试的苦是不言而喻的,在过去的很长一段时间里,我们如果要调试Android 应用只能通过USB数据线,一头连着手机,一头联着电脑,不敢让手机离开电脑半步。 曾经有一段时间,我总是担心天天这样高强度的调试别把手机的USB口给磨坏了。也许有朋友问了,那怎么不用模拟器呢?事实上,不是不想用,而是电脑上开个模似器可能需要半天
2017-05-18 17:12:06
1822
原创 android6.0程序在运行时申请权限
一、运行时权限的变化及特点对于6.0以下的权限及在安装的时候,根据权限声明产生一个权限列表,用户只有在同意之后才能完成app的安装,造成了我们想要使用某个app,就要默默忍受其一些不必要的权限(比如是个app都要访问通讯录、短信等)。而在6.0以后,我们可以直接安装,当app需要我们授予不恰当的权限的时候,我们可以予以拒绝(比如:单机的象棋对战,请求访问任何权限,我都是不同意的)。当然你也
2017-05-18 14:38:16
443
原创 Picasso的使用
一、Android平台图片加载库现状 目前社区主流的图片加载库有Universal Image Loader,Picasso,Volley,Fresco,Glide.二、Picasso介绍 Picasso是Square公司开源的一个Android图形缓存库,Picasso实现了图片的异步加载,并解决了Android中加载图片时常见的一些问题,它有以下特点:· 在Adap
2017-05-16 11:07:33
309
原创 Android Butterknife 使用
ButterKnife是AndroidStudio中一个应用非常广的插件,有着艺术般的体验,深受广大开发者的喜爱,只需要3步即可配置成功,想要抛弃findViewById请跟我来。1、首先先要下载ButterKnife2、安装好插件之后,在project中的build.gradle中的dependencies中添加: classpath ‘com.neenbedank
2017-05-11 10:04:57
295
Android首次启动引导页和启动页
2017-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人