October 29, 2016

自定义Behavior,实现滑动卡片

先上效果图:

自定义Behavior,实现滑动卡片

上传GIF图到简书搞了半天,后来发现是文件太大的原因,于是在这个网站压缩了一下:压缩GIF

至于是怎么录制这个GIF的,很简单:用Vysor同步手机屏幕到电脑上,然后用licecap录制即可。

1、自定义视图

注意点:

自定义组合视图+自定义属性,没啥说的

布局中使用了me......

October 29, 2016

仿QQ空间可拉伸头部特效

先上效果图:

仿QQ空间可拉伸头部特效

1、自定义控件

注意点:

这里引用一个xml文件做为listview的headerView, LayoutInflater. inflate()的时候,注意最后的root为null,而不是this,以防addHeaderView时出问题

初始化defaultScaleHeight时,需要先手......

October 29, 2016

滑动冲突解决方案

1.手势分发机制:

-[]2)WN$NKLI.png

案例:假如ScrollView中嵌套一个ViewPager,则可以:

2.外部拦截:

(在ScrollView中写)

October 29, 2016

自定义视图-马赛克视图

这里我是直接继承的ImageView,主要是为了能兼容之前的项目,因为之前是直接用的ImageView。

思路

根据原图片生成一个全马赛克的图片

监听手势,得到应该显示的马赛克方块的集合

根据方块的集合,刷新视图,这里用到了Paint的Xfermode(图片混合模式)

(1). 手势图和全马赛克图混合,在相交处绘制马赛克图

(2). 将上一步的图和原图混合,在相交处绘制上一步的图,在不相交处绘制原图,搞定收工!

效果图

October 29, 2016

贝塞尔曲线学习

贝塞尔曲线学习

APK下载地址

1.贝塞尔曲线

以下公式中:

B(t)为t时间下 点的坐标;

P0为起点,Pn为终点,Pi为控制点

一阶贝塞尔曲线(线段):

October 29, 2016

ViewGroup的学习案例(自定义伪ViewPager)

1、自定义ViewPager

package extra.view;

import android.content.Context;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

import android.view.animation.DecelerateInterpolator;

import android.widget.RelativeLayout;

import android.widget.Scroller;

import java.u......

October 29, 2016

View的学习案例(自定义StepView)

1、效果图:

2、代码:

package extra.view;

import extra.util.L;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.drawable.GradientDrawable;

import android.util.AttributeSe......

October 29, 2016

流式布局FlowLayout

package extra.view;

import android.content.Context;

import android.util.AttributeSet;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import java.util.ArrayList;

import java.util.List;

public class FlowLayout extends ViewGroup

{

private static final String TA......