80,361
社区成员
发帖
与我相关
我的任务
分享
public class MyWebView extends WebView {
float downXValue;
long downTime;
private ViewFlipper flipper;
private float lastTouchX, lastTouchY;
private boolean hasMoved = false;
private Activity context;
public MyWebView(Context context, ViewFlipper flipper) {
super(context);
this.context = (Activity) context;
this.flipper = flipper;
this.loadUrl("http://www.baidu.com");
}
public boolean onTouchEvent(MotionEvent evt) {
boolean consumed = super.onTouchEvent(evt);
if (isClickable()) {
switch (evt.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("lxy", "browser ---> down envent");
lastTouchX = evt.getX();
lastTouchY = evt.getY();
downXValue = evt.getX();
downTime = evt.getEventTime();
hasMoved = false;
break;
case MotionEvent.ACTION_MOVE:
hasMoved = moved(evt);
break;
case MotionEvent.ACTION_UP:
float currentX = evt.getX();
long currentTime = evt.getEventTime();
float difference = Math.abs(downXValue - currentX);
long time = currentTime - downTime;
Log.i("Touch Event:", "Distance: " + difference + "px Time: "
+ time + "ms");
/** X轴滑动距离大于100,并且时间小于220ms,并且向X轴右方向滑动 && (time < 220) */
if ((downXValue < currentX)
&& (difference > 100 && (time < 220))) {
/** 跳到上一页 */
this.flipper.setInAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.layout.right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.layout.right_out));
flipper.showPrevious();
Log.d("lxy", "getDisplayedChild() = " + flipper.getDisplayedChild());
context.setTitle(Constant.TITLE_STR[flipper.getDisplayedChild()]);
}
/** X轴滑动距离大于100,并且时间小于220ms,并且向X轴左方向滑动 */
if ((downXValue > currentX) && (difference > 100)
&& (time < 220)) {
/** 跳到下一页 */
this.flipper.setInAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.layout.left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.layout.left_out));
flipper.showNext();
Log.d("lxy", "getDisplayedChild() = " + flipper.getDisplayedChild());
context.setTitle(Constant.TITLE_STR[flipper.getDisplayedChild()]);
}
break;
}
}
return consumed || isClickable();
}
private boolean moved(MotionEvent evt) {
return hasMoved || Math.abs(evt.getX() - lastTouchX) > 10.0
|| Math.abs(evt.getY() - lastTouchY) > 10.0;
}
}
public class SignFlipDemo extends Activity implements OnGestureListener {
/** Called when the activity is first created. */
private static ViewFlipper flipper;
private GestureDetector detector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
detector = new GestureDetector(this);// 分析用户动作
flipper = new ViewFlipper(this);
flipper.setBackgroundColor(Color.WHITE);
flipper.addView(addTextView("step 1", 0));//
flipper.addView(addTextView("step 2", 1));
flipper.addView(addTextView("step 3", 2));
setContentView(flipper);
setTitle(Constant.TITLE_STR[0]);
}
private View addTextView(String text, int i) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setGravity(1);
Drawable dabg;
switch (i) {
case 0:
dabg = this.getResources().getDrawable(R.drawable.videocolumn);
tv.setBackgroundDrawable(dabg);
return tv;
case 1:
dabg = this.getResources().getDrawable(R.drawable.playback);
tv.setBackgroundDrawable(dabg);
return tv;
case 2:
MyWebView webView = new MyWebView(this, flipper);
return webView;
}
return null;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.detector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 60) {
flipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.layout.left_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.layout.left_out));
flipper.showNext();
Log.d("lxy", "getDisplayedChild() = " + flipper.getDisplayedChild());
this.setTitle(Constant.TITLE_STR[flipper.getDisplayedChild()]);
return true;
} else if (e1.getX() - e2.getX() < -60) {
flipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.layout.right_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.layout.right_out));
flipper.showPrevious();
Log.d("lxy", "getDisplayedChild() = " + flipper.getDisplayedChild());
this.setTitle(Constant.TITLE_STR[flipper.getDisplayedChild()]);
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}