玩微博的时候发现一个功能,就是点击微博列表进入详细页,在详细页滑动页面就可以返回到上页,个人体验过后感觉还不错,于是查了下资料完成了这个功能。
package com.monsou.KinderGartenMonsou;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnTouchListener;
import com.monsou.KinderGartenMonsou.publicmethod.DahnfoodApplication;
import com.monsou.KinderGartenMonsou.publicmethod.ShowProcessDialog;
public class ShowProductActivity extends Activity implements OnTouchListener,
OnGestureListener {
private WebView main_webview;
ProgressDialog myDialog;
ImageView goback_btn;
TextView textView1;
GestureDetector mGestureDetector;
private static final int FLING_MIN_DISTANCE = 50;
private static final int FLING_MIN_VELOCITY = 0;
LinearLayout ll;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
super.onCreate(savedInstanceState);
super.setContentView(R.layout.show_product);
DahnfoodApplication sysApplication = (DahnfoodApplication) this
.getApplication();
sysApplication.getInstance().addActivity(this);
ll = (LinearLayout) findViewById(R.id.ll);
ll.setOnTouchListener(this);
ll.setLongClickable(true);
mGestureDetector = new GestureDetector(this);
mGestureDetector = new GestureDetector(ShowProductActivity.this);
textView1 = (TextView) findViewById(R.id.textView1);
String text = getIntent().getStringExtra("NAME");
textView1.setText(text);
goback_btn = (ImageView) findViewById(R.id.goback_btn);
goback_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
main_webview = (WebView) this.findViewById(R.id.main_webview);
main_webview.setOnTouchListener(this);
main_webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
ShowProcessDialog.mDialog.dismiss();
}
});
String push_url = getIntent().getStringExtra("url");
loadUrl(push_url);
// Android中Webview自适应屏幕
main_webview.getSettings().setUseWideViewPort(true);
main_webview.getSettings().setLoadWithOverviewMode(true);
WebSettings webSettings = main_webview.getSettings(); // webView:
// 类WebView的实例
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
}
public void loadUrl(String url) {
if (main_webview != null) {
main_webview.loadUrl(url);
// myDialog = ProgressDialog.show(this, null, "页面加载中,请稍后..");
ShowProcessDialog.showRoundProcessDialog(ShowProductActivity.this,
R.layout.loading_process_dialog_anim, true, false);
// 以下设置可以让屏幕不变暗
Window window = ShowProcessDialog.mDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.dimAmount = 0f;
window.setAttributes(lp);
main_webview.reload();
}
}
@Override
public boolean onDown(MotionEvent arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// Fling left
Toast.makeText(this, "向左手势", Toast.LENGTH_SHORT).show();
} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// Fling right
finish();
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
Toast.makeText(this, "向右手势", Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("touch", "touch");
return mGestureDetector.onTouchEvent(event);
}
}