以下是我写的源码,麻烦大家花一点时间看看为什么会没有滚动效果呢public class BapsDistance extends LinearLayout {
private Scroller mScroller;
private int startX;
private int startY;
private int moveX = 103;
private int moveY = 103; public BapsDistance(Context context) {
this(context, null);
// TODO Auto-generated constructor stub
} public BapsDistance(Context context, AttributeSet attrs) {
super(context, attrs);
mScroller = new Scroller(context);
} @Override
public void computeScroll() {
// TODO Auto-generated method stub
if (mScroller.computeScrollOffset()) {
scrollTo(0, mScroller.getCurrY());
postInvalidate();
}
} @Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float rawY = event.getRawY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (rawY > 0 && rawY < 75) {
up();
return false;
} else if (rawY > 178 && rawY < 253) {
down();
return false;
}
break;
}
return super.onTouchEvent(event);
} public void down() {
if (startY < 720) {
mScroller.startScroll(startX, startY, moveX, moveY);
startY += 103;
startX += 103;
}
} public void up() {
if (startY > 0) {
mScroller.startScroll(startX, startY, -moveX, -moveY);
startY -= 103;
startX -= 103;
}
}
}
private Scroller mScroller;
private int startX;
private int startY;
private int moveX = 103;
private int moveY = 103; public BapsDistance(Context context) {
this(context, null);
// TODO Auto-generated constructor stub
} public BapsDistance(Context context, AttributeSet attrs) {
super(context, attrs);
mScroller = new Scroller(context);
} @Override
public void computeScroll() {
// TODO Auto-generated method stub
if (mScroller.computeScrollOffset()) {
scrollTo(0, mScroller.getCurrY());
postInvalidate();
}
} @Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float rawY = event.getRawY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (rawY > 0 && rawY < 75) {
up();
return false;
} else if (rawY > 178 && rawY < 253) {
down();
return false;
}
break;
}
return super.onTouchEvent(event);
} public void down() {
if (startY < 720) {
mScroller.startScroll(startX, startY, moveX, moveY);
startY += 103;
startX += 103;
}
} public void up() {
if (startY > 0) {
mScroller.startScroll(startX, startY, -moveX, -moveY);
startY -= 103;
startX -= 103;
}
}
}
解决方案 »
- 各位路过的神仙佛祖们,悟空有一问题实在不解,恳求神仙们赐教一二。想用这个setBackgroundResource引用背景的XML文件,无效果啊。
- android soap2协议访问webservice的问题
- listview头部的图,赋值出错,在线等
- listactivity怎么循环取值
- 我执行adb shell显示一大堆内容
- 读取多种语言的string.xml
- Socket长连接问题
- 关于Activity和fragment的标题的疑问
- 安卓关于变量中的16进制字符串转换成10进制字符串的问题
- 谈谈你对线程的理解以及开启线程的方式?最好有线程的实际运用?
- listview布局
- 为什么ArrayList的add函数不仅增加一个数据,还把先前加的记录都改为和新加的数据?
if (startY > 0) {
mScroller.startScroll(startX, startY, -moveX, -moveY);
startY -= 103;
startX -= 103;
postInvalidate(); //加上这句试试!!1
}
}