- 博客(90)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 程序员必备的那些Chrome插件
程序员必备的那些Chrome插件原文地址:https://github.com/jiang111/chrome-plugin-recommand收集大家常用的一些Android代码,看这里:https://github.com/jiang111/awesome-android-tips/blob/master/README.md收集Android studio 常用的插件,请看这里:https://
2016-05-11 09:24:49
21536
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 如何为Recyclerview写一个通用的adapter
如何写一个通用的RecyclerView.adapter项目源码地址:https://github.com/jiang111/RecyclerViewAdapter欢迎star和fork随着需求的不断修改,在项目中越来越流行使用recyclerview。 那么如何构建出一个通用的adapter来提高我们的快速开发能力。 下面我们就来看看如何构建出一个完善的baseadapter。1.分析想要构建
2015-12-03 13:43:56
1799
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 RxJava系列之二 变换类操作符详解1
1.回顾上一篇文章我们主要介绍了RxJava , RxJava 的Observables和 RxJava的just操作符。以及RxJava一些常用的操作。 没看过的抓紧点我去看吧。 其实RxJava有很多的操作符, 而我们学过的just只是创建类操作符的其中一种。以后我会陆续介绍其他的创建类操作符。文章代码地址:https://github.com/jiang111/RxJavaDemo
2015-08-24 16:07:54
2105
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 RxJava系列之一 初识Rxjava
1.简介基础知识响应式代码的基本组成部分是Observables和Subscribers(事实上Observer才是最小的构建块,但实践中使用最多的是Subscriber,因为Subscriber才是和Observables的对应的。)。 Observable发送消息,而Subscriber则用于消费消息。消息的发送是有固定模式的。Observable可以发送任意数量的消息(包括空消息), 当消
2015-08-11 22:28:17
1557
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android TraceView 最权威的性能分析工具
TraceView是什么Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。Traceview的作用查看跟踪代码的执行时间,分析哪些是耗时操作 可以用于跟踪方法的调用,尤其是Android Framework层的方法调用关系如何使用TraceView使用TraceView主要有两种方式:最简单的方式就
2015-06-18 09:57:54
969
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 android中的动画全解析
Android为我们提供了2中动画一: Tween Animation 渐变动画 通过对特定对象做图像的变换,例如: 平移, 缩放,旋转, 淡入淡出 等。二: Frame Animation 帧动画 创建一个淡入阿瓦不了可以按照指定的时间间隔一个一个显示。顺序播放下面我们就详细介绍一下这两中动画:首先我们介绍 渐变动画:1. Tween Animation1. 渐变动画有四
2015-03-30 21:51:09
827
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android设置Notification从网络中加载图片,解决点击无法消失的bug
Notification的构造函数中只支持使用资源文件的图片作为图片,但是如果我们想用网络中的图片怎么办呢。我们知道,给Notification设置内容的时候调用的是setLatestEventInfo方法,当我们点击去看该方法的时候,所有的结果都一目了然了。public void setLatestEventInfo(Context context, Char
2015-03-11 14:46:04
6188
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 判断ListView的每一个item高度
前提 这个item的根view必须是LinearLayoutpackage com.bxg.news.view;import android.view.View;import android.view.ViewGroup;import android.widget.ListAdapter;import android.widget.ListView;public class Utility
2015-02-28 12:47:04
2200
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ScrollView与WebView结合使用时,设置webview字体大小的时候出现下方留白的终极解决方案
当ScrollView嵌套WebView的时候,如果需要调用WebView的setTextSise的时候,会出现底部一大片空白,试了很多方法都不管用,无意中找到了一个解决方案,居然可以了,我也是醉了,当初居然没有想到这么做.好了,下面看代码吧。首先写一个重置WebView高度的方法@JavascriptInterfacepublic void resize(final float hei
2015-02-05 11:43:22
3226
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android首页轮播图直接拿来用
import java.util.ArrayList;import java.util.List;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;import android.co
2015-01-30 11:02:59
1288
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 关于ViewPager的懒加载问题
默认情况下,系统自带的viewpager至少会提前加载下一个页面,无法禁止,想要禁止,只能通过自定义viewpager来实现;这是在Android open source 上找到的懒加载viewpager/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache Licen
2014-12-11 08:29:34
5025
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 在Android上为APP虚拟出定时的内存缓存
在项目开发中有一个需求,每次启动APP的时候都需要向服务器请求参数,然后进入到某个界面时直接取出来,而不去请求网络,实现更好的用户体验,但是这些数据只能保存一定时间,而且当APP关闭时,这些数据就得销毁,查了半天API貌似没看到定时缓存(不确定到底有没有),这里就自己模拟了一个,注释已经很详细了。。。看代码:package com.memorycache;import
2014-12-05 13:47:59
1051
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 对Fragment切换的优化
在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment:然后总感觉切换的时候有些卡顿,原来的代码/** * 切换页面,这里采用回调 * * @param f */ public void switchFragment(Fragment f) { if (f == null) return; FragmentTransac
2014-12-04 15:53:56
2363
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 手机自动化测试工具有哪几种?
Sikuli (http://sikuli.org),基于优秀的图像对比库opencv的测试工具,测试脚本使用Python编写,非常强大。如果你的app没有源码,可以选择它;或者你想做系统测试(跨app的测试),也可以选择它。其它的还是用下面说的那些个吧应用层的 先说说开源的吧:RobotiumMonkeyrunnerRobolectricCTS还有个新兴的测试工具,以
2014-10-24 22:24:54
1027
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 思考一下activity的启动模式
在android里,有4种activity的启动模式,分别为:“standard” (默认) “singleTop” “singleTask” “singleInstance”standard、singleTop、singleTask、singleInstance(其中前两个是一组、后两个是一组),默认为standard standard:就是intent将发送给新的实例,所以每次
2014-10-23 17:34:47
791
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 如何理解java中的回调
以android中的Button的setOnClickListener这个回调为例;Button button = (Button)this.findViewById(R.id.button);button.setOnClickListener(new Button.OnClickListener() { //回调函数 @override publicvoid onClic
2014-10-16 09:38:01
823
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 做个环保主义的程序员
十多年前刚走入社会工作的时候,那时的中国软件开发根本没有什么版本管理,也没有什么编程规范,软件开发相比起今天来说非常地混乱,那时仅凭自己的一些学习总结了一些C语言编程中的好的小笔记,后来,这些笔记写成了一篇叫《编程修养》的文章。今天,又有些感触,想把这个话题扩大一下,从“个人修养”扩大到“环境保护”,所谓,穷则独善其身,富则达济天下,今天的技术人员比十多年前在技术和环境上都富有了许多,所以,也应该
2014-10-11 08:29:23
1500
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 如何自定义toast实现来电归属地查询
/** * 自定义土司 * */ public void myToast(String address) { view = View.inflate(this, R.layout.address_show, null); TextView textview = (TextView) view.findViewById(R.id.tv_address); view.set
2014-10-10 08:52:20
683
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 深入理解Android消息处理系统——Looper、Handler、Thread
熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息
2014-09-27 22:03:10
564
原创 android解决部分手机无法通过uri获取到相册的path
/** * 通过uri 获取 文件路径 * * @param imageUri * @return path */ private String getPath(Uri imageUri) { if (imageUri == null) return null; if (android
2015-08-06 16:52:44
1476
原创 关于ListView的setEmptyView没效果的问题
使用listView或者gridView时,当列表为空时,有时需要显示一个特殊的empty view来提示用户,一般情况下,如果你是继承ListActivity,只要 TextView tv= new TextView(this); tv.setText("this is a empty view") setEmptyView(tv); 然而运行后并没有什么卵用, 通过一段google, 发现了
2015-07-17 09:55:24
2256
1
原创 Android启动过程深入解析
当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序? 什么是Zygote? 什么是X86以及ARM linux? 什么是init.rc? 什么是系统服务? 当我们想到Android启动过程时,脑海中总是冒出很多疑问。本文将介绍Andr
2015-06-18 14:46:32
523
原创 Android 代码性能优化小技巧
这篇文章主要是介绍了一些小细节的优化技巧,当这些小技巧综合使用起来的时候,对于整个App的性能提升还是有作用的,只是不能较大幅度的提升性能而已。选择合适的算法与数据结构才应该是你首要考虑的因素,在这篇文章中不会涉及这方面。你应该使用这篇文章中的小技巧作为平时写代码的习惯,这样能够提升代码的效率。通常来说,高效的代码需要满足下面两个规则:不要做冗余的动作 如果能避免,尽量不要分配内存 代码的执行效
2015-06-18 09:00:41
501
原创 安卓中的Model-View-Presenter模式介绍
这是一篇安卓中MVP模式的详细教程,从最简单的例子到最佳实践。本文还介绍了一个让在安卓中使用MVP模式变得非常简单的library。它是不是很简单,我们如何才能从中获益?什么是MVP.View是指显示数据并且和用户交互的层。在安卓中,它们可以是一个Activity,一个Fragment,一个android.view.View或者是一个Dialog。.Model 是数据源层。比如数据库接口或者远程服务
2015-06-12 12:00:30
1691
原创 Snackbar新版Toast 从源码角度完全解析
我们将会从一下几个角度了解Snackbar。1.什么是Snackbar2.如何使用Snackbar3.有哪些常用的API4.从源码角度分析其实现5.总结1.什么是SnackbarSnackbar是一个轻量级的用户操作反馈工具,类似于Toast,但是比Toast更美观和实用,当你操作它的时候,Snackbar会置顶显示一个一定时间的简要的信息在屏幕的底部,并且它还可以添加事件。2.如何使用Snack
2015-06-08 22:29:13
1989
2
原创 利用反射获取GridView的高度
本篇文章基于 之前的一篇判断ListView的每一个item高度直接复用上一篇文章中的setListViewHeightBasedOnChildren方法,当初是使用gridView.getNumColumns();方法,获取gridview的列数,但是当我断点看的时候,发现值一直是-1, 而gridview中的mRequestedNumColumns字段反而是正常的, 看看gridview的源码中
2015-05-27 12:45:34
1787
原创 安卓中的Model-View-Presenter模式介绍
英文原文:Introduction to Model-View-Presenter on Android 这是一篇观点比较激进的文章,完全否定了MVC模式在安卓开发的中的意义,认为其是没有任何用处的。这篇文章因为使用了静态变量来定义Presenter,因此在原文的评论部分也受到一些争议。不过我觉得还是从中学到了一些思想。我甚至同意MVC模式在安卓开发的中毫无意义的说法。没有完美的文章。另外关于MV
2015-05-24 16:45:05
1068
原创 ThreadLocal总结
碰到ThreadLocal时,我们需要这样考虑:1.什么是ThreadLocal2.为什么使用ThreadLocal3.怎么用ThreadLocal4.优点缺点总结1.什么是ThreadLocaljava提供了ThreadLocal这个类型,具有该类型的成员变量,每个线程都可以保留一份它的备份数据,通过set方法设置;在线程内部用get方法获取自己备份的数据。这个备份并不是JVM自己备份的,而是通过
2015-05-13 17:27:39
1054
原创 JAVA中的动态代理
1. 相关概念1.1 代理在某些情况下,我们不希望或是不能直接访问对象 A,而是通过访问一个中介对象 B,由 B 去访问 A 达成目的,这种方式我们就称为代理。这里对象 A 所属类我们称为委托类,也称为被代理类,对象 B 所属类称为代理类。代理优点有:隐藏委托类的实现解耦,不改变委托类代码情况下做一些额外处理,比如添加初始判断及其他公共操作根据程序运行前代理
2015-05-04 16:21:58
556
原创 Java集合总结
ListArrayList以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。按数组下标访问元素--get(i)/set(i,e) 的性能很高,这是数组的基本优势。直接在数组末尾加入元素--add(e)的性能也高,但如果按下标插
2015-05-04 16:10:18
1503
原创 android内存优化相关知识
随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要 求远远高于PC的桌面应用程序。以上理由,足以需要开发人员更加专心去实现和优化你的代码了。选择合适的算法和数据结构永远是开发人员最先应该考虑的事 情。同时,我们应该时刻牢记,写出高效代码的两条基本的原则:(1)不要做不必要的事;(2)不要分配不必要的内存。
2015-05-04 16:02:41
801
转载 Android源码目录结构详解
在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以了,但是工作中却需要修改到framework之类的东东所以感觉开始纠结了,又是初学,很多不懂,所以就去找了关于源代码结构介绍的,感觉有很大帮助,所以转载过来分享Android 4.0|-- Makefile|-- bionic (bionic C库)|-- bootable
2015-03-30 22:21:36
549
转载 关于webview的一切
1.基本设置mWebView.getSettings().setJavaScriptEnabled(false);表示不支持js,如果想让java和js交互或者本身希望js完成一定的功能请把false改为true。mWebView.getSettings().setSupportZoom(false);设置是否支持缩放,我这里为false,默认为true。mWebVie
2015-03-11 15:40:46
1510
转载 Android源码分析-对点击事件派发机制
概述一直想写篇关于Android事件派发机制的文章,却一直没写,这两天刚好是周末,有时间了,想想写一篇吧,不然总是只停留在会用的层次上但是无法了解其内部机制。我用的是4.4源码,打开看看,挺复杂的,尤其是事件是怎么从Activity派发出来的,太费解了。了解Windows消息机制的人会发现,觉得Android的事件派发机制和Windows的消息派发机制挺像的,其实这是一种典型的消息“冒泡”
2015-01-30 10:59:58
531
原创 Java 如何实现InputStream的任意拷贝
有时候,当我们需要多次使用到同一个InputStream的时候如何实现InputStream的拷贝使用我们可以把InputStream首先转换成ByteArrayOutputStream.然后你就可以任意克隆你需要的InputStream了代码如下:ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[]
2015-01-12 14:51:54
10326
原创 android夜间模式的实现
attr.xml文件 color文件 #000000 #ffffff #ff87cefa #ff87cefa #000000 #ffffffstyle文件 @color/light_color @color/light_item_color
2014-12-08 15:03:58
677
原创 Android中Bitmap位图像素的提取和修改
在Android系统中,假设我们已经取得位图的像素数组pixels。如果要取得相应的透明度、红色分量、绿色分量、蓝色分量,必须通过相应的按位与运算(&)计算得到。既然要进行按位与运算(按位与运算是双目运算符),就是需要2个运算的数据,一个是像素数组的其中一项,一个是16进制数据。如果参与按位与运算的16进制数据为:0X00FFFFFF,表示将透明度的数据清零。如果参与按位与
2014-12-05 19:44:28
3976
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人