如何实现View的移动
2016-04-20 10:55
330 查看
先上一张图总结一下
![](https://img-blog.csdn.net/20160420102008828)
6.让view滑动总共有几种方式,分别要注意什么?都适用于那些场景?
答:总共有三种:
a:scrollto,scrollby。这种是最简单的,但是只能滑动view的内容 不可以滑动view本身。
b:动画。动画可以滑动view内容,但是注意非属性动画 就如我们问题5说的内容 会影响到交互,使用的时候要多注意。不过多数复杂的滑动效果都是属性动画来完成的,属于大杀器级别、
c:改变布局参数。这种最好理解了,无非是动态的通过java代码来修改 margin等view的参数罢了。不过用的比较少。我本人不怎么用这种方法。
public class MyTextView extends TextView { private static final String TAG = "onTouchEvent"; public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: //第一种 getLeft等值改变 // layout(getLeft() + 200, getTop() + 400, getRight() + 200, getBottom() + 400); //第二种 改变 // offsetLeftAndRight(200); // offsetTopAndBottom(400); //第三种 不改变 // ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) getLayoutParams(); // layoutParams.leftMargin = getLeft()+200; // layoutParams.topMargin = getTop()+ 400; // setLayoutParams(layoutParams); //第四种 不改变 // ((View)getParent()).scrollTo(-200,-400); //移动计算值 = 最开始点坐标 - 最后移动到的坐标 // 原因是因为最终会调用这个方法 // —— invalidateInternal(l - scrollX, t - scrollY, r - scrollX, b - scrollY, true, false); // 其中l,t,r,b为原来坐标点,scrollX,scrollY为目标坐标点,只有当目标坐标点值是负数时,移动到的位置才为正数! // 例如scrollTo ,我们要从(0,0)移动到(200,400)这个点,根据上面的公式可知为负值 //第五种 改变 ((View)getParent()).scrollBy(-200,-400);// // TestTextView本身是View,scrollTo、scrollBy移动的都是View的Content,如果不加的话,使用的效果则是TestTextView的文字位置变化,而TestTextView本身不会变化。 // 如果在ViewGroup中使用scrollTo、scrollBy,则移动的是ViewGroup中的View.我们这里需要让TestTextView移动,则需要先 ((View)getParent()),然后再((View)getParent()).scrollTo… //第六种 动画 不改变 AnimatorSet set = new AnimatorSet(); set.playTogether(ObjectAnimator.ofFloat(this,"translationX",200), ObjectAnimator.ofFloat(this,"translationY",400)); set.start(); //第七种 位移动画 不改变 TranslateAnimation anim = new TranslateAnimation(0,200,0,400); anim.setFillAfter(true); startAnimation(anim); Log.d(TAG, "移动后: getLeft: "+getLeft()+",getTop: "+getTop()+"," + "getRight: "+getRight()+",getBottom: "+getBottom()); break; } return true; } }
6.让view滑动总共有几种方式,分别要注意什么?都适用于那些场景?
答:总共有三种:
a:scrollto,scrollby。这种是最简单的,但是只能滑动view的内容 不可以滑动view本身。
b:动画。动画可以滑动view内容,但是注意非属性动画 就如我们问题5说的内容 会影响到交互,使用的时候要多注意。不过多数复杂的滑动效果都是属性动画来完成的,属于大杀器级别、
c:改变布局参数。这种最好理解了,无非是动态的通过java代码来修改 margin等view的参数罢了。不过用的比较少。我本人不怎么用这种方法。
相关文章推荐
- 使用Git上传本地项目到oschina
- JVM-classloader深入分析
- iOS中UIWebView的使用详解
- js的移位运算以及二进制补码反码的计算方法
- WPF从入门到放弃系列第二章 XAML
- C#简易播放器(基于开源VLC)
- Trie树 [Hihocoder]
- TCP滑动窗口
- Golang在windows下交叉编译linux程序
- cuda二维数组内存分配和数据拷贝
- iOS开发中字符串的截取
- unity 获取当前键盘按键
- linux常用命令---All
- 99. Recover Binary Search Tree -- 找到二叉排序树中交换过位置的两个节点
- UITabBarController自定义转场动画
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(Canny边缘检测)
- 文件上传C:\fakepath\解决方案
- 在项目里交叉使用Swift和OC
- Qt- “信号-槽”机制之连接类型 部分文档翻译
- 练习2————1002