自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (19)
  • 收藏
  • 关注

原创 Android实现本地图片选择及预览缩放效果仿春雨医生

在做项目时经常会遇到选择本地图片的需求,以前都是懒得写直接调用系统方法来选择图片,但是这样并不能实现多选效果,最近又遇到了,所以还是写一个demo好了,以后也方便使用。还是首先来看看效果显示的图片使用RecyclerView实现的,利用Glide来加载;下面弹出的图片文件夹效果是采用BottomSheetDialog实现,这里比采用PopupWindow更方便,弹出显示的左边图片是这个

2017-03-03 09:03:17 4471 1

原创 ItemDecoration详解以及用ItemDecoration实现按字母排序列表

首先看看实现的效果1可以看出要实现上面效果,有三个步骤:1.汉字转化为拼音,并且根据首字母排序2.用ItemDecoration实现字母行的显示3.自定义实现右侧的按字母导航栏当然重点讲讲ItemDecoration的实现。都知道RecyclerView本身都没有分割线,需要分割线都是在item中画一条线或者使用ItemDecoration来实现分割线。在Recyc

2016-12-19 09:03:13 6524

原创 自定义LayoutManager的详解及其使用

RecyclerView不断的普及,越来越多的人使用来代替传统的ListView,GridView等,为了跟进时代也要不断的学习RecyclerView的相关知识,下面就来了解一下RecyclerView的LayoutManger。RecyclerRecyclerView内部有一个Recycler,顾名思义它就是一个回收的工具,当定义LayoutManager时,它可以访问到一个Recyc

2016-10-20 09:31:09 9308 1

原创 NestedScrolling机制

简介NestedScrolling机制能够让父View和子View在滚动式进行配合,其基本流程如下:当子view开始滚动之前,可以通知父View,让其先于自己进行滚动;子View自己进行滚动;子view滚动之后,还可以通知父view继续滚动嵌套滑动的基本原理是在子控件接收到滑动一段距离的请求时, 先询问父控件是否要滑动, 如果父控件滑动了父控件就通知子控件它消耗了一部分滑动距离, 子...

2018-12-02 15:29:42 609

原创 Android Studio Gradle配置详解

Gradle文件体系Android工程通过gradle文件管理各项配置,gradle文件利用DSL(Domain Specific Language)语言描述配置, 并使用Groovy语言处理编译逻辑。一个典型的Android工程结构如下: 在这里gradle文件分布在几个不同的层级,Project层级以及Module层级。 Project层级settings.gradl...

2018-07-24 23:06:16 9086

原创 Kotlin笔记-属性

定义常量与变量类中声明的属性,一定要初始化,否则会编译错误。除非你对属性使用了abstract进行修饰。 var name: String = "" //abstract var size : Int//必须在抽象类中使用 var boss = "L"可变变量定义:var 关键字 var <标识符> : <类型> = ...

2018-07-09 23:12:44 288

原创 Kotlin笔记-类

类修饰符// 属性修饰符annotation //注解类abstract //抽象类final //类不可继承,默认属性enum //枚举类open //类可继承,类默认是final的// 访问权限修饰符private //仅在同一个文件中可见protected //同一个文件中或子类可见public //所有调用的地方都可见in...

2018-07-09 23:12:06 201

原创 判断RecyclerView滑动到底部和顶部

方法1mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { su...

2018-07-07 11:33:11 19214 8

原创 ConstraintLayout的完全解析

ConstraintLayout也就是约束布局,通过约束来实现布局,感觉有点类似与RelatedLayout,但是比之更加的强大,使用ConstraintLayout可以减少布局的嵌套层数,尽量的扁平化。传统的布局我们都是采用xml来操作,但是使用ConstraintLayout可以实现可视化的拖动来操作,我使用后某些时候拖动也不能完全准确,所以我认为可以采用拖动加xml方式来布局。 本...

2018-05-10 00:34:30 4432

原创 app安装报错FileUriExposedException

原因从Android 7.0开始,不再允许在app中把file:// Uri暴露给其他app,否则应用会抛出FileUriExposedException。原因在于,Google认为使用file:// Uri存在一定的风险。比如,文件是私有的,其他app无法访问该文件,或者其他app没有申请READ_EXTERNAL_STORAGE运行时权限。解决方案是,使用FileProvider生成con...

2018-04-10 15:54:03 471

转载 给初学者的RxJava2.0教程(四)

前言在上一节中, 我们提到了Flowable 和Backpressure背压, 本来这一节的确是想讲这两个东西的,可是写到一半感觉还是差点火候,感觉时机未到, 因此,这里先来做个准备工作, 先带大家学习zip这个操作符, 这个操作符也是比较牛逼的东西了, 涉及到的东西也比较多, 主要是一些细节上的东西太多, 通过学习这个操作符,可以为我们下一节的Backpressure 做个铺垫.正题

2018-01-22 14:08:45 208

转载 Retrofit2完全教程

转载地址本文注目录:Retrofit入门 Retrofit注解详解Gson与ConverterRxJava与CallAdapter自定义Converter自定义CallAdapter其它说明前言接口列表: 地址 请求方法 参数 说明 /blog GET page={page},sort=asc或desc 分页获

2018-01-22 14:06:55 378

转载 给初学者的RxJava2.0教程(三)

前言上一节讲解了线程调度, 并且举了两个实际中的例子, 其中有一个登录的例子, 不知大家有没有想过这么一个问题, 如果是一个新用户, 必须先注册, 等注册成功之后再自动登录该怎么做呢.很明显, 这是一个嵌套的网络请求, 首先需要去请求注册, 待注册成功回调了再去请求登录的接口.我们当然可以想当然的写成这样: private void login() { api.login(ne

2017-12-21 17:44:10 206

转载 给初学者的RxJava2.0教程(二)

前言上一节教程讲解了最基本的RxJava2的使用, 在本节中, 我们将学习RxJava强大的线程控制.正题还是以之前的例子, 两根水管: 正常情况下, 上游和下游是工作在同一个线程中的, 也就是说上游在哪个线程发事件, 下游就在哪个线程接收事件.怎么去理解呢, 以Android为例, 一个Activity的所有动作默认都是在主线程中运行的, 比如我们在onCreate中打出当前线程的名字:

2017-12-21 17:37:08 231

转载 给初学者的RxJava2.0教程(一)

前言上个月RxJava2正式版发布了,但目前国内的资料还比较少,以前使用过RxJava1只需要看看更新文档就知道怎么使用了,但还有一些以前没用过RxJava的朋友可能就不知道怎么办了,不知道该看RxJava1还是直接跳到RxJava2。所以写下这个教程, 帮助那些没有用过RxJava的朋友入门。 注:如果你觉得写得不好,请直接批评指出。 我先回答这个问题:学习RxJava2需要先学习RxJ

2017-12-21 17:35:49 283

原创 Canvas详解

根据文档说明我们知道想要draw something有四个基本的要素: - 一个保存像素的Bitmap - 一个Canvas进行Bitmap的绘制 - 绘制的东西 - 画笔Paint获取Canvas获取Canvas实例我们一般都使用两种方式,一种是重写View的onDraw方法获得Canvas,另一种就是自己创建一个Canvas对象,创建Canvas对象我们需要一个Bitmap对象 Bitm

2017-12-20 14:55:02 855

原创 面向对象的六大设计原则

单一职责原则单一职责原则的英文名称是Single Responsibility Principle,缩写是SRP。SRP定义是:就一个类而言,应该仅有一个引起它变化的原因。简单来说就是,一个类中应该是一组相关性很高的函数、数据的封装。。。

2017-06-22 15:21:21 452

转载 MaterialDesign之SearchView全面解锁

一、简述SearchView是v7包中的一个兼容性控件,它可以单独使用,也可以配合menu+toolbar一起使用。本文将使用第二种方式,对SearchView进行探索。最后将通过代码实战,实现 “仿网易云音乐本地音乐搜索” 效果,带你全面解锁SearchView的UI定制及查询功能的实现。二、常规使用*本文重点是SearchView,所以对Toolbar的使用及注意事项在本文中将...

2017-06-16 09:39:13 2528

原创 Github远程仓库的操作同步

把本地项目上传到Github这里的操作前提是按照之前博客把环境SSH都配置好了的。 1. 首先在Github创建存放本地项目的仓库 怎么创建仓库大家肯定已经知道了,之前博客也有提过。 2.

2017-05-24 09:06:59 621

原创 Android Shader渲染以及实现水波纹霓虹文字雷达等效果

Shader概述Shader是绘图过程中的着色器,实现绘制各种不同的效果,Shader有以下五个子类: - BitmapShader用于Bitmap图片的渲染 - ComposeShader用于混合渲染 - LinearGradient用于线性渲染 - RadialGradient用于环形渲染 - SweepGradient用于梯度渲染 Shader的三种模式TileMod

2017-05-22 09:08:35 3606 2

原创 Android 焦点Focus问题的总结

clickable=”true”所有的获取焦点,都要有一个前提,那就是该控件必须设置android:clickable=”true”。focusable和focusableInTouchMode的区别focusable 针对在键盘下操作的情况,比如非触屏手机或者TV,如果设置为true,则键盘上下左右选中,焦点会随之移动。focusableInTouchMode 显然是针对触屏情况下的,也就

2017-05-17 15:23:08 12078

原创 Android Socket通信详解及聊天程序示例

网络编程的一些介绍目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。 TCP是Tranfer Control Protocol的 简

2017-04-06 09:02:34 20583 29

转载 Android应用开发性能优化完全分析

转载自:http://blog.csdn.net/yanbober/article/details/48394201#t271. 背景其实有点不想写这篇文章的,但是又想写,有些矛盾。不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结、我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只给出啥啥啥不能用,啥啥啥该咋用等,却很少有较为系统的进行真正性能案例分析的,

2017-04-01 10:51:53 606

原创 Android Studio lint的使用

Android Lint的使用这个工具可以有效的给APP瘦身,可以检测一些你的代码中一些不合理的地方,检测出一些无用的资源等找到Analyze下面的Inspect Code 选择你要检测的地方,可以选择整个项目、某个Module又或者某个具体的文件,这里选择Whole Project 找到Android Lint 下的Performance,可能不同的版本位置会不一样。

2017-03-31 11:14:06 342

原创 从0开始学Github(二)之Git的常用指令

Git的常用命令首先在命令行里面输入git,会出现下面的提示表示git安装成功了 首先在E盘下的MyGit文件夹下面新建一个test,然后cd到这个test文件夹下面。git init当前的test文件夹下面不是一个Git仓库,调用这个命令来初始化为git仓库。 git status这个命令是用来查看状态的,没事可以调用试试查看当前的状态。 g

2017-03-30 09:04:37 699

原创 Android性能优化之渲染优化

16ms关于Android的渲染机制是需要每隔16ms重新绘制一次Activity,也就是说需要在16ms内完成刷新屏幕的所有逻辑操作。Android的卡顿一般都是由于渲染机制造成的。16ms相当于60fps,人眼与大脑之间的协作无法感知超过60fps的画面更新,电影使用的一般都是24fps,这已经能够满足观影的需求,所以如果超过60fps是完全没有必要的了,人眼也无法识别。Android

2017-03-29 09:05:55 735

原创 效率提高数倍的Android Studio快捷键收集

注释代码(//)Ctrl + /注释代码(/**/)Ctrl + Alt + /格式化代码Ctrl + Alt + L清除无效包引用Alt + Ctrl + O查找Ctrl + F全局查找Ctrl+Shift+F

2017-03-24 11:45:18 782

原创 从0开始学Github(一)之简介及安装配置

关于Github和GitGithub可以说是程序员必备的技能, GitHub 是一家公司,位于旧金山地址:https://github.com/ ,主要提供基于git的版本托管服务。一经上线,它的发展速度惊为天人,截止目前,GitHub 已经发展成全球最大的开(同)源(性)社区。 Git 是一款免费、开源的分布式版本控制系统,他是著名的 Linux 发明者 Linus Torvalds 开发

2017-03-24 09:48:04 610

原创 Android Stuido下修改包名(亲测有效!)

1. 首先切换到package下面2. 找到要修改的包名,如图所示进行重命名 3. 然后找到工程下面的build.gradle,修改其中的applicationId为你所需要的包名4. 修改完成后clean、rebuild工程。

2017-03-22 10:14:55 658

原创 Volley源码完全解析

上一篇看了Volley的使用方法,但是我们要知其然还要知其所以然,所以来看看源码究竟是怎么样实现的,下面是Volley的工作流程图首先可以看到蓝色代表主线程,绿色代表缓存线程,橙色代表网络线程。从左上角开始看,首先是把请求按顺序加入到缓存队列中,然后把它从缓存线程移出,如果这时有相应的缓存结果就取出缓存交给主线程处理;如果没有缓存那么就交由网络线程,发出HTTP请求获得相应结果写入缓存

2017-03-08 09:04:31 595

原创 Android 中常用ADB命令介绍

ADB(Android Debug Bridge),是Android SDK中的一个工具, 它是在Android sdk/platform-tools 文件夹下的,使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。    ADB主要功能有:    1、在Android设备上运行Shell(命令行)    2、管理模拟器或设备的端口映射    3、在

2017-03-01 09:19:03 1098

原创 Android Studio中一些超实用的插件

插件的设置是在Settings的Plugins里面,如下图所示可以从三个渠道安装插件,下面就看看几个常用的插件。   Android ButterKnife Zelezny这个插件可以从Activity/Fragment/Adapter的xml文件中生成注解,配合ButterKnife使用十分方便,省去了一群findViewById,同时可以生成点击事件。 Se

2017-02-28 09:13:06 1786

原创 Android Studio的一些常用配置

界面设置默认的 Android Studio为灰色界面,可以选择使用炫酷的黑色主题。File-->Settings(快捷键是Ctrl+Alt+S),然后选择Appearance可以设置界面,如下图所示: 这里主题选择Darcula就是黑色的风格,当然这里还有一些其他的设置可以看看。  字体设置系统字体设置,还是刚才那个界面  编程字体设置 S

2017-02-24 09:10:30 640

原创 Android 正则表达式的使用

匹配验证-验证Email是否正确public static void main(String[] args) { // 要验证的字符串 String str = "[email protected]"; // 邮箱验证规则 String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*

2017-02-21 09:15:48 8784

转载 Android中一些实用的Tips

转载:https://github.com/jiang111/awesome-android-tips值得收藏的AS插件 ->_->:https://github.com/jiang111/awesome-androidstudio-plugins 这里收集了大家常用的一些Android代码,持续更新中,内容来自自己的平时积累和网络上看到的文章,部分原文地址在最下方。如有错

2017-02-16 11:49:06 1587

转载 Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传

在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可用于生成缩略图。两种方法都实装在了我的项目中,结果却发现在质量压缩的模块中,本来1.9M的图片压缩后反而变成3M多了,很是奇怪,再做了进一步调查终于知道

2017-02-16 09:09:01 2900

转载 android中xml tools属性详解

第一部分安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果。但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了text。因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性123

2017-02-16 09:08:46 280

原创 Android Studio获取sha1和md5的方法

在注册一些三方平台的时候经常会用到sha1,在此记录一下1.在Android Studio最下面找到Terminal点击2.切换到C盘,cd到Users\Administrator\.android文件夹下面3.输入指令keytool -list -v -keystore debug.keystore4.输入密钥库口令android,这里输入是看不见的如下图所示

2017-02-07 14:07:06 11997 2

原创 HTTP协议的详解

Http协议简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议的主要特点可概括如下:    1.支持客户/服务器模式。    2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST

2017-01-20 15:09:29 547

原创 使用MAT工具分析性能

MAT的全称是Eclipse Memory Analyzer,是一款强大的内存泄漏分析工具,不需要安装解压之后直接使用就可以了,只需要把hprof文件导入进去就可以使用

2017-01-19 10:20:49 998

Shader实现多种效果

用Shader实现水波纹,霓虹文字,雷达等效果

2017-05-19

Volley框架

Volley的源码,可作为library导入到项目中

2017-03-07

Android自定义选择相册图片

仿春雨医生实现的一个选择本地图片的效果,支持缩放、预览效果

2017-03-02

用RecyclerView实现字母排序

通过RecyclerView的ItemDecoration实现字母排序效果

2016-11-28

Dagger具体使用

Dagger2具体使用实例,各种注解的运用,博客中也有介绍

2016-11-04

Material Design的各种效果

通过代码实现Material Design各种效果,各个控件的具体使用,包括自定义的Behavior

2016-10-25

自定义LayoutManager

采用自定义LayoutManager实现的效果,让你充分学会使用,随心所欲做自己的效果

2016-10-19

Android滑动冲突

提供了解决Android中滑动冲突的方法

2016-09-05

用Scroller实现ListView侧滑菜单

关于Scroller的使用,实现动画显示排序效果,还有ListView的侧滑菜单

2016-09-01

Android动画

包括ObjectAnimator、ValueAnimator、LayoutTransition、LayoutAnimation的使用,具体使用解析可以看我写的文章

2016-08-31

MVP模式demo

Android mvp模式的实际运用demo

2016-08-23

eventBus 3.0.0的jar包

EventBus 3.0.0Jar包

2016-08-06

EventBus使用例子

EventBus的使用Demo

2016-08-06

FragmentTabhost嵌套ViewPager,避免重复加载

FragmentTabhost实现三个Fragment,其中一个Fragment中又有三个Fragment,用ViewPager实现,设置缓存三个fragment

2016-05-18

各种Dialog,DialogFragment总结

各种类型的Dialog的总结,单选,多选,自定义View等,以及对DialogFragment的使用

2016-01-14

不规则剪切图片

通过网络URL获得图片转化为bitmap,自定义一个ImageView把图片进行自由剪切效果

2015-11-26

Android 百度地图跟随定位

运用百度地图api实现简单的地图功能,定位到你当前的位置显示,并跟随移动, 只需要改变manifest里面的key和对应的包名就可以使用。

2015-10-31

STM32开发板的多功能电子钟设计

STM32开发板的多功能电子钟设计

2015-04-04

空空如也

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

TA关注的人

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