/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.njt.ui * 修改记录: * 日期 作者 内容 * ============================================================= * 2013-7-30 liyue * ============================================================*/ package com.jiuqi.njt.ui; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.webkit.CookieManager; import android.webkit.DownloadListener; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import com.jiuqi.mobile.nigo.comeclose.bean.app.news.NoticeNewsBean; import com.jiuqi.njt.R; import com.jiuqi.njt.model.CModuleBean; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.UIUtil; import com.jiuqi.njt.widget.WaitPageWebView; /** * <p> * 农信网功能模块 * </p> * * <p> * Copyright: 版权所有 (c)<br> * Company: 久其 * </p> * * @author liyue * @version 2013-7-30 */ public class NxwModulerActivity extends Activity { private FrameLayout webviewLayout; private WebView webview; private Button btnProvince; private String url; // private GestureDetector gestureDetector; String title = ""; private int position; private ArrayList<NoticeNewsBean> newslist; private boolean hasNext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); doinit(); } private void doinit() { initParam(); initWidgets(); initListeners(); initUI(); } private void initParam() { CModuleBean cBean = (CModuleBean) getIntent().getSerializableExtra( Constants.PARAM_MODULEBEAN); if (cBean != null) { switch (cBean.getModuleFlag()) { case njhw: if (TextUtils.isEmpty(getIntent().getStringExtra( Constants.PARAM_TITLE))) { if (null == getIntent().getSerializableExtra( Constants.PARAM_MODULEBEAN)) { title = "扫一扫"; } else { title = "农机化网"; } } else { title = "农机化网"; } hasNext = true; url = "file:///android_asset/index.html"; break; case sjkz: if (TextUtils.isEmpty(getIntent().getStringExtra( Constants.PARAM_TITLE))) { if (null == getIntent().getSerializableExtra( Constants.PARAM_MODULEBEAN)) { title = ""; } else { title = "手机酷站"; } } else { title = "手机酷站"; } url = "http://m.hao123.com"; break; default: break; } } else { url = getIntent().getStringExtra(Constants.PARAM_URL); title = getIntent().getStringExtra(Constants.PARAM_TITLE); newslist = (ArrayList<NoticeNewsBean>) getIntent() .getSerializableExtra("newslist"); hasNext = getIntent().getBooleanExtra("hasNext", false); position = getIntent().getIntExtra("position", -1); } } private void initWidgets() { // String title = TextUtils.isEmpty(getIntent().getStringExtra( // Constants.PARAM_TITLE)) ? "" : getIntent().getStringExtra( // Constants.PARAM_TITLE); String btnLeftTitle = TextUtils.isEmpty(getIntent().getStringExtra( Constants.PARAM_BTNLEFT_TITLE)) ? Constants.MAINPAGE_TITLE_TEXT : getIntent().getStringExtra(Constants.PARAM_BTNLEFT_TITLE); setContentView(R.layout.nxw_moduler); View rlTitleBar = findViewById(R.id.titleBarStub); if (null != getIntent().getStringExtra(Constants.PARAM_TITLE)) { if (title.equals("扫一扫")) { TitleBarUtil.createTitleBar(this, rlTitleBar, title, Constants.BTN_BACK_TEXT, new OnClickListener() { @Override public void onClick(View v) { NxwModulerActivity.this.finish(); } }); } } else { TitleBarUtil.createTitleBar(this, rlTitleBar, title, Constants.BTN_BACK_TEXT, new OnClickListener() { @Override public void onClick(View v) { NxwModulerActivity.this.finish(); } }, btnLeftTitle, new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(NxwModulerActivity.this, NjtMainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); NxwModulerActivity.this.finish(); } }); } webviewLayout = (FrameLayout) findViewById(R.id.webview); webview = new WaitPageWebView(NxwModulerActivity.this, null); btnProvince = (Button) findViewById(R.id.btnProvince); // if(hasNext){ // gestureDetector = new GestureDetector(NxwModulerActivity.this); // } } // // // ---------begin触摸屏监听和手势监听的方法------------------------------------------------------- // // public boolean onTouch(View v, MotionEvent event) { // // gestureDetector.onTouchEvent(event);// 将触摸屏事件传入手势事件 // //请求焦点 // webview.requestFocus(); // return false; // } // // public boolean onDown(MotionEvent e) { // return true; // } // // public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, // float velocityY) { // // float scale = getResources().getDisplayMetrics().density; // int FLINGTHRESHOLD = (int) (20.0f * scale + 0.5f); // float vx = Math.abs(velocityX);// 取其绝对值 // float vy = Math.abs(velocityY); // //----begin设置浮动框的弹出和收回-------------------- // //列表页支持上下滑动翻页,内容页支持左右滑动 // // if (vy > vx) { // // // // if (velocityY > 0) {//设置弹出,向下滑动 // // webview.loadUrl("javascript:forwardPage()"); // // UIUtil.showMsg(NxwModulerActivity.this, "向下滑动,上一页"); // // } else if (velocityY < 0) {//设置收回,向上滑动 // // webview.loadUrl("javascript:nextPage()"); // // UIUtil.showMsg(NxwModulerActivity.this, "向上滑动,下一页"); // // } // // } // if(vx - vy >FLINGTHRESHOLD){ // if(newslist!=null && newslist.size()>1){ // if(velocityX>0){//前一页 // // UIUtil.showMsg(NxwModulerActivity.this, "向左滑动,上条"); // toForward(); // }else if(velocityX<0){//后一页 // // UIUtil.showMsg(NxwModulerActivity.this, "向右滑动,下条"); // toNext(); // } // }else{ //没有更多内容,返回到列表 // NxwModulerActivity.this.finish(); // } // } // //-----end设置浮动框的弹出和收回--------------------------------- // //-----begin设置左右滑动翻页----------------------- // //-----end设置左右滑动翻页------------------------ // return false; // } private void initListeners() { // 点击后退按钮,让WebView后退一页(也可以覆写Activity的onKeyDown方法) webview.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { // if (keyCode == KeyEvent.KEYCODE_BACK && // webview.canGoBack()) { // 表示按返回键时的操作 // webview.goBack(); // 后退 // return true; // 已处理 // } else if (keyCode == KeyEvent.KEYCODE_BACK) { NxwModulerActivity.this.finish(); // 清除缓存 webview.removeAllViews(); webview.clearCache(true); CookieManager.getInstance().removeAllCookie(); // } } return false; } }); webview.setOnClickListener(null); btnProvince.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { UIUtil.requestXzqh(NxwModulerActivity.this, null, 1); } }); // webview.setOnTouchListener(this); } private void initUI() { // if (isNum(url)) { // LinearLayout numberLinear = (LinearLayout)findViewById(R.id.numberLinear); // numberLinear.setVisibility(View.VISIBLE); // TextView product_xlh = (TextView)findViewById(R.id.product_xlh); // product_xlh.setText(url); // }else { webview.getSettings().setJavaScriptEnabled(true);// 启用javascript脚本程序 webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);// 支持通过JS打开新窗口 webview.getSettings().setSupportZoom(false);// //支持缩放 // webview.getSettings().setUseWideViewPort(true); //将图片调整到适合webview的大小 // webview.getSettings().setPluginState(PluginState.ON); webview.getSettings().setBuiltInZoomControls(true);// 设置支持缩放 webview.getSettings().setDefaultTextEncodingName("UTF-8"); webview.loadUrl(url); // 加载网络中的index.html. webview.setWebViewClient(new MyWebViewClient()); // 设置滚动条样式这样设置就不会出现右边和下边的滚动条了 // webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webview.setDownloadListener(new MyWebViewDownLoadListener()); // 设置缓存 webview.getSettings().setDomStorageEnabled(true); webview.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);// 设置缓冲大小,我设的是8M String appCacheDir = this.getApplicationContext() .getDir("cache", Context.MODE_PRIVATE).getPath(); webview.getSettings().setAppCachePath(appCacheDir); webview.getSettings().setAllowFileAccess(true); webview.getSettings().setAppCacheEnabled(true); webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webviewLayout.addView(webview); // } } private class MyWebViewDownLoadListener implements DownloadListener { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); finish(); } } private class MyWebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } } // 详情的上一条 private void toForward() { int poi = position - 1; if (poi > -1) { NoticeNewsBean bean = newslist.get(poi); String urlString = Constants.NXW_MODULER_URL_DETAIL_BASE + bean.getGuid(); webview.loadUrl(urlString); position = poi; } else { NxwModulerActivity.this.finish(); } } // 详情下一条 private void toNext() { int poi = position + 1; if (poi < newslist.size()) { NoticeNewsBean bean = newslist.get(poi); String urlString = Constants.NXW_MODULER_URL_DETAIL_BASE + bean.getGuid(); webview.loadUrl(urlString); position = poi; } else { NxwModulerActivity.this.finish(); } } // @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 onScroll(MotionEvent e1, MotionEvent e2, float distanceX, // float distanceY) { // // TODO Auto-generated method stub // return false; // } // // @Override // public void onLongPress(MotionEvent e) { // // TODO Auto-generated method stub // // } /** * 判断字符串为数字还是其他 * * @param str * @return */ public static boolean isNum(String str) { return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); } }