当前位置: 首页 > news >正文

wamp在网站建设中的功能及协作关系深圳网站seo优化公司

wamp在网站建设中的功能及协作关系,深圳网站seo优化公司,虚拟电脑主机平台,怎么制作商城小程序一、View 的简介 View是所有可视化控件的基类#xff0c;我们平时接触的所有的控件#xff0c;比如说TextView,Button 等等都继承于View。View是Android 在视觉上的呈现#xff0c;是界面层控件的一种抽象#xff0c;可以是单个控件也可以是一组控件。 二、坐标系 1、Andro… 一、View 的简介 View是所有可视化控件的基类我们平时接触的所有的控件比如说TextView,Button 等等都继承于View。View是Android 在视觉上的呈现是界面层控件的一种抽象可以是单个控件也可以是一组控件。 二、坐标系 1、Android 坐标系 在Android中屏幕的左上角定点被视为Android坐标系的原点原点向右是X轴正方向原点向下是Y轴正方向。在触控事件中使用 getRawX()、getRawY() 来获取Android 坐标系的坐标也可以称之为绝对坐标。 2、视图View坐标系 视图坐标系是用来描述当前View 和父视图的位置关系的。这里是以父视图的左上角定点为视图坐标系的原点原点向右是X轴正方向原点向下是Y轴正方向。在触控事件中使用getX()、getY() 来获取视图坐标系的坐标也可以称之为相对坐标. 三、View滑动的实现 View 的滑动实现逻辑当触摸事件传到View 时记录下触摸点的坐标手指在移动的时候记下移动后的触摸坐标并算出偏移量然后通过偏移量来修改View 的坐标。 MotionEvent 我们要实现View的滑动要在 onTouchEvent(MotionEvent event)中进行触摸事件的监听,MotionEvent 是触控事件的封装简短的介绍下MotionEvent中封装的事件常量 public static final int ACTION_DOWN 0; //单点触摸按下动作 public static final int ACTION_UP 1; //单点触摸离开动作 public static final int ACTION_MOVE 2; //单点触摸移动动作 public static final int ACTION_CANCEL 3; //触摸动作取消 public staiic final int ACTION_OUTSIDE 4; //触摸动作超出边界 public static final int ACTION_POINTER_DOWN 5; //多点触摸按下动作 public static final int ACTION_POINTER_UP 6; 多点离开动作 1、layout()方法 view进行绘制的时候会调用onLayout()方法来设置显示的位置因此我们同样也可以通过修改View的left、top、right、bottom这四种属性来控制View的坐标 Overridepublic boolean onTouchEvent(MotionEvent event) {// 获取触摸点的x,yint x (int) event.getX();int y (int) event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 记录触摸点坐标lastX x;lastY y;break;case MotionEvent.ACTION_MOVE:// 计算偏移量int moveX x - lastX;int moveY y - lastY;// 更改位置layout(getLeft() moveX, getTop() moveY,getRight() moveX, getBottom() moveY);break;}return true;} 2、offsetLeftAndRight()和offsetTopAndBottom 传入偏移量后这两个方法就是对View左右、上下移动的操作。 Overridepublic boolean onTouchEvent(MotionEvent event) {// 获取触摸点的x,yint x (int) event.getX();int y (int) event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 记录触摸点坐标lastX x;lastY y;break;case MotionEvent.ACTION_MOVE:// 计算偏移量int moveX x - lastX;int moveY y - lastY;// 更改位置offsetLeftAndRight(moveX);offsetTopAndBottom(moveY);break;}return true;} 3、LayoutParams LayoutParams保存了View的布局参数所以我们可以改变LayoutParams来动态的改变布局的位置来达到滑动的效果。 Overridepublic boolean onTouchEvent(MotionEvent event) {// 获取触摸点的x,yint x (int) event.getX();int y (int) event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 记录触摸点坐标lastX x;lastY y;break;case MotionEvent.ACTION_MOVE:// 计算偏移量int moveX x - lastX;int moveY y - lastY;// 更改位置LinearLayout.LayoutParams params (LinearLayout.LayoutParams) getLayoutParams();params.leftMargin getLeft() moveX;params.topMargin getTop() moveY;setLayoutParams(params);break;}return true;} 其实LayoutParams 完全可以配合 xml 中的layout_width、layout_marginLeft 等等这些前面带layout_ 的属性去理解设置LayoutParams 各个参数的过程就是动态设置xml中带layout_ 各个属性的过程。关于LayoutParams 的详细分析可以参照这位大神写的博客 自定义控件知识储备-LayoutParams的那些事写的很透彻完全被圈粉。 4、ScrollTo 和 scrollBy scollTo(x,y)表示移动到一个具体的坐标点而scollBy(dx,dy)则表示移动的增量为dx、dy。查看scollBy()源码最终也是要调用scollTo的举个例子说明下scollBy是怎样移动的 我们都知道画布的大小是无限大的而坐标系是基于屏幕的左上角为原点的所以屏幕中的控件的Android 坐标是4050,当我们执行scrollBy(30,30) 的时候按照字面意思这个控件的位置应该会出现在当前红色屏幕的右下方可是事实上却出现在了屏幕的左上方。这是因为当执行scrollBy()方法的时候我们的屏幕会沿着X轴正方向平移30向Y轴正方向平移30也就是屏幕向右下方平移了此时红色的位置就是当前屏幕的位置。当执行完ScrollBy 以后坐标系就会继续基于屏幕的左上角为原点所以此时的屏幕中的控件的Android坐标为1020。所以当我们调用scrollBy 方法的时候要设置值为负数才能得到自己想要的移动效果。 scollTo、scollBy移动的是View的内容如果在ViewGroup中使用则是移动他所有的子View,这点要特别注意。 Overridepublic boolean onTouchEvent(MotionEvent event) {// 获取触摸点的x,yint x (int) event.getX();int y (int) event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 记录触摸点坐标lastX x;lastY y;break;case MotionEvent.ACTION_MOVE:// 计算偏移量int moveX x - lastX;int moveY y - lastY;// 更改位置((View) getParent()).scrollBy(-moveX, -moveY);break;}return true;} 5、Scroller 我们用scollTo/scollBy方法来进行滑动时这个过程是瞬间完成的所以用户体验不大好。这里我们可以使用Scroller来实现有过度效果的滑动这个过程不是瞬间完成的而是在一定的时间间隔完成的。Scroller本身是不能实现View的滑动的它需要配合View的computeScroll()方法才能弹性滑动的效果。Scroller的基本用法其实还是比较简单的主要可以分为以下几个步骤 1. 创建Scroller的实例 2. 调用startScroll()方法来初始化滚动数据并刷新界面 3. 重写computeScroll()方法并在其内部完成平滑滚动的逻辑 public class ScrollerView extends View {private Scroller mScroller;public ScrollerView(Context context) {super(context);}public ScrollerView(Context context, AttributeSet attrs) {super(context, attrs);// 初始化ScrollermScroller new Scroller(context);}public ScrollerView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}/*** 系统会在绘制View的时候在draw()方法中调用该方法这个方法中我们调用父类的scrollTo()方法并通过Scroller* 来不断获取当前的滚动值每滑动一小段距离我们就调用invalidate()方法不断的进行重绘重绘就会调用* computeScroll()方法这样我们就通过不断的移动一个小的距离并连贯起来就实现了平滑移动的效果*/Overridepublic void computeScroll() {super.computeScroll();if (mScroller.computeScrollOffset()) {((View) getParent()).scrollTo(mScroller.getCurrX(), mScroller.getCurrY());//通过不断的重绘不断的调用computeScroll方法invalidate();}}/*** 提供2秒内平滑的滑动方法* param destX* param destY*/public void smoothScrollTo(int destX, int destY) {int scrollX getScrollX();int scrollY getScrollY();int deltaX destX - scrollX;int deltaY destY - scrollY;// 在2秒内滑到destX destYmScroller.startScroll(scrollX, scrollY, deltaX, deltaY, 2000);invalidate();} } 结尾以上就是关于View 滑动的相关内容了当然还有属性动画也能控制View 的滑动我准备放到动画篇讲解。下面附上源码https://github.com/smile-sxl/CustomView 转载于:https://www.cnblogs.com/javasxl/p/9397774.html
http://www.huolong8.cn/news/318232/

相关文章:

  • 网站建设有哪些环节婚礼礼服网站界面设计
  • 百度网站查反链wordpress我的世界
  • 重庆网站设计软件怎么看一个网站用什么系统做的
  • 山东网站建设培训驻马店网络
  • 长沙竞价网站建设报价威海网站开发制作
  • 做网站首页图片素材网站建设文字内容
  • 介绍自己做的网站邢台123式的网站怎么做
  • 对网站建设有什么样好的建设意见企业建设官方网站的目的
  • 淘客cms建站系统动漫在线制作网站
  • 非寻服饰网站建设规划书免费空间清理软件
  • 网站建设流程教程中国大数据平台官网
  • seo网站关键词优化1营销型网站建设
  • 如何在建设部网站补录项目青岛做个网站多少钱
  • 合肥论坛网站建设就有公司域名怎么建设网站
  • 公司网站怎么注销重庆长寿网站设计公司哪家专业
  • 网站开发使用的工具类网站建设頰算
  • 一个人可以完成网站建设吗广州安全教育平台视频
  • 自己的电脑做网站云存储商城网站用html做
  • 网站如何认证宿迁司法拍卖房产网
  • 上海行业门户网站建设工具宝塔搭建本地网站
  • 镇江网站关键字优化郑州全平台广告推广
  • 门户网站开发框架如何制作微信网页
  • 网站中竖导航栏怎么做微博图片怎么做外链到网站
  • ppt做的好的有哪些网站有哪些wordpress 文章分页插件
  • 免费注册个人网站企业解决方案
  • 如何建一个个人网站如何做网络投票网站
  • 网站规划与建设重点内容网站首页用什么字体好
  • 个人怎么做一个网站mip wordpress
  • 建站平台 阿里巴巴如何选择合肥网络公司
  • 网站建设地址 北京全球设计师