2. 雪花视图
雪花视图, DELAY时间重绘, 绘制NUM_SNOWFLAKES个雪花.
初始化在onSizeChanged中进行, 绘制在onDraw中进行.
/**
* 雪花视图, DELAY时间重绘, 绘制NUM_SNOWFLAKES个雪花
* <p/>
* Created by wangchenlong on 16/1/24.
*/
public class SnowView extends View {
private static final int NUM_SNOWFLAKES = 150; // 雪花数量
private static final int DELAY = 5; // 延迟
private SnowFlake[] mSnowFlakes; // 雪花
public SnowView(Context context) {
super(context);
}
public SnowView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SnowView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(21)
public SnowView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (w != oldw || h != oldh) {
initSnow(w, h);
}
}
private void initSnow(int width, int height) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); // 抗锯齿
paint.setColor(Color.WHITE); // 白色雪花
paint.setStyle(Paint.Style.FILL); // 填充;
mSnowFlakes = new SnowFlake[NUM_SNOWFLAKES];
for (int i = 0; i < NUM_SNOWFLAKES; ++i) {
mSnowFlakes[i] = SnowFlake.create(width, height, paint);
}
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (SnowFlake s : mSnowFlakes) {
s.draw(canvas);
}
// 隔一段时间重绘一次, 动画效果
getHandler().postDelayed(runnable, DELAY);
}
// 重绘线程
private Runnable runnable = new Runnable() {
@Override
public void run() {
invalidate();
}
};
}
使用getHandler().postDelayed(runnable, DELAY);刷新页面.
3. 全屏布局
全屏布局
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CollapsingToolbarLayout xmlns:android="http://www.easck.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:contentDescription="@null" android:scaleType="centerCrop" android:src="@drawable/christmas"/> <me.chunyu.spike.wcl_snowfall_demo.views.SnowView android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout> </android.support.design.widget.CollapsingToolbarLayout>










