public boolean onTouchEvent(MotionEvent event) {
//获取到手指处的横坐标和纵坐标
int X = 0, newX = 0;
int Y = 0, newY = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("hahahhaha", "屏幕位置被按下");
X = (int) event.getX();
Y = (int) event.getY();
break;
public boolean onTouchEvent(MotionEvent event) {
//获取到手指处的横坐标和纵坐标
int X = 0, newX = 0;
int Y = 0, newY = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("hahahhaha", "屏幕位置被按下");
X = (int) event.getX();
Y = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
Log.d("hahahhaha", "屏幕位置在移動");
newX = (int) event.getX();
newY = (int) event.getY();
int offsetX = newX - X;
int offsetY = newY - Y;
Log.d("hahaha", "offsetX=" + offsetX + ",offsetY=" + offsetY);
//1.调用layout方法来重新放置它的位置
layout(getLeft()+offsetX, getTop()+offsetY,
getRight()+offsetX , getBottom()+offsetY);
case MotionEvent.ACTION_MOVE:
//计算移动的距离
int offsetX = x - lastX;
int offsetY = y - lastY;
//对left和right进行偏移
offsetLeftAndRight(offsetX);
//对top和bottom进行偏移
offsetTopAndBottom(offsetY);
break;
LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) getLayoutParams(); layoutParams.leftMargin = getLeft() + offsetX; layoutParams.topMargin = getTop() + offsetY; setLayoutParams(layoutParams);
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) getLayoutParams();
layoutParams.leftMargin = getLeft() + offsetX;
layoutParams.topMargin = getTop() + offsetY;
setLayoutParams(layoutParams);
((View)getParent()).scrollBy(-offsetX,-offsetY);
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
mScroller = new Scroller(context);
}
@Override
public void computeScroll() {
super.computeScroll();
if(mScroller.computeScrollOffset()){
((View) getParent()).scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
//通过不断的重绘不断的调用computeScroll方法
invalidate();
}
}
public void smoothScrollTo(int destX,int destY){
int scrollX=getScrollX();
int delta=destX-scrollX;
//1000秒内滑向destX
mScroller.startScroll(scrollX,0,delta,0,2000);
invalidate();
}
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="300" android:duration="1000"/> </set>
mCustomView.setAnimation(AnimationUtils.loadAnimation(this, R.anim.translate));
ObjectAnimator.ofFloat(mCustomView,"translationX",0,300).setDuration(1000).start();
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有