View的基础知识和Scroller的使用

前言

了解View的基础知识是深入学习自定义View的铺垫,下面将介绍一些关于View的概念和一些重要参数,如位置参数。还会介绍Android的坐标系统,和自定义View中弹性滑动常用的Scroller类的使用。

View是什么



View的重要参数



Android的坐标系统

Android中的坐标系分为两种,一绝对坐标系即屏幕坐标,二相对坐标即View相对父容器的坐标。两种坐标系都是以向右为x轴正方向以向下为y轴正方向,绝对坐标系的原点为屏幕左上角,相对坐标系的原点为父容器左上角。



Scroller的使用方法

package com.example.test.view;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import android.widget.Scroller;

public class MovtionView extends LinearLayout {

	private Scroller mScroller;
	private Context mContext;
	private int mTranX;
	private int mTranY;

	public MovtionView(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		mContext = context;
		init();
	}

	public MovtionView(Context context, AttributeSet attrs) {
		this(context, attrs, 0);
	}

	public MovtionView(Context context) {
		this(context, null);
	}

	private void init() {
		mScroller = new Scroller(mContext);
		mTranX = (int) getTranslationX();
		mTranY = (int) getTranslationY();
		setClickable(true);
	}

	public void smoothScollBy(int dx, int dy) {
		mScroller.startScroll(mTranX, mTranY, dx, dy, 2000);
		invalidate();
	}

	@Override
	public void computeScroll() {
		if (mScroller.computeScrollOffset()) {
			setTranslationX(mScroller.getCurrX());
			setTranslationY(mScroller.getCurrY());
			postInvalidate();
		} else {
			mTranX = (int) getTranslationX();
			mTranY = (int) getTranslationY();
		}
	}

}



猜你喜欢

转载自blog.csdn.net/u013038616/article/details/50477120