18、登录问题页面:WebViewActivity
2016-01-28 19:19
405 查看
在登录页面的右下角有一个“登录遇到问题?”的按钮,点击后显示登录问题页面:
这是加载了一个网页,WebViewActivity作为一个通用的网页显示页面,做的蛮不错,以后可以直接拿来用:
具体调用方法:
这是加载了一个网页,WebViewActivity作为一个通用的网页显示页面,做的蛮不错,以后可以直接拿来用:
package com.example.wechat.view; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; import android.os.CountDownTimer; import android.text.TextUtils; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import com.example.wechat.R; import com.example.wechat.common.Constants; import com.example.wechat.common.Utils; import java.lang.reflect.InvocationTargetException; public class WebViewActivityextends BaseActivity { private ImageView img_back; private TextView txt_title; private WebView mWebView; private ProgressBar progressbar; private String strurl = ""; private MyTimer mTimer; private int progress = 0; @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_web); super.onCreate(savedInstanceState); } @Override protected void onResume() { super.onResume(); try { mWebView.getClass().getMethod("onResume").invoke(mWebView, (Object[]) null); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } @Override public void onPause() { super.onPause(); try { mWebView.getClass().getMethod("onPause").invoke(mWebView, (Object[]) null); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } @Override protected void initControl() { txt_title = (TextView) findViewById(R.id.txt_title); img_back = (ImageView) findViewById(R.id.img_back); img_back.setVisibility(View.VISIBLE); mWebView = (WebView) findViewById(R.id.mwebview); progressbar = (ProgressBar) findViewById(R.id.progressbar); } @SuppressLint("SetJavaScriptEnabled") @Override protected void initView() { Bundle bundle = getIntent().getExtras(); if (bundle != null && bundle.getString(Constants.URL) != null) { strurl = ""; strurl = bundle.getString(Constants.URL); } if (bundle != null && bundle.getString(Constants.Title) != null) { txt_title.setText(bundle.getString(Constants.Title)); } if (TextUtils.isEmpty(strurl) == false) { mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new WeiboWebViewClient()); mWebView.setWebChromeClient(new WebChromeClient()); if (Build.VERSION.SDK_INT >= 19) { mWebView.getSettings().setLoadsImagesAutomatically(true); } else { mWebView.getSettings().setLoadsImagesAutomatically(false); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } mWebView.loadUrl(strurl); } } private class WeiboWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null); // TODO 显示错误404 } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); if (mTimer == null) { mTimer = new MyTimer(15000, 50); } mTimer.start(); progressbar.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!mWebView.getSettings().getLoadsImagesAutomatically()) { mWebView.getSettings().setLoadsImagesAutomatically(true); } mTimer.cancel(); progress = 0; progressbar.setProgress(100); progressbar.setVisibility(View.GONE); } } @Override protected void initData() { } /* 定义一个倒计时的内部类 */ private class MyTimer extends CountDownTimer { public MyTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onFinish() { progress = 100; progressbar.setVisibility(View.GONE); } @Override public void onTick(long millisUntilFinished) { if (progress == 100) { progressbar.setVisibility(View.GONE); } else { progressbar.setProgress(progress++); } } } @Override protected void setListener() { img_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mWebView.canGoBack()) { mWebView.goBack(); } else { Utils.finish(WebViewActivity.this); } } }); } }
具体调用方法:
Utils.start_Activity(LoginActivity.this, WebViewActivity.class, new BasicNameValuePair(Constants.Title, "帮助"), new BasicNameValuePair(Constants.URL, "http://weixin.qq.com/"));
也就是设置一个标题和url地址即可。
/** * 打开Activity * * @param activity * @param cls * @param name */ public static void start_Activity(Activity activity, Class<?> cls, BasicNameValuePair... name) { Intent intent = new Intent(); intent.setClass(activity, cls); if (name != null) for (int i = 0; i < name.length; i++) { intent.putExtra(name[i].getName(), name[i].getValue()); } activity.startActivity(intent); activity.overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out); }
/** * 关闭 Activity * * @param activity */ public static void finish(Activity activity) { activity.finish(); activity.overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out); }
相关文章推荐
- swift学习三
- IOS smartWatch软件设计
- 理解AppDomain和AppPool
- Dribbble的OAuth2.0认证【Dribbble客户端】
- Android InsertHelper解决插入速度慢的问题
- iOS 之 多线程一
- Android Studio Fragment问题与解决
- Swift闭包
- 微信企业号开发(6)--发送消息
- Swift cell与Label的自适应高度
- NSClassFromString那点事
- Android退出应用最优雅的方式
- android适配器SimpleCursorAdapter的使用以及最后一个参数的作用
- Android Barrier
- Android 日常
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
- Android Studio 提高代码质量——Inspact Code
- 【开源中国Android客户端】源码分析(一) 启动
- Swift cell滑动数据丢失,图片重叠,cell重用问题的解决
- Xcode7.1与iOS9出现的异常bug