标签:android style blog http io ar color 使用 sp
我们经常要做一些效果,比如,点击之后的动画,随着手指的移动而移动。那么它们如何实现的呢?我们直到,view的自动移动,我们可以设置动画,比如之前写的Fragment的进入与弹出动画:https://github.com/nuptboyzhb/FragmentAnimationDemo 那么,我们如何是一个View随着手指的移动而移动呢?我们为view添加onTouch事件,获取移动过程中,手指相对屏幕的位置信息:[code]
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
moveViewWithFinger(view, event.getRawX(), event.getRawY());
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}/**
* 设置View的布局属性,使得view随着手指移动 注意:view所在的布局必须使用RelativeLayout 而且不得设置居中等样式
*
* @param view
* @param rawX
* @param rawY
*/
private void moveViewWithFinger(View view, float rawX, float rawY) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view
.getLayoutParams();
params.leftMargin = (int) rawX - ivMove.getWidth() / 2;
params.topMargin = (int) rawY - topTitleHeight - ivMove.getHeight() / 2;
view.setLayoutParams(params);
}/**
* 通过layout方法,移动view
* 优点:对view所在的布局,要求不苛刻,不要是RelativeLayout,而且可以修改view的大小
*
* @param view
* @param rawX
* @param rawY
*/
private void moveViewByLayout(View view, int rawX, int rawY) {
int left = rawX - ivMove.getWidth() / 2;
int top = rawY - topTitleHeight - ivMove.getHeight() / 2;
int width = left + view.getWidth();
int height = top + view.getHeight();
view.layout(left, top, width, height);
}-------------------------------------------------------------------
更多交流,Android开发联盟QQ群:272209595
标签:android style blog http io ar color 使用 sp
原文地址:http://blog.csdn.net/nupt123456789/article/details/41825597