<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenkaisq的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenkaisq</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenkaisq]]></copyright><item><title><![CDATA[Android中自定义view]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89380853</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89380853</guid><author>chenkaisq</author><pubDate>Thu, 18 Apr 2019 18:30:00 +0800</pubDate><description><![CDATA[文章目录1.继承系统控件的自定义view2.继承View的自定义view3.继承ViewGroup的自定义view
源码地址
1.继承系统控件的自定义view
在这里以TextView为例,自定义一个斜划线的TextView,效果如图

这个比较简单,主要是重写onDraw()方法,直接上代码了
package com.test.ck.customview;

import android.con...]]></description><category></category></item><item><title><![CDATA[继承ViewGroup的自定义view]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89384476</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89384476</guid><author>chenkaisq</author><pubDate>Thu, 18 Apr 2019 18:28:40 +0800</pubDate><description><![CDATA[文章目录1.效果和自定义view的完整代码2.对wrap_content属性的处理3.onLayout处理4.弹性滑动和快速滑动
1.效果和自定义view的完整代码
这里写一个水平滑动自定义view,效果如图

先给个完整的自定义MyCustomViewGroup代码,然后在一步步分析
package com.test.ck.customview;

import android.content....]]></description><category></category></item><item><title><![CDATA[Android中view的工作流程]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89313203</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89313203</guid><author>chenkaisq</author><pubDate>Mon, 15 Apr 2019 18:06:49 +0800</pubDate><description><![CDATA[由于篇幅太大,所以本章拆分为4篇,下面是文章链接
MeasureSpec
view的measure流程
view的layout流程
view的draw流程

]]></description><category></category></item><item><title><![CDATA[View的draw流程]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89317396</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89317396</guid><author>chenkaisq</author><pubDate>Mon, 15 Apr 2019 18:03:14 +0800</pubDate><description><![CDATA[View的draw流程
先看下view的draw()方法(ViewGroup并没有重写draw方法)
  public void draw(Canvas canvas) {
        final int privateFlags = mPrivateFlags;
        final boolean dirtyOpaque = (privateFlags &amp; PFLAG_DIR...]]></description><category></category></item><item><title><![CDATA[View的layout流程]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89317379</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89317379</guid><author>chenkaisq</author><pubDate>Mon, 15 Apr 2019 18:02:33 +0800</pubDate><description><![CDATA[View的layout流程

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

  public void layout(int l, int t, int r, int b) {
...]]></description><category></category></item><item><title><![CDATA[view的measure流程]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89317350</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89317350</guid><author>chenkaisq</author><pubDate>Mon, 15 Apr 2019 18:01:09 +0800</pubDate><description><![CDATA[文章目录view的measure流程1.View的measure流程2.ViewGroup的measure流程
view的measure流程
1.View的measure流程

view的measure流程实在onMeasure()方法完成的,源码如下:

  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)...]]></description><category></category></item><item><title><![CDATA[理解MeasureSpec]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/89317299</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/89317299</guid><author>chenkaisq</author><pubDate>Mon, 15 Apr 2019 17:59:21 +0800</pubDate><description><![CDATA[文章目录MeasureSpec1.概述2.MeasureSpec的3种模式
MeasureSpec
1.概述

MeasureSpec是View的内部类,它封装了view的高和宽的信息,其作用是在measure流程中,将View的LayoutParams根据父容器所施加的规则转换成对应的MeasureSpec,其源码如下:

 public static class MeasureSpec {
 ...]]></description><category></category></item><item><title><![CDATA[Android中的事件分发机制的源码解析]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88949847</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88949847</guid><author>chenkaisq</author><pubDate>Tue, 02 Apr 2019 16:10:31 +0800</pubDate><description><![CDATA[文章目录1.Activity的分发机制2.ViewGroup的分发机制
1.Activity的分发机制
activity中主要涉及dispatchTouchEvent和onTouchEvent2个方法.
dispatchTouchEvent
  /**
     * Called to process touch screen events.  You can override this to
 ...]]></description><category></category></item><item><title><![CDATA[Android中的属性动画]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88868405</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88868405</guid><author>chenkaisq</author><pubDate>Fri, 29 Mar 2019 15:54:16 +0800</pubDate><description><![CDATA[1.ObjectAnimator类
常用的属性值:(ObjectAnimator是继承ValueAnimator的)
• translationX和translationY：用来沿着X轴或者Y轴进行平移。
• rotation、rotationX、rotationY：用来围绕View的支点进行旋转。
• PrivotX和PrivotY：控制View对象的支点位置，围绕这个支点进行旋转和缩放变换处理...]]></description><category></category></item><item><title><![CDATA[Android进阶之路读书笔记-Scroller解析]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88745494</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88745494</guid><author>chenkaisq</author><pubDate>Fri, 22 Mar 2019 17:04:02 +0800</pubDate><description><![CDATA[(此文接续 view滑动的方法 一文)
Scroller的构造方法:
 public Scroller(Context context) {
        this(context, null);
    }

    /**
     * Create a Scroller with the specified interpolator. If the interpolator is
    ...]]></description><category></category></item><item><title><![CDATA[Android进阶之路读书笔记-view滑动的方法]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88711172</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88711172</guid><author>chenkaisq</author><pubDate>Fri, 22 Mar 2019 17:03:43 +0800</pubDate><description><![CDATA[view滑动的6种方法
layout(), offsetLeftAndRight()与offsetTopAndBottom(), LayoutParams, 动画, scollTo 与 scollBy以及Scroller。
layout()

自定义view
/**
 * Created by ck on 2019/3/21.
 */

public class MyCustomView exte...]]></description><category></category></item><item><title><![CDATA[Android进阶之路读书笔记-Android坐标系和view坐标系]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88691796</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88691796</guid><author>chenkaisq</author><pubDate>Thu, 21 Mar 2019 11:24:03 +0800</pubDate><description><![CDATA[1.Android坐标系

•  getRawX（）：获取点击事件距离整个屏幕左边的距离，即绝对坐标。
•  getRawY（）：获取点击事件距离整个屏幕顶边的距离，即绝对坐标。
2.view坐标系

View自身的坐标
• getTop（）：获取View自身顶边到其父布局顶边的距离。
• getLeft（）：获取View自身左边到其父布局左边的距离。
• getRight（）：获取View自身右...]]></description><category></category></item><item><title><![CDATA[CoordinatorLayout+自定义Behavior]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88567246</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88567246</guid><author>chenkaisq</author><pubDate>Wed, 20 Mar 2019 14:53:45 +0800</pubDate><description><![CDATA[1.CoordinatorLayout
CoordinatorLayout  is a super-powered FrameLayout,即CoordinatorLayout  是一个超级强大的FrameLayout,它的作用是通过Behavior 协调子View 之间的关系
2.自定义Behavior

自定义Behavior有两种方法:第一种是定义的View监听另一个view的变化(例如大小...]]></description><category></category></item><item><title><![CDATA[CoordinatorLayout+AppbarLayout+CollapsingToolbarLayout的使用以及配合使用实现Toolbar的折叠效果]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88575473</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88575473</guid><author>chenkaisq</author><pubDate>Wed, 20 Mar 2019 14:51:22 +0800</pubDate><description><![CDATA[1.CoordinatorLayout

]]></description><category></category></item><item><title><![CDATA[Android进阶之路读书笔记-Snackbar与TextInputLayout]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88531373</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88531373</guid><author>chenkaisq</author><pubDate>Wed, 13 Mar 2019 15:16:06 +0800</pubDate><description><![CDATA[1.Snackbar
snackbar相对dialog来说,更加轻量级,相对于toast来说,它为用户多提供了一个点击操作.Snackbar显示在屏幕的底部，包含了文字信息与一个可选的操作按 钮,它可以在指定时间结束之后自动消失(ps:Snackbar配合CoordinatorLayout使用可以滑动删除)
2.Snackbar小demo

package com.test.ck.snackbar...]]></description><category></category></item><item><title><![CDATA[Android进阶之路读书笔记-Android6.0运行权限与Android7.0多窗口模式]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88416547</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88416547</guid><author>chenkaisq</author><pubDate>Tue, 12 Mar 2019 11:22:16 +0800</pubDate><description><![CDATA[1.Dangerous Permission
Android6.0之后,对于危险级别的权限,需要向用户动态申请,这些危险级别的权限是以组的形式出现的,同一组的任何一个权限被授权了,其他的也自动被授权

2.以拨打电话为例写的一个小demo
public class MainActivity extends AppCompatActivity {

    @Override
    protect...]]></description><category></category></item><item><title><![CDATA[android进阶之路读书笔记 - android5.0新特性之CardView]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/88308564</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/88308564</guid><author>chenkaisq</author><pubDate>Thu, 07 Mar 2019 15:16:48 +0800</pubDate><description><![CDATA[1.CardView概念
CardView继承自FramLayout,可以设置圆角和阴影,能够使控件更加立体性.
2.CardView的基本属性
android:cardBackgroundColor 设置背景
android:cardCornerRadius 设置圆角
app:cardElevation 设置阴影大小
app:cardMaxElevation 设置阴影的最大高度
app:cont...]]></description><category></category></item><item><title><![CDATA[Handler消息机制]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/85164476</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/85164476</guid><author>chenkaisq</author><pubDate>Fri, 21 Dec 2018 16:40:03 +0800</pubDate><description><![CDATA[andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper: 一个线程可以产生一个Looper对象，由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通，以便push新消息到...]]></description><category></category></item><item><title><![CDATA[Handler的内存泄漏解决办法]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/85062815</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/85062815</guid><author>chenkaisq</author><pubDate>Tue, 18 Dec 2018 14:22:55 +0800</pubDate><description><![CDATA[其实网络上已经有很多关于handler的内存泄漏的讲解和处理了,此处作为自己的笔记记录下.
先来一段比较常见的代码
package com.jetair.ordercenter.ui.activity;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActiv...]]></description><category></category></item><item><title><![CDATA[Android 横向滚动和纵向滚动的TextView]]></title><link>https://blog.youkuaiyun.com/chenkaisq/article/details/81132953</link><guid>https://blog.youkuaiyun.com/chenkaisq/article/details/81132953</guid><author>chenkaisq</author><pubDate>Fri, 20 Jul 2018 15:20:35 +0800</pubDate><description><![CDATA[横向滚动TextView

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

public class HorizontalTextview extends TextView {
    public HorizontalTextview(Context context) {
        super(context);
...]]></description><category></category></item></channel></rss>