自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UI进阶——Style的详细介绍

楔子在android UI的开发中,合理的利用style资源是必不可少的一件事。但是个人翻阅很多文章,很少有详细的描述style的原理及其具体的使用。所以决定写一篇详细描述style的文章。style的简单描述style的作用当创建App之后,我想大家肯定都有这样的疑惑,为什么刚创建的Activity的背景是白色的,使用TextView显示出的字的颜色都是黑色的?这种一开始就默认的属性是由什么控制的

2016-11-13 12:51:16 1716

原创 Material Design——Coordinator Layout

楔子最近正在模仿制作知乎日报,知乎日报的详情页有这样的效果。经过查询之后发现原来可以使用Coordinator Layout完成该效果,所以就好好学了一下这个View。Coordinator的作用及原理作用:我们在制作UI的时候经常会有当一个View进行移动或者内部滚动的时候(控制对象),其他View(被控制对象)需要根据该View的移动或者滑动,自身也需要去改变。就像上图中,

2016-11-01 14:15:44 867

原创 自定义View——PorterDuffXfermode

楔子我们在自定义的过程,当多个View叠加在一起的时候,系统一般都会按照图片绘制的先手顺序来确定图片的层级(先画的在后画的图片下面一层) 如:!这里是张图片但是当多个图形交汇的时候,我们不光希望只能够按照层级设置。我们有时候希望,绘制两个图形的相交部分,或者希望当图形相交的时候不绘制两个图形的相交的部分。如何在图形中实现类似于中学时候学的集合的交、并、补这样的效果呢?这样就需要使用到了

2016-10-31 13:14:50 2245 3

原创 自定义View——Shader的使用

楔子——Shader我们在生活中经常会使用到一些渐变效果如:那么在自定义View的时候我们如何在我们的View上添加这种效果呢? 并且我们在特效中经常看到一些就是背景颜色仿佛在流动的字这种效果又是如何实现的呢?这些都是使用了Shader这个类来完成的。如何使用ShaderShader的种类首先我们介绍Shader有哪些种类,每种Shader能够实现什么效果。首先我们要知道所有的渐变效果类都是继承了

2016-10-16 16:26:14 1793

原创 模仿超级课程表——抓取学校课表数据

一、显示课表页面的制作①、介绍用过的超标的同学都知道,超标的课表页面是可以滑动的,并且背景为透明色,可以任意修改背景。效果展示:②、制作流程那么如何制作出这样的表格呢?(1)、首先我们得知道,Android提供了哪些可以用来制作表格的控件。详情参照:如何制作表格(1)——TableLayout如何制作表格(2)——GridLayout

2016-10-01 16:29:50 16862 4

原创 如何制作表格(三)——GridView + RecyclerView.GridLayoutManager

到现在,其实我们已经能够制作各种各样的表格了。但是当我们想做一个表格的单元格宽度和高度相同。如果是使用GridLayout来进行制作的话我们需要在代码中获取GridLayout的宽。然后根据GridLayout的列数通过计算,获取每个格子的宽度。然后让View的宽高设置为格子的宽度。并且还需要自己设置对于格子的点击事件。那么有什么方便的方法能够制作出一个简单的表格呢?一、GridView的使用

2016-09-28 19:18:59 2725

原创 如何制作表格(二)—— GridLayout

我们已经知道了TableLayout是如何时候了,那么现在我们要开始讲解GridLayout是如何使用的。一、GridLayout的由来为什么还需要GridLayout,我感觉我已经可以用TableLayout做出所有表格了︿( ̄︶ ̄)︿但是有时候,我们需要将几个单元格合并起来的时候,TableLayout就办不到了。等会写 。。。。

2016-09-24 16:54:48 8204

原创 如何制作表格(一)——TableLayout

一、Android中能够用于网格布局的控件(制作各种这样的表格)四种:TableLayout、GridLayout、GridView、Recycler中的GridLayoutManager。二、TableLayout的使用来让我们们说说TableLayout好处都有啥①、TableLayout的优点就是布出来的局特别规整,行是行,列是列。那么如何证明这句话呢,恩,润

2016-09-24 16:03:47 9090

原创 开发艺术探索——生命周期和启动模式

一、Android的生命周期1、生命周期图2、各个生命周期何时被回调onCreate():创建Activity的时候,被回调。onStart():Activity已经被创建了,但是不可见。onResume():Activity已经被创建,并显示在前台而且可见时、onPause():当Activity未显示在前台的时候调用。onSt

2016-09-16 20:28:33 388

原创 性能优化——内存优化建议(RAM)

一、合理利用Service资源情景:当App在后台使用Service的时候,除非正在执行任务,否则都应该是处于非运行状态的,或者主动将其停止。原因:Service的运行需要浪费内存,而且系统倾向保留这个Service从而保留Serivce的进程。解决方法:最后使用IntentService代替普通的Service,当Service不使用了就杀死。二、避免Bitmap的浪费情景:

2016-09-15 15:21:09 743

转载 Git的文档教程

Git教程

2016-09-15 14:46:00 275

原创 单元测试——Android(入门篇)

一、Android中单元测试的基础使用①、简单示例:(在android中测试加法)public final class MathUtils { private MathUtils(){ throw new IllegalArgumentException("该类无法实例化"); } public static int addition(int a,

2016-09-14 19:11:17 1099

原创 Fragment实际开发中的使用

一、结合TabLayout实现Fragment的切换效果①、添加依赖: compile 'com.android.support:design:23.2.0'(版本根据个人的api修改,本人是api 23)Google在2015的IO大会上,给开发者们带来了全新的Android Design Support Library,里面包含了许多新控件,这些新控件有许多是把以前的一些第三方开源库官

2016-09-13 18:08:51 696

原创 FrameLayout的使用进阶

一、如何保证Fragment不被重复创建以前Fragment的使用方式:二、如何保证不发生Fragment重影三、Fragment与Activity的交互四、结合FragmentTabHost实现界面的切换效果

2016-09-12 21:50:28 2772

原创 Toolbar的高级性能

参考:http://blog.csdn.net/guolin_blog/article/details/25466665一、ActionProvider作用:①、自定义Toolbar的按钮 ②、自带子菜单(子菜单还能够显示图片和文字)效果展示:(自定义Toolbar的按钮(这里是个图片,可以是其他的View),点击后产生子菜单,子菜单的内容自定义)①、使用Andro

2016-09-12 19:12:21 524

原创 断言(assert)的使用

参考:http://www.cnblogs.com/tianxue/p/3925315.html一、Assert简介作用:是用于对程序进行调试的,对于执行结构的判断,而不是对于业务流程的判断。(相当于一个if ()语句,如果满足断言的执行程序,如果不满足则抛错误)使用情形:断言只适用复杂的调式过程。(如果不复杂完全可以用log或者debug代替)特性:首先asser

2016-09-12 16:32:29 56338 4

原创 ToolBar的使用

参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.htmlhttp://blog.csdn.net/guolin_blog/article/details/18234477可结合:Menu的使用一起食用一、ToolBar的简介Goole用来替代原来的ActionBar的控件。为了向

2016-09-11 16:28:27 976

原创 DrawerLayout的使用

一、DrawerLayout简介    是Google公司提供的侧滑栏,内置在SDK中二、使用DrawerLayout①、加载DrawerLayout并显示layout/activity_main(在layout中添加DrawerLayout)<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an

2016-09-11 14:32:53 556

原创 单元测试——使用Mock

一、Mock简介背景:小明和小刚要为app制作一个登陆功能,小明负责网络交互获取服务器的认证数据,小刚负责将获取到的数据写入到数据库中,然后能够使用户自动登陆。小刚的开发的速度比较快,已经完成了数据库互这一块,但是小名明的网络交互还没有开发完成。那么小刚怎么测试自己的数据库是否完成呢?小刚就要自己创建一个类,模拟登陆,然后进行测试。首先创建User类public class User

2016-09-08 12:52:02 2977

原创 单元测试——基于JUnit

一、安装JUnit.jarhttps://github.com/junit-team/junit4/wiki/Download-and-Install二、JUnit的介绍 (一)①、继承于TestCase类的表示一个单元测试类。②、添加的测试方法必须以test开头,并且必须是public修饰符。(该测试函数不需要人为调用)③、JUnit的生命周期      setU

2016-09-07 19:53:25 680

原创 如何使用Git版本控制

一、前期准备下载git版本控制器(由于本人是Window版本的,以下的文章都是针对Window的指令)Git下载地址。下载完成之后,安装直接点next就可以了,不用调整什么东西。如何判断是否安装成功呢?只要在dos窗口,执行git,出现以下代码,就表示成功了。然后打开Git文件夹中的git-cmd.exe窗口。二、Git基本原理及特性①、只关心数据整体是

2016-09-06 12:41:01 826

原创 第二十九条:优先考虑类型安全的异构容器

需求:容器中能够拥有多个类型参数。就是我能够在容器中添加Integer、String等参数,并能返回具体的类型。用途:比如说数据库中的字段都是不同类型,怎么将一条数据加入到容器中。如果有一个容器能够装多种类型的类就好了。普通容器无法实现:但是由于容器都被泛型参数化过了,导致只能够拥有固定的类型参数。这个需求,我把泛型设置为不就可以了吗,这容器不就能够装填好多东西了吗?但是虽然将泛型

2016-09-05 15:01:57 418

原创 第二十八条:利用有限通配符提升API的灵活性

一、实例(一)我们有一个Stack类public Stack{ //有如下方法 public void put(E data); public E pop();}我们想增加能够将容器中的所有数据存储到栈中的方法:putAll(Iterator  iterator)Stack类的完整实现:public class GenericsStack { priva

2016-09-05 11:29:42 408

原创 第二十七条:优先使用泛型方法

一、泛型方法的优点(一)优点:泛型方法能够推断出输入参数中的参数类型例:public E getType(E type){ return type;}//当使用该方法的时候,虚拟机能够推断出输入的参数的类型是什么,并返回该类型。举例:合并两个Set列表,用原生类型方法与泛型方法比较//原生类型方法public Set union(Set set1,Set set2){

2016-09-05 10:27:09 442

原创 第二十六条:优先考虑泛型

一、利用Object写的堆栈实例public class CommonStack { private static final int DEFAULT_SIZE = 16; //用来存储的数组 private Object[] objects = new Object[DEFAULT_SIZE]; //当前存储的位置 private int count = 0; public

2016-09-04 18:41:56 323

原创 第二十五条:列表优先于数组

一、数组与列表容器的比较①、协变与不可变类型:数组:是协变类型的。协变的意思就是Number是Integer的父类,那么Number[] data = new Integer[]; 是成立的。列表:是不可变类型。就是说无法List list = new List();无法发生协变才是正确的方式。原因: public static void main(String[]args){

2016-09-04 16:52:31 568

原创 第二十四条:消除非受检的警告

原因:有时候由于某种原因,需要将代码设置为非受监测的类型,所以需要消除警告,保证代码安全性。消除警告的条件?①、能够在逻辑上保证代码的安全性。②、消除警告不要在整个类中使用,要在出现问题的代码片段上使用。(缩小范围)举例:(复制) @SuppressWarnings("unchecked") public T[] copyArray(T[] a){ int arraySi

2016-09-03 20:10:18 357

原创 第二十三条:不要在新代码中使用原生类型

一、泛型的术语类型参数:public class Request{} 其中的E就是类型参数。参数化类型:List 这叫做参数化类型。原生类型:List  没有泛型的类,叫做原生。补:在JAVA中是不推荐使用原生类型的,但是为什么不将原生类型去掉?因为泛型引入是在JAVA产生的20年后,为了向上兼容以前的代码,所以就保持了原生类型。二、泛型的优点①、能够在编译期间

2016-09-03 16:14:56 273

原创 第二十二条:优先考虑静态成员类

一、嵌套类的种类1、静态成员类(在类内部的类)public class MyClass{ \\... public static class MyMember{ \\... }}2、成员类(静态与非静态的区别在于static)public class MyClass{ \\... public class MyMember{ \\...

2016-09-03 15:29:51 705

原创 Http网络框架的构建

参考:https://github.com/hehonghui/simple_net_framework一、了解整个框架的布局结构图:关系分析:①、Request类作用:设置请求数据(url,header,body等),解析返回的数据,并设置数据完成接口②、RequestQueen类作用:启动与关闭执行线程、并能够添加Request到队列中。③、NetWor

2016-09-03 11:29:07 516

原创 SQLite——简单使用

一、Sqlite的基础类型INTEGER:            整型TEXT:                   文本类型REAL:                   浮点型NULL:                   数据值为空BLOB:                表示一个数据块。 (解释:在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片或者音

2016-08-31 19:33:36 3186

原创 OkHttp与Cookie及Cookie的持久化

一、OkHttp3下的Cookie的使用①、OkHttpClient取消了setCookieHandler(CookieHandler cookieHandler);改而使用:setCookieJar(CookieJar cookieJar);CookieJar是一个接口,需要自己实现CookieJar的定义。CookieJar cookieJar = new Cookie

2016-08-29 19:21:12 24254 4

原创 OkHttp——简单使用

一、GET传输①、OkHttp默认使用GET传输②、使用Request发送请求。③、使用Response接收服务器的请求。④、通过CallBack接口回调来处理接收的时候。 OkHttp提供异步,和非异步两种方式。示例:public static void main(String[]args){ //创建OkHttpClient OkHttpClient clien

2016-08-28 18:19:03 807

原创 Gson——简单使用

一、将JavaBean转换成JsonObject创建JavaBeanpublic class User { private String name; private String pwd; public String getName() { return name; } public void setName(String name) { this.name

2016-08-28 12:45:47 521

原创 网络——Cookie的使用

一、什么是Cookie①、Cookie的作用:Cookie是服务端给客户端颁发的通行证,服务端通过Cookie来确认客户端的身份。这样当客户端操作时候,服务端知道具体修改哪个客户的数据。而不需要每次客户端在修改数据的时候,都要输入一遍,账号密码来认证自己。②、Cookie的传输:Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response

2016-08-25 15:40:01 736

原创 网络——深入了解Http

一、Http网络请求的原理Http是通过TCP实现的可靠的网络传输。(需要了解的知识TCP/UDP编程)那么Http是如何过度到TCP实现客户端与服务器的交互的呢?①、当客户端执行网络请求的时候,会从URL地址中解析出URL的主机名(Host),并将主机地址转换成IP(主机名是什么:类似http://write.blog.csdn.net/postedit     IP是什么:

2016-08-22 15:17:21 1483

原创 自定义类似ImageView的控件

一、主要步骤①、创建MyImageView类,并继承View②、设置View控件的xml属性,也就是attr③、在layout中配置View④、获取View控件的属性,然后获取图片,并显示。⑤、设定ImageView的大小二、制作:1、首先继承View类public class MyImageView extends View{ public MyI

2016-08-20 13:46:38 371

原创 第二十一条:函数对象表示策略

一、什么是函数对象①、类中只有唯一的一个方法,没有成员变量。②、该方法输入参数是其他类。③、内部逻辑是调用其他类的方法,完成某些任务。示例:比较两个String对象的长度。public class StrLenCompare{ public int compare(String first,String second){ return first.lengt

2016-08-19 16:39:41 310

原创 第二十条:类层次由于标签类

一、什么叫做标签类标签类指的是:类中由某个或某组常量(这就是标签),控制着这个类的行为。示例:public class Figure { //枚举类型 enum Shape{SQUARE,CIRCLE}; private double radium; private double width; private double height; private Shape t

2016-08-19 16:09:42 369

原创 第十九条:接口只用来定义方法

一、接口的不良实现有些程序将创建方法以外的事情,放在接口中,比如说:在接口中定义常量。public interface FinalNumber { final int NUM_ONE = 1; final int NUM_TWO = 2; final int NUM_THREE = 3;}常量接口是对接口的不良使用。原因:实现了该接口的类,命名空间容易被污染。类实现

2016-08-19 15:34:12 511

空空如也

空空如也

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

TA关注的人

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