最近研究了一下,下拉刷新的功能。感觉里面的回调函数的思想很好,所以自己也做了一个简单的案例。
案例简单所以直接贴代码。
package com.example.callback;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Callback {
protected static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate");
Leftscroll left = new Leftscroll() {
@Override
public void action() {
Log.i(TAG, "left");
}
};
Rightscroll right = new Rightscroll() {
@Override
public void action() {
Log.i(TAG, "right");
}
};
Upscroll up = new Upscroll() {
@Override
public void action() {
Log.i(TAG, "up");
}
};
Downscroll down = new Downscroll() {
@Override
public void action() {
Log.i(TAG, "down");
}
};
setInterface(left, right, up, down);
}
}
package com.example.callback;
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
public class Callback extends Activity implements OnGestureListener {
public static final String TAG = "Callback";
private GestureDetector gestureDetector;
private Leftscroll left;
private Rightscroll right;
private Upscroll up;
private Downscroll down;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gestureDetector = new GestureDetector(this, this);
}
public void setInterface(Leftscroll left, Rightscroll right, Upscroll up,
Downscroll down) {
this.left = left;
this.right = right;
this.up = up;
this.down = down;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (gestureDetector.onTouchEvent(ev)) {
return true;
}
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e2.getRawX() - e1.getRawX() > getWindowManager()
.getDefaultDisplay().getWidth() / 3
&& Math.abs(e2.getRawY() - e1.getRawY()) < 30) {
right.action();
} else if (e1.getRawX() - e2.getRawX() > getWindowManager()
.getDefaultDisplay().getWidth() / 3
&& Math.abs(e2.getRawY() - e1.getRawY()) < 30) {
left.action();
} else if (e2.getRawY() - e1.getRawY() > getWindowManager()
.getDefaultDisplay().getWidth() / 3
&& Math.abs(e2.getRawX() - e1.getRawX()) < 30) {
down.action();
} else if (e1.getRawY() - e2.getRawY() > getWindowManager()
.getDefaultDisplay().getWidth() / 3
&& Math.abs(e2.getRawX() - e1.getRawX()) < 30) {
up.action();
}
return false;
}
public interface Leftscroll {
void action();
}
public interface Rightscroll {
void action();
}
public interface Upscroll {
void action();
}
public interface Downscroll {
void action();
}
}
实现的功能是,上下左右滑动屏幕调用不同的方法,打印出不同的语句。功能没有价值主要是思想。