public class TestScroll extends SurfaceView implements Callback{
Scroller mScroller; private SurfaceHolder holder;
public TestScroll(Context context, AttributeSet attrs) {
super(context, attrs);
holder=this.getHolder();
holder.addCallback( this);
mScroller= new Scroller(context);
// TODO Auto-generated constructor stub
} @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
} @Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
} @Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
abortAnimation();
break; case MotionEvent.ACTION_MOVE:
break; case MotionEvent.ACTION_UP:
startAnimation(1200);
break; default:
break;
}
return true;
}
public void computeScroll() {
Log.i("computeScroll...", "|"+mScroller.isFinished());
super.computeScroll();
if (mScroller.computeScrollOffset()) {
float x = mScroller.getCurrX();
float y = mScroller.getCurrY(); }
} private void startAnimation(int delayMillis) {
int dx, dy;
// dx 水平方向滑动的距离,负值会使滚动向左滚动
// dy 垂直方向滑动的距离,负值会使滚动向上滚动
Log.i("computeScroll1...", "|"+mScroller.isFinished());
mScroller.startScroll((int)0 , (int)0, -50, -10,
delayMillis); Log.i("computeScroll2...", "|"+mScroller.isFinished());
} public void abortAnimation() {
if (!mScroller.isFinished()) {
mScroller.abortAnimation();
}
}
}
Scroller mScroller; private SurfaceHolder holder;
public TestScroll(Context context, AttributeSet attrs) {
super(context, attrs);
holder=this.getHolder();
holder.addCallback( this);
mScroller= new Scroller(context);
// TODO Auto-generated constructor stub
} @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
} @Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
} @Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
abortAnimation();
break; case MotionEvent.ACTION_MOVE:
break; case MotionEvent.ACTION_UP:
startAnimation(1200);
break; default:
break;
}
return true;
}
public void computeScroll() {
Log.i("computeScroll...", "|"+mScroller.isFinished());
super.computeScroll();
if (mScroller.computeScrollOffset()) {
float x = mScroller.getCurrX();
float y = mScroller.getCurrY(); }
} private void startAnimation(int delayMillis) {
int dx, dy;
// dx 水平方向滑动的距离,负值会使滚动向左滚动
// dy 垂直方向滑动的距离,负值会使滚动向上滚动
Log.i("computeScroll1...", "|"+mScroller.isFinished());
mScroller.startScroll((int)0 , (int)0, -50, -10,
delayMillis); Log.i("computeScroll2...", "|"+mScroller.isFinished());
} public void abortAnimation() {
if (!mScroller.isFinished()) {
mScroller.abortAnimation();
}
}
}
解决方案 »
- ListView和Button在一起的时候的一个问题
- 手机adb devices 显示offline
- 新建socket连接没有响应
- 推荐一款适合android开发者使用的手机
- 【系列问题】android关闭Activity后,系统不响应点击事件等
- listview.setSelection(1)失效的问题
- 关于ViewPager实现多页面,子布局内事件处理的问题
- Canvas.drawText 怎么输出是空心字?
- android app widget中使用自定义view
- startActivity()和sendBroadcast()的区别是啥???
- android通过无线局域网访问pc机上tomcat服务器的资源
- 请教同时连接两台设备的问题
postInvalidate();
每次按下移动过程中刷新下view就可以了,不知道什么原因,求大神解释