zoukankan      html  css  js  c++  java
  • Activity滑动事件

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

    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);
    	}
    }
    
  • 相关阅读:
    AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
    Java中List集合去除重复数据的方法
    java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结
    Spring 中配置log4j日志功能
    log4j配置文件加载方式
    程序中使用log4J打印信息的两种方式
    elasticsearch常用命令
    接私活必备的10个开源项目??
    初识Elasticsearch
    常用在线工具
  • 原文地址:https://www.cnblogs.com/yangcong/p/3449572.html
Copyright © 2011-2022 走看看