自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 Plugin with id 'com.novoda.bintray-release' not found的解决方法

我们一般在在github上下载下来的代码,有时候会提示Plugin with id ‘com.novoda.bintray-release’ not found的错误,这个怎么解决呢,今天找了解决方法记录下dependencies { classpath 'com.android.tools.build:gradle:1.5.0' //添加下面这行代码就OK了

2017-11-10 19:41:27 475

转载 AS报Failed to resolve: junit:junit:4.12错误正确的解决方法

其实这个错误并非掩耳盗铃般的把testCompile 'junit:junit:4.12'注释或删除掉,在stackoverflow中有明确的原由和解决方法,只需在Application的gradle文件中添加maven { url 'http://repo1.maven.org/maven2' }问题解决。添加位置见下图allprojects { reposi

2017-11-10 19:40:23 922

原创 完美解决android软键盘监听

最近在做应用性能调优,发现在一个包含有输入框的Activity中,当软键盘弹出的时候,如果直接finish掉此Activity,那么在返回到上一个Activity时,界面的渲染会由于软键盘没有及时的收起而出现卡顿的情况。很不友好。于是,本着geek的精神,做就做到极致,就尝试着对这一块做优化。借助网上一些知识的分享,同时结合自己的理解,最终应用到项目中。直接上代码。。首先,在m

2017-10-24 16:29:49 964

转载 android 输入框EditText禁止输入Emoji表情符

通过添加EditText的addTextChangedListener()监听来过滤Emoji表情:onTextChanged()beforeTextChanged()使用方法在开发中可能多处会用到过滤Emoji表情符,为了方便使用自定义EditText来实现:package com.liujy.ui.wiget;import android.conte

2017-10-24 15:46:47 1288

原创 使用Gson转化实体类时的混淆配置

在 Andorid 项目遇到了一个比较诡异而隐蔽的 bug: 使用网络请求获取一个数据,在测试环境中表现一切正常,而在正式包中这个获取的数据却一直为 null。 在测试环境中数据正常,说明我写的代码没问题,但是为啥在正式环境中数据就空了呢? 我从两个方面进行了分析:这个获取数据的过程分为两步。第一步是网络请求获得 JSON 数据,第二步是把获得的 JSON 数据使用 Gson 转换成

2017-10-23 09:46:39 2471

原创 Android CountDownTimer倒计时器的使用

在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写。现在发现了这个类,大家共享一下:在一个TextView不断显示剩下的时间,代码如下:[java] view plain copyprivate TextView vertifyView;      private Coun

2017-08-02 15:19:41 212

原创 fragment重叠问题解决方案

其中一种比较方便的方案,请看一位大神写的:9行代码让你App内的Fragment对重叠说再见,里面还有从源码的角度分析重叠的原因,还给出了解决方案,我先膜拜一下!!这里我提供一种很方便的解决方案,就是通过删除子View去实现。我通过在Basefragment的onCreateView里面删除子View去实现。我的项目的主activity是用replace来加入fragment的。@Over

2017-08-01 10:04:09 335

转载 深入理解findViewById原理

转自:http://blog.csdn.net/bless2015/article/details/46618639用的太多了,但是不知道原理。Xutils里面舍弃了findViewById改用注解,当时也很不理解。一步步了解后,发现,相比注解的方式加载控件,findViewById的效率是很低的。注解+反射加载实例的过程看上去效率更高。从activity的onCr

2017-08-01 10:03:34 1084

原创 Android Studio 提示帮助文档 一直显示:fetching documentation

1 如果没有下载document for android sdk,先从sdk manager 中下载对应的document    2 已经有了document,但是还是一直fetching documentation,可能是android studio配置文件没有配置好,此处所指的配置文件在:user/.AndroidStudio/config/options下的 jdk.table.xml文

2017-07-27 17:15:11 475

转载 浅析ANDROID ACTIVITY 堆栈模式

1.Task是Activity的堆栈众所周知,Android通过堆栈管理Activity。默认情况下一个程序有一个task(android:taskAffinity=package name),其中的task就是activity堆栈。当然也可以使用 android:taskAffinity="string"(string 格式要像包名那样string.string)添加一个新的task。做

2017-07-19 22:27:13 579

转载 高仿淘宝购物车分分钟让你集成

转自:http://blog.csdn.net/u013278099/article/details/50822074前言做商城类电商app购物车确实一直是一个难点,为什么难呢?主要原因呢是他里面的逻辑复杂,然后 百度的资源好像都不太理想,好多就是一个简单的listView来实现根本就达不到开发的需求。然后 一般都涉及到了店铺概念,就不再是一个简单listVie

2017-07-14 22:03:39 574

转载 深入理解Java中为什么内部类可以访问外部类的成员

转自:http://blog.csdn.net/zhangjg_blog/article/details/20000769内部类简介虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰。内部类就是一个经常让初学者感到迷惑的特性。 即使现在我自认为Java学的不错了, 但是依然不是很清楚。其中一个疑惑就是为什么内部

2017-07-13 22:31:51 244

原创 面向对象三大基本特性,五大基本原则

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态  所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有

2017-07-12 22:53:42 190

转载 Android开发——LinearLayout和RelativeLayout的性能对比

转:http://blog.csdn.net/seu_calvin/article/details/530476820. 前言我们都知道,新建一个Android项目SDK会为我们自动生成的avtivity_main.xml布局文件,然后它的根节点默认是RelativeLayout,在我们的理解里貌似LinearLayout的性能是要比RelativeLayout更优的,比如作为

2017-07-12 22:48:31 443

原创 安卓事件分发机制简解

1. 为什么需要了解安卓事件机制在开发过程中,我们免不了用到组合控件,这时候事件分发机制就显示比较重要了。 如果你不了解,就可能出现父容器无法响应事件、子控件事件和父控件有冲突等问题。 在了解分发机制之前,你需要知道安卓控件分类。2. 安卓控件分类ActivityActivity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。

2017-07-12 22:36:02 176

转载 从零开始的RxJava2.0教程(四)在安卓中的应用

1. 前言在第1 2 3篇中,我介绍了RxJava 2.0的基本用法。这一篇将介绍在安卓中的基本用法。 附上本系列教程的链接。 从零开始的RxJava2.0教程(一)基础 从零开始的RxJava2.0教程(二)操作符 从零开始的RxJava2.0教程(三)响应式的好处 从零开始的RxJava2.0教程(四)在安卓中的应用2. RxAndroidR

2017-07-12 22:27:27 222

转载 从零开始的RxJava2.0教程(三)响应式的好处

转载至 http://blog.csdn.net/qq_35064774/article/details/53065360 1. 前言在第一篇中,我介绍了RxJava的基础知识。第二篇中,我向你展示了操作符的强大之处。这一篇,我将向你介绍响应式的优点。 2. 错误处理到目前为止,我都没怎么介绍 onComplete 和 onError 方法。这两个方法用

2017-07-12 22:26:15 212

转载 从零开始的RxJava2.0教程(二)操作符

转载至 http://blog.csdn.net/qq_35064774/article/details/53057359 1. 前言在上一篇中,我介绍了RxJava 2.0的一些基础知识,同时也介绍了map()操作符。这篇blog将介绍许多RxJava中的操作符,RxJava的强大性就来自于它所定义的操作符。 首先先看一个例子: 2. 准备工作假设

2017-07-12 22:25:04 221

转载 从零开始的RxJava2.0教程(一)基础

转载至 http://blog.csdn.net/qq_35064774/article/details/53057332 1. 为什么写这篇文章RxJava这些年越来越流行,而上月末(2016.10.29)发布了2.0正式版,但网上大部分关于RxJava的教程都是1.x的。关于2.0的教程基本是介绍1.x和2.x的区别,对于RxJava的老用户来说,自然看看和1.x的区别

2017-07-12 22:23:16 240

转载 安卓网络数据缓存策略

转载至 http://blog.csdn.net/qq_35064774/article/details/53449779 前言对于大部分 App 来说,网络请求都是必不可少的,而且不少App是以数据为主。如果不做数据缓存,在网络慢的情况下,会降低用户体验度。仿佛有一段时间没写博客了,吓得我都祭出了神图。 Json/Xml数据缓存策略对于文本类数

2017-07-12 22:20:11 421

转载 RxJava2.0在安卓中的二级缓存策略

转载至 http://blog.csdn.net/qq_35064774/article/details/53449795 前言在上一篇 安卓网络数据缓存策略 中,介绍了安卓中数据的缓存策略,这篇将用RxJava2.0 实现 Json/Xml 数据的二级缓存。 对于 RxJava2.0 不了解的,可以看一下这篇入门教程 从零开始的RxJava2.0教程1-4 。

2017-07-12 22:16:08 218

转载 Android:客户端和服务器之间传输数据加密

Android客户端与服务器进行数据传输时,一般会涉及到两类数据的加密情况,一类是只有创建者才能知道的数据,比如密码;另一类是其他比较重要的,但是可以逆向解密的数据。       第一类:密码类的数据,为了让用户放心注册,密码类的数据的加密一般都是经过双重加密的,第一重加密使用不可逆的MD5算法加密,第二重加密是可逆的加密,常见的可逆加密有对称加密和非对称加密。上述不可逆的意思就是一旦加密

2017-07-12 21:44:45 1930

原创 android 自定义View在弹出的软键盘之上,以及测量软键盘高度和监听软键盘状态

项目中需要做评论功能,在软键盘弹出后在其上方弹出自定义的view,看下效果:         原理很简单,软键盘上方就是一个自定义的PopuWindow,在弹出PopuWindow的代码中激活了软键盘,随即PopuWindow就被软键盘顶到了其上方,里面还给PopuWindow加入了显示 和消失的动画,另外实现了对软键盘显示和隐藏状态的监听,以及对其高度的测量,需要做些逻辑处理的话可以

2017-07-10 11:23:31 2628

原创 用RelativeLayout 实现简单的九宫格布局

//RelativeLayout是item中内嵌的布局 RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.activity_main); //获取屏幕宽度 int screenWidth = getResources().getDisplayMetrics().widthPixels; //每行

2017-07-07 17:37:45 2439

原创 OnGlobalLayoutListener获得一个视图的高度

我们知道在oncreate中View.getWidth和View.getHeight无法获得一个view的高度和宽度,这是因为View组件布局要在onResume回调后完成。所以现在需要使用getViewTreeObserver().addOnGlobalLayoutListener()来获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。OnGlobalLayoutListen

2017-07-06 14:16:37 369

原创 Intent选择器,开系统图库选择图片,开相机拍照

//开启系统图库 Intent intent1 = new Intent(Intent.ACTION_PICK); intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); //开相机 Intent intent2 = new I

2017-07-06 10:39:26 1877

原创 打造简单的BaseActivity

public abstract class BaseActivity extends AppCompatActivity { TextView titleTV; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInst

2017-07-05 16:50:35 210

转载 getDrawable过时的替代方法

我在刚接触Android的时候,用getDrawable()方法好像就过时了,只不过当时没在意,没报错就用,不过这样毕竟还是不好的。现象:网友推荐:谷歌查询结果:

2017-07-01 21:08:16 251

原创 ScrollView嵌套ListView一种简单解决方案

项目做多了之后,会发现其实 ScrollView嵌套ListVew或者GridView等很常用,但是你也会发现各种奇怪问题产生。根据个人经验现在列出常见问题以及代码最少最简单的解决方法。问题一 : 嵌套在 ScrollView的 ListVew数据显示不全,我遇到的是最多只显示两条已有的数据。解决办法:重写 ListVew或者 GridView,网上还有很多若干解决办法,但是都不好

2017-06-27 10:22:37 236

原创 真正的无限轮播

一、简要介绍无限轮播,主要的原理思想:一共轮播四张图片,那么需要在首尾再分别加上一张过渡图,让用户几乎感觉不到切换,这就是无限轮播。图片数组的长度就变成了4+2=6的长度。一般来说,第0位加入的是要轮播的图片的最后一张,第5位加入的是要轮播图片的第一张。最终的图片数组(长度为6):{ res04 , res01 , res02 , res03 , res04 , res01 }。注意点

2017-06-27 08:55:53 335

原创 百度地图使用模拟器报错java.lang.IllegalArgumentException: No config chosen

在使用百度地图开发时,使用手机没事儿,但是使用到模拟器就开始报错:java.lang.IllegalArgumentException: No config chosen原因分析:在后台打印的错误信息是:AndroidRuntime: FATAL EXCEPTION: GLThread 97                                         

2017-06-15 22:53:11 501 1

原创 Android Studio 获取发布版和测试版证书SHA1的两种方式

第一种方式利用Android Studio获取:1)项目界面右侧,如图:,点击“Gradle”2)之后找到如下图中红框中的signingReport选项双击(如果没有出现应用程序名称,可点击刷新按钮,)3)在信息框中将会显示开发版和发布版的安全码(MD5和SHA1),其中默认的版本是debug,如下图。说明:如果想要获取自定义的keystore的安全码,则需给项目进行key

2017-06-15 21:17:11 433

转载 转载的开源干货

android相关第三方库awesome-android-ui:大量 Android UI/UX 库(大城小黄)recyclerview-animators:一个关于RecyclerView items的动画库;一个简单的RecyclerView items动画库;一个item可拖曳效果的RecyclerViewvector-compat:一个支持VectorDrawable的

2017-06-09 08:50:57 1288

转载 Android最牛的开源收集

这是一个基本把github上所有优秀安卓的开源代码整理了,下面是都是转自https://github.com/Trinea/android-open-project,都是一些牛人,很有开源精神的达人做的,学习时,同时力推荐http://codekk.com/open-source-project-analysis;这个网站把许多开源项目进行了校验,还有源码分析说明,说的很详细,也是学习的好资源,这

2017-06-08 20:59:08 6927

原创 ImageLoader学习笔记

/** * Created by Administrator on 2017/6/5 0005. */public class MyImageLoader { /** * 如果我们需要加载一个音乐的专辑图片, * 可以先从内存缓存中去进行该专辑 * 图片的查找,如果内存缓存中没有的话, * 再从文件缓存中查找,如果文件缓存中也 *

2017-06-05 17:25:29 187

原创 获取时间

/** * 计算通话时间和当前系统时间的天数差 * * @return 天数差 */ public static int daydiff(long stamp) { int diff = 0; //获得当前系统时间的日历对象 Calendar calendar1 = Ca

2017-05-22 15:00:52 182

原创 AsyncTask的简单例子

1.AsyncTask 概述?AsyncTask对象实现了异步逻辑的封装,是对消息模型的简化实现(底层也是要发消息的,也是要通过消息的传递实现异步逻辑的处理)。2.AsyncTask 应用场景?1)进程内部多线程间的通讯2)多个线程需要重复使用实现消息传递。3.AsyncTask 应用的实现?1)编写AsyncTask子类,重写相关方法.2)启动异步任务,执

2017-05-03 10:09:37 415

原创 Android 进程、线程

概述:线程是CPU独立运行和独立调度的基本单位(可以理解为一个进程中执行的代码片段),进程是资源分配的基本单位(进程是一块包含了某些资源的内存区域,通俗说,就是运行中的程序)。进程是线程的容器,真正完成代码执行的是线程,而进程则作为线程的执行环境。一个程序至少包含一个进程,一个进程至少包含一个线程,一个进程中的多个线程共享当前进程所拥有的资源!!!1.线程是什么?线程是进程中的一个顺序的执

2017-04-28 09:33:41 219

原创 ActionBar、Menu笔记

一、Menu相关1.Menu是什么?1)不是view2)是一个可以呈现view的菜单对象2.Menu应用场景?以菜单形式实现与用户的交互。1)结合toolbar一起使用2)结合NavigationView一起使用3.Menu的应用类型?1)OptionMenu2)ContextMenu3)SubMenu(子菜单)4)............4

2017-04-27 17:04:00 242

原创 Canvas的save和restore个人见解

在创建新的控件或修改现有的控件时,我们都会涉及到重写控件Draw类的方法。例如,在onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。在onDraw方法里,我们经常会看到调用save和restore方法,它们到底是干什么用的呢?❑ save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。❑ restor

2017-04-25 19:27:21 495

空空如也

空空如也

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

TA关注的人

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