自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Briup-z.changhai

阳光、自信、活力

  • 博客(556)
  • 收藏
  • 关注

转载 Android View体系-视图坐标系

前言Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。1.View简介View是Android所有控件的基类,同时ViewGroup也是继承自View,看下面这张图我们就会有一个直观的了解: 知道了View的

2017-05-04 15:33:40 670

转载 Canvas之translate、scale、rotate、skew方法讲解!

前面说Canvas大致可以分为三类:1. save、restore 等与层的保存和回滚相关的方法;2. scale、rotate、clipXXX 等对画布进行操作的方法;3. drawXXX 等一系列绘画相关的方法;前面主要讲了drawBitmap方法,并举了一个星球浮动的栗子,在那个例子中,星球有大有小,需要移动,有时候可能需求上还需要旋转或错切,有了

2017-05-04 15:31:21 738

原创 贝塞尔曲线开发的艺术

水流波动的波形都是三角波,曲线是正余弦曲线,但是Android中没有提供绘制正余弦曲线的API,好在Path类有个绘制贝塞尔曲线的方法quadTo,绘制出来的是2阶的贝塞尔曲线,要想实现波动效果,只能用它来绘制Path曲线。待会儿再讲解2阶的贝塞尔曲线是怎么回事,先来看实现的效果:这个波长比较短,还看不到起伏,只是荡漾,把波长拉长再看一下:已经可以看到起伏很明显了,

2017-05-02 15:08:44 650

转载 Android自定义view之圆形进度条

这段时间正在学习自定义View以及属性动画的知识,然后刚好用这个来练练手,无图无真相,直接看图:简单自定义了一个比较通用的圆形进度条,像上图所示的可以定义圆的半径,进度颜色,宽度,中间字体等信息。下面我就一步一步来为大家讲解:1、首先我们先要找出有哪些属性需要自定义的,进度条颜色、进度颜色、整个进度条的半径、进度的宽度、进度条内文字颜色及大小、最大进度、当前进度

2017-04-25 11:17:22 430

转载 Android自定义View构造函数详解

目录初始Custom View的构造函数生成Custom View的自定义属性在Custom View的构造函数中获取自定义属性设置自定义属性值第二个参数在布局xml文件中为属性赋值第二个参数在style中为属性赋值第三个参数defStyleAttr第四个参数通过defStyleRes为属性赋值后记初始Custom View的构造函数通常我们在实现C

2017-04-21 13:28:18 627

转载 Android TypedValue.applyDimension()的用法

这个方法的作用是 把Android系统中的非标准度量尺寸转变为标准度量尺寸 (Android系统中的标准尺寸是px, 即像素)Android系统中的尺寸单位有: 标准单位: px (px是安卓系统内部使用的单位, dp是与设备无关的尺寸单位 )非标准单位: dp, in, mm, pt, spTypedValue.applyDimension()方法的功

2017-04-19 10:50:14 625

转载 onWindowFocusChanged重要作用 and Activity生命周期

onWindowFocusChanged重要作用Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。译注:从onWindowFocusChanged被执行起,用户可以与应用进行交互了,而这之前,对用户的操作需要做一点限制。比如我们

2016-11-23 09:42:36 439

转载 android应用程序中获取view的位置

获取View类界面控件的位置,有助于添加新的控件。获取在parent里的相对坐标位置    这个比较简单,不用多说,直接调用View的方法:getLeft , getTop, getBottom, getRight 获得。获取在屏幕中的绝对位置  getLocalVisibleRectgetGlobalVisibleRectgetLocationOnScre

2016-11-23 09:28:29 378

原创 RxJava练习(1)--timer代替Handler

最近项目需要引入RxJava,需要转换代码思路。 先在项目中看看哪里能使用这些api,发现有个handler可以被替换,迅速使用。 原来的代码是这样:private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handl

2016-11-16 14:14:38 476

转载 仿淘宝首页的淘宝头条View垂直滚动

之前本来是打算做TextView垂直向上滚动的,后来发现一位大神做得很好,https://github.com/sfsheng0322/MarqueeView 孙福生大神,然后自己要用到多个View向上滚动,也就是类似淘宝首页头条的那种滚动,所以就按照那个思路想了系啊,可以把View拿来滚动,这样可以自己随意的修改View里面的内容,还比较简单一些。所以这个整个思路就是把View就行循环滚动。

2016-11-16 09:19:10 812

转载 android RecyclerView获得单个Item的ViewHolder

我们在使用RecyclerView时,有时候还需要获取某个Item的viewHolder,具体如下:int firstItemPosition = layoutManager.findFirstVisibleItemPosition(); if (position - firstItemPosition >= 0) { //得到要更新的item的vi

2016-11-14 13:51:46 949

转载 onBackPressed() 使用

onBackPressed() : 当手机按下back键时,执行此方法。 用此方法时 :有super.onBackPressed() 时 不能把在此方法中设置的 intent 传回上一个Activity ,                        因此 去掉super.onBackPressed()  在末尾加上finish();               

2016-11-11 14:14:29 6298

转载 仿 QQ 底部 tab 导航

仿 QQ 底部 tab 导航原文链接:http://www.jianshu.com/p/826d730bd841本篇博客主要实现以下效果: 使用 FragmentTabHost 实现 qq 底部 Tab 切换 使用 RadioGroup 和 RadioButton 实现仿 qq 底部切换 使用 RadioGroup 和 ViewPager 实现可以滑动切换的仿 qq 底部 Tab

2016-11-07 10:33:02 1280

转载 FragmentTabHost切换Fragment时避免UI重新加载

FragmentTabHost切换Fragment时避免UI重新加载每次FragmentTabHost切换fragment时会调用onCreateView()重绘UI。 解决方法,在fragment onCreateView 里缓存View: private View rootView;// 缓存Fragment view @Override public View

2016-11-07 09:58:18 583

转载 Java BigDecimal详解

1.引言        借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。 2.

2016-10-19 14:14:33 353

原创 android 主线程和子线程之间的消息传递

从主线程发送消息到子线程(准确地说应该是非UI线程)public class LooperThreadActivity extends Activity{ /** Called when the activity is first created. */ private final int MSG_HELLO = 0; private Handler mHandl

2016-10-18 16:39:50 798

转载 SQLite和MySQL数据库的区别与应用

简单来说,SQLITE功能简约,小型化,追求最大磁盘效率;MYSQL功能全面,综合化,追求最大并发效率。如果只是单机上用的,数据量不是很大,需要方便移植或者需要频繁读/写磁盘文件的话,就用SQLite比较合适;如果是要满足多用户同时访问,或者是网站访问量比较大是使用MYSQL比较合适。下面详细介绍两者的区别和应用:SQLiteSQLite是非凡的数据

2016-10-18 15:32:04 536

原创 android RecyclerView获得单个Item的ViewHolder

我们在使用RecyclerView时,有时候还需要获取某个Item的viewHolder,具体如下:[java] view plain copy int firstItemPosition = layoutManager.findFirstVisibleItemPosition();          if (position - fir

2016-10-13 10:05:59 1255

原创 RecyclerView添加多个样式不同的Item布局

RecyclerView加载一种Item显示,往往不能满足我们在项目中开发的需要,下面我来给大家演示一下RecyclerView如何给它添加多个布局文件那么现在问题来了,这样实现的方式有很多种,1、通过RecyclerView中的Adapter中的getItemType();进行判断加载不的布局属于哪一种样式,通过样式来加载,但是这儿就会写很多的代码,比如每一个viewHolder

2016-10-12 13:47:16 4835

转载 CoordinatorLayout +RecyclerView+加载不同布局的item

最近在做一个仿海词词典的demo,首页主要用到了CoordinatorLayout 折叠标题,并加载下方不同布局的数据。海词词典的的首页是非常漂亮的,先让我们看下它的首页吧。直接上图片                             这里我们可以看到,首页向上滑动的过程中,只有上部分滑出了屏幕,而搜索框并没有,而是滑到了屏幕的上方看上去非常漂亮

2016-10-12 10:57:45 1013

原创 Android TextView中显示图片的4种方式

我们知道,TextView控件一般是用来显示文本的,而图片一般是用ImageView控件来显示。那TextView能否显示图片呢?答案是肯定的!下面列出常见的4种方式。 XML文件中指定属性值这种方式应该是最常用的了,在TextView的左上右下显示图片,可用 Android:drawableLeft android:drawableTop andr

2016-09-26 13:58:46 4055 1

原创 Html类支持的HTML标签

Html类位于Android.text.Html中,该类主要用来格式html格式的文本,像浏览器一样对html标签进行解析并渲染输出,但并不是所有的标签都被支持;不过我们可以实现Html.TagHandler这个接口来自我解析;内部类:interface    Html.ImageGetter用于检索HTML中的标签,如果实现了这个接口,当解析到标签时会回调Imag

2016-09-26 13:52:35 323

转载 java格式化输出 printf 例子

import java.util.Date;public class Printf {public static void main(String[] args) { // %s表示输出字符串,也就是将后面的字符串替换模式中的%sSystem.out.printf("%s", new Integer(1212));// %n表示换行S

2016-09-25 17:42:43 418

原创 Android基础---值得记住的小地方

string.xml中数组的创建 string-array name="transitions"> item>Fadeitem> item>Slideitem> item>Explodeitem> string-array>1234512345Activity中的调用 String[] Array = getResour

2016-09-25 11:36:39 754

原创 Recyclerview.getLayoutPosition()问题

使用Recyclerview 时,如果要添加item的点击监听等功能,可以在Recyclerview.Adapter的onBindViewHolder中设置例如:@Overridepublic void onBindViewHolder(final MyViewHolder holder, int position) { holder.tv.setHeight(150

2016-09-25 11:28:15 1908

转载 RecyclerView控件列表项布局match_parent属性失效的根本原理

之前用RecyclerView为了达到自己想要的结果,把item的根布局(最外层Layout)的大小设为match_parent,一开始却发现一个很大的问题!咦?为什么我的item一加载就成了wrap_content的效果?我的match_parent为什么效果显示不出来…在尝试了很多很多方法觉得应该不是我写错了之后,我才意识到我根本不知道LayoutInflater的inflate这个函数的参数

2016-09-23 17:49:36 690

原创 用RxJava实现事件总线(Event Bus)

用RxJava实现事件总线(Event Bus)事件总线可以使各组件之间的通信变得简单,深度解耦!目前大多数开发者使用EventBus或者Otto作为事件总线通信库,对于RxJava使用者来说,RxJava也可以轻松实现事件总线,因为它们都依据于观察者模式。public class RxBus { private static volatile RxBus defaultIns

2016-09-23 14:22:49 521

原创 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值

前言在项目中,我们有时会需要根据不同的项目环境,使用不同的项目变量,举例:在测试环境中需要app访问的服务器地址是测试服务器正式发布下的app需要访问正式服务器。可以使用下面三种技术来满足要求:使用 gradle 在编译时动态设置 Android resValue修改 res value 的方式,比如修改 strings.xml 文件中的 AppNa

2016-09-18 09:24:37 1783

原创 安卓实战中防止Button的频繁点击多次执行点击事件和点击切换文字

情况一:用户非常快的双击按钮 按钮事件相当于二次 怎么控制一个Button俩次点击的时间大于2s每次点击事件执行之前 先判断俩次点击间隔是否大于2000毫秒public abstract class OnClickEvent implements View.OnClickListener { private static long lastTime; pub

2016-09-12 11:26:21 673

原创 Activity知识总结

Activity生命周期运行状态:可见,并且可操作(onCreate--onStart---onResume)(onRestart--onStart---onResume)暂停状态:可见,但是不可操作 onPause 停止状态:不可见,并且也不可操作 onStop 销毁状态:该Activity结束,或Activity所在的Dalivik进程被结束 onDestory回调函数

2016-09-09 14:55:01 259

原创 Fragment与Activity之间的数据交互

一、Activity把值传递给Fragment  建议的传值方式是通过Bundle来传递,而不是直接作为fragment的构造参数传递。在activity中创建bundle数据包,并调用fragment的setArguments(Bundle bundle)方法,即可将Bundle数据包传给fragment。在Fragment中用getArguments方法得到传递过来的值。二、F

2016-09-09 14:42:27 415

原创 Android_Sqlbrite入门使用

除非迫不得已,要不然不要在你的APP里面使用数据库,记不得是哪个书的话了! 现在Android平台下的ORM框架very多,比如GreenDao,曾经写过一篇关于GreenDao的傻瓜式入门,喜欢的朋友可以去看下,GreenDao傻瓜式入门 他用起来需要自己建立一个Java工程,然后把数据模型建立,在执行java主函数的时候就把模型映射的表和结构全部创建完毕, 然后增删改查需要用gre

2016-09-02 14:17:43 783

转载 Android 网络请求:Retrofit 使用

Android 网络请求:Retrofit 使用网络请求:retrofit+okhttp3示例项目:有妹子的日报 MeiZiNews总结:结合 RxJava 使用得十分的爽。如果没有用到 RxJava,个人感觉这样使用和用 OkHttp3 的封装差不多配置Retrofit 2.0 + OkHttp 3.0 配置转换器retrofitRxAndroid

2016-08-05 14:58:43 830

转载 Android Studio中的Gradle配置不同服务器地址以生成不同安装包”

需求:  在产品开发中,经常需要发布各个版本,每个版本的服务器地址有不同的服务器地址。比如开发服务器使用 192.168.1.232服务器,测试服务器使用 192.168.1.245服务器,正式上线后服务器地址是http://xxxx.com。  在配合git开发中还要分支管理,常用的有:devtestmaster  我们起初的开发过程是:1.在项目

2016-08-04 15:50:46 689

原创 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏

概述在很app上都见过 可折叠的顶部导航栏效果。google support v7 提供了 CollapsingToolbarLayout 可以实现这个效果。效果图如下:实现步骤1.写一个 CollapsingToolbarLayout,它有两个 子视图,一个就是上图显示的图片(降落伞哪个)的Imageview,另一个就是 顶部导航栏toobar

2016-08-04 15:29:48 588

转载 Android透明状态栏

概述有时候我们想在 andorid 手机上实现一种 跨越 顶部状态栏的效果,比如一张图片直接显示在 状态栏内。比如下图:这个页面里有张图片,这个图片显示在整个页面的上部分。状态栏是 漂浮在这个图片上的。实现透明状态栏的方法适配Android 4.4 +的方法:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KIT

2016-08-04 14:13:18 351

转载 Android_Sqlbrite入门使用

随着今年RXjava Rxandroid的越来越火爆,一个响应式的数据库SqlBrite也被我们传说中的巨人,杰克大神放出,他基于RX观察者模式,来对我们原声的数据库进行操作,没有隐藏API,对于喜欢写sql语句的同学无非是比较不错的,本文介绍下,在原生的sqllite中引入sqlbrite 操作数据库,先看下demo预览,一个简单的界面,我们用数据库初始化了几个perso

2016-08-03 15:38:22 368

原创 Retrofit初探和简单使用

Retrofit简单介绍Retrofit是Square提供的开源产品,为Android平台的应用提供一个类型安全的REST客户端。它是基于注解,提供 JSON to POJO(Plain Ordinary Java Object ,简单 Java 对象),POJO to JSON,网络请求(POST,GET, PUT,DELETE 等)封装。Retrofit 虽然是一套注解形的

2016-07-30 09:20:31 575

原创 Retrofit – Java(Android) 的REST 接口封装类库

Retrofit   和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作。同时还封装了网络代码的调用。例如:public interface GitHubService { @GET("/users/{user}/repos") List listRepos(@Path("use

2016-07-29 17:34:26 581

原创 理解Fragment生命周期

主要看两张图,和跑代码一,Fragment的生命周           二,与Activity生命周期的对比     场景演示 : 切换到该Fragment11-29 14:26:35.095: D/AppListFragment(7649): onAttach11-29 14:26:35.095: D/AppListFragment(7649)

2016-07-14 16:36:42 261

空空如也

空空如也

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

TA关注的人

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