玩微博的时候发现一个功能,就是点击微博列表进入详细页,在详细页滑动页面就可以返回到上页,个人体验过后感觉还不错,于是查了下资料完成了这个功能。
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); } }