自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android中自定义view

文章目录1.继承系统控件的自定义view2.继承View的自定义view3.继承ViewGroup的自定义view 源码地址 1.继承系统控件的自定义view 在这里以TextView为例,自定义一个斜划线的TextView,效果如图 这个比较简单,主要是重写onDraw()方法,直接上代码了 ...

2019-04-18 18:30:00

阅读数 56

评论数 0

原创 继承ViewGroup的自定义view

文章目录1.效果和自定义view的完整代码2.对wrap_content属性的处理3.onLayout处理4.弹性滑动和快速滑动 1.效果和自定义view的完整代码 这里写一个水平滑动自定义view,效果如图 先给个完整的自定义MyCustomViewGroup代码,然后在一步步分析 ...

2019-04-18 18:28:40

阅读数 271

评论数 0

原创 Android中view的工作流程

由于篇幅太大,所以本章拆分为4篇,下面是文章链接 MeasureSpec view的measure流程 view的layout流程 view的draw流程

2019-04-15 18:06:49

阅读数 40

评论数 0

原创 View的draw流程

View的draw流程 先看下view的draw()方法(ViewGroup并没有重写draw方法) public void draw(Canvas canvas) { final int privateFlags = mPrivateFlags; fi...

2019-04-15 18:03:14

阅读数 98

评论数 0

原创 View的layout流程

View的layout流程 layout()方法的作用是确定元素的位置。ViewGroup中的layout方法用来确定子元素的位置,View中的layout方法则用来确定自身的位置.先看下view的layout方法(ViewGroup里的layout方法也调用了View中的layout方法) ...

2019-04-15 18:02:33

阅读数 56

评论数 0

原创 view的measure流程

文章目录view的measure流程1.View的measure流程2.ViewGroup的measure流程 view的measure流程 1.View的measure流程 view的measure流程实在onMeasure()方法完成的,源码如下: protected void onM...

2019-04-15 18:01:09

阅读数 47

评论数 0

原创 理解MeasureSpec

文章目录MeasureSpec1.概述2.MeasureSpec的3种模式 MeasureSpec 1.概述 MeasureSpec是View的内部类,它封装了view的高和宽的信息,其作用是在measure流程中,将View的LayoutParams根据父容器所施加的规则转换成对应的M...

2019-04-15 17:59:21

阅读数 57

评论数 0

原创 Android中的事件分发机制的源码解析

文章目录1.Activity的分发机制2.ViewGroup的分发机制 1.Activity的分发机制 activity中主要涉及dispatchTouchEvent和onTouchEvent2个方法. dispatchTouchEvent /** * Called to ...

2019-04-02 16:10:31

阅读数 94

评论数 0

原创 Android中的属性动画

1.ObjectAnimator类 常用的属性值:(ObjectAnimator是继承ValueAnimator的) • translationX和translationY:用来沿着X轴或者Y轴进行平移。 • rotation、rotationX、rotationY:用来围绕View的支点进...

2019-03-29 15:54:16

阅读数 33

评论数 0

原创 Android进阶之路读书笔记-Scroller解析

(此文接续 view滑动的方法 一文) Scroller的构造方法: public Scroller(Context context) { this(context, null); } /** * Create a Scroller wi...

2019-03-22 17:04:02

阅读数 24

评论数 0

原创 Android进阶之路读书笔记-view滑动的方法

view滑动的6种方法 layout(), offsetLeftAndRight()与offsetTopAndBottom(), LayoutParams, 动画, scollTo 与 scollBy以及Scroller。 layout() 自定义view /** * Create...

2019-03-22 17:03:43

阅读数 26

评论数 0

原创 Android进阶之路读书笔记-Android坐标系和view坐标系

1.Android坐标系 • getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标。 • getRawY():获取点击事件距离整个屏幕顶边的距离,即绝对坐标。 2.view坐标系 View自身的坐标 • getTop():获取View自身顶边到其父布局顶边的距离...

2019-03-21 11:24:03

阅读数 34

评论数 0

原创 CoordinatorLayout+自定义Behavior

1.CoordinatorLayout CoordinatorLayout is a super-powered FrameLayout,即CoordinatorLayout 是一个超级强大的FrameLayout,它的作用是通过Behavior 协调子View 之间的关系 2.自定义Be...

2019-03-20 14:53:45

阅读数 68

评论数 0

原创 CoordinatorLayout+AppbarLayout+CollapsingToolbarLayout的使用以及配合使用实现Toolbar的折叠效果

1.CoordinatorLayout

2019-03-20 14:51:22

阅读数 499

评论数 0

原创 Android进阶之路读书笔记-Snackbar与TextInputLayout

1.Snackbar snackbar相对dialog来说,更加轻量级,相对于toast来说,它为用户多提供了一个点击操作.Snackbar显示在屏幕的底部,包含了文字信息与一个可选的操作按 钮,它可以在指定时间结束之后自动消失(ps:Snackbar配合CoordinatorLayout使用可...

2019-03-13 15:16:06

阅读数 50

评论数 0

原创 Android进阶之路读书笔记-Android6.0运行权限与Android7.0多窗口模式

1.Dangerous Permission Android6.0之后,对于危险级别的权限,需要向用户动态申请,这些危险级别的权限是以组的形式出现的,同一组的任何一个权限被授权了,其他的也自动被授权 2.以拨打电话为例写的一个小demo public class MainActivity...

2019-03-12 11:22:16

阅读数 53

评论数 0

原创 android进阶之路读书笔记 - android5.0新特性之CardView

1.CardView概念 CardView继承自FramLayout,可以设置圆角和阴影,能够使控件更加立体性. 2.CardView的基本属性 android:cardBackgroundColor 设置背景 android:cardCornerRadius 设置圆角 app:card...

2019-03-07 15:16:48

阅读数 32

评论数 0

转载 Handler消息机制

andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。 1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消...

2018-12-21 16:40:03

阅读数 24

评论数 0

原创 Handler的内存泄漏解决办法

其实网络上已经有很多关于handler的内存泄漏的讲解和处理了,此处作为自己的笔记记录下. 先来一段比较常见的代码 package com.jetair.ordercenter.ui.activity; import android.os.Handler; import android.o...

2018-12-18 14:22:55

阅读数 40

评论数 0

原创 Android 横向滚动和纵向滚动的TextView

横向滚动TextView TextView的横向滚动,本身自带的跑马灯效果+自定义一个简单的TextView即可实现. 自定义view代码如下: public class HorizontalTextview extends TextView { public HorizontalT...

2018-07-20 15:20:35

阅读数 1467

评论数 0

原创 Android版本更新下载apk文件到sd卡并自动安装

版本更新,需要注意的是android7.0和8.0的安装问题 android8.0以上得需要安装未知来源应用的权限 <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES&q...

2018-06-26 14:45:18

阅读数 991

评论数 1

原创 一个简单的倒计时控件的实现

好久没有写博客了,本来想当做自己的知识库来着,但是有时候不能坚持下来,今天有时间就再来更新下,就写一个简单的倒计时实现,其实没啥难点,Handler+Timer就可以实现.原理就是:启动一个定时器,每个1秒钟利用handler发送一个请求,然后到handleMessage处理,判断小时,分钟,秒是...

2017-12-19 15:24:00

阅读数 549

评论数 0

原创 网络请求库(ion、volley、retrofit)和图片加载库(glide、picasso、fresco)

前言 熟练掌握目前最流行网络请求类库的使用,如: Ion:Android Asynchronous Networking and Image LoadingVolley:谷歌官方推出的网络请求和图片加载库Retrofit:Square开源的基于OKHttp的性能良好更安全的类库 熟练...

2017-03-30 11:44:58

阅读数 907

评论数 1

转载 Socket简介(转)

简单理解Socket TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的...

2017-01-13 14:37:08

阅读数 164

评论数 0

原创 Http协议post请求

Post请求 Post请求与Get请求的区别 Get请求的参数是直接放在url后面的,而Post请求是放在请求体中的 Get请求参数的长度会根据浏览器的不同实现有一定限制,而Post请求参数长度没有限制 Get请求方便测试,直接输入地址即可,而Post请求不方便测...

2017-01-10 15:03:41

阅读数 1617

评论数 0

原创 LeakCanary检查内存泄露

LeakCanary检测内存泄露内存泄露 内存泄露的概念 当一个对象已经不再需要却无法被GC回收,就是内存泄露 内存泄露的危害 1.“A small leak will sink a great ship.” - Benjamin Franklin 2.千里之堤, 毁于蚁穴。...

2017-01-10 09:43:06

阅读数 275

评论数 0

原创 图片加载库比较总结

原理概述:图片加载的工作流(task flow)都是3级缓存的流程;图片的内存缓存一定是LruCache实现;图片下载和读取线程的调度一定是通过线程池管理

2017-01-04 19:39:34

阅读数 306

评论数 0

原创 网络请求库比较总结

概述:所有网络库的原理是: 网络请求一般是基于HttpURLConnection和HttpClient进行封装的,也有自己编写Socket实现的,比如ion和OkHttp;请求的执行一般是通过线程池来管理,异步请求得到结果,则通过回调接口接收;并且一般接收结果的回调都通过Handler去在主线程执行

2017-01-04 19:30:48

阅读数 277

评论数 0

原创 主界面的Fragment切换之使用RadioGroup配合切换Fragment

package com.heima.oschina;import android.os.Bundle; import android.support.v4.app.FragmentTabHost; import android.support.v7.app.AppCompatActivity; i...

2016-12-20 16:15:28

阅读数 3140

评论数 1

原创 主界面的Fragment切换之使用FragmentTabHost配合切换Fragment

package com.heima.oschina;import android.os.Bundle; import android.support.v4.app.FragmentTabHost; import android.support.v7.app.AppCompatActivity; i...

2016-12-20 15:46:07

阅读数 304

评论数 0

原创 Checkbox复用导致错乱

定义一个类继承Dialog:public class CustomDialog extends Dialog 在oncreate方法里调用setContentView 实现布局 类似于activity 将dialog设置显示在屏幕下方 在构造方法里 获取window 调整window显示位置:

2016-12-18 12:39:44

阅读数 373

评论数 0

原创 自定义Diaglog

定义一个类继承Dialog:public class CustomDialog extends Dialog 在oncreate方法里调用setContentView 实现布局 类似于activity 将dialog设置显示在屏幕下方 在构造方法里 获取window 调整window显示位置:

2016-12-17 22:06:42

阅读数 1081

评论数 0

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