View的基础知识和Scroller的使用
2016-01-07 16:11
253 查看
前言
了解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(); } } }
相关文章推荐
- Facade模式——设计模式学习笔记
- iOS json字段转属性
- ceph源码分析:Admin Socket机制
- Elastic Search increase memory/heap
- 架构之路(五):忘记数据库
- 【leetcode】:Range Sum Query - Immutable
- [leetcode] 24. Swap Nodes in Pairs 解题报告
- BaseActivity--上门啦
- Linux内核笔记--深入理解文件描述符
- 一个人练口语的经典方法
- GCD的顺序下载
- PhotoView的用法
- ESXi开启SNMP服务
- TCL QUHD引行业遐想,中国有望成为显示行业绝对霸主
- JAVA 多态
- js正则
- Intents and Intent Filters全解析
- MySQL导数据
- PullToRefreshListView加载更多定位的解决方法
- CentOS下安装两个或多个Tomcat7