/**============================================================
* 版权: 久其软件 版权所有 (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]+))?)$");
}
}