java 实现简单浏览器Android开发之快速实现一个简单Web浏览器

Android 开发之快速实现一个简单Web浏览器,当我们使用Adroid手机自带或第三方浏览器浏览网页时,总会看到下图页面的样子,上面是一个地址栏,地址栏下面显示加载进度,加载完成后进入页面内容,带颜色的进度条总是少不了的,那样子看起来也舒服,如何实现自定义手机浏览器功能呢?
当我们使用Android手机自带或第三方浏览器浏览网页时,总会看到下图页面的样子,上面是一个地址栏,地址栏下面显示加载进度,加载完成后进入页面内容,带颜色的进度条总是少不了的,那样子看起来也舒服,如何实现自定义手机浏览器功能呢?步骤阅读工具/原料Android开发工具:AndroidStudio或Eclipse虚拟机或测试手机一、设计简单浏览器的布局1仔细观察百度浏览的效果,地址栏上输入网址,点击“前往”按钮开始加载网址,最后在WebView显示加载的网页内容,使用一个线性布局,布局代码如下:步骤阅读2自定义WebView,命名ProgressWebView,该ProgressWebView的一个特点,加载网页地址的时候,动态显示加载进度,和普通浏览器差不多,代码如下:publicProgressWebView(Contextcontext,AttributeSetattrs){ super(context,attrs); progressbar=newProgressBar(context,null,android.R.attr.progressBarStyleHorizontal); progressbar.setLayoutParams(newLayoutParams(LayoutParams.FILL_PARENT,10,0,0)); Drawabledrawable=context.getResources().getDrawable(R.drawable.progress_bar_states);    progressbar.setProgressDrawable(drawable); addView(progressbar); setWebViewClient(newWebViewClient(){}); setWebChromeClient(newWebChromeClient()); //是否支持缩放 getSettings().setSupportZoom(true); getSettings().setBuiltInZoomControls(true);}步骤阅读3在这个构造方法里面,自定义进度条属性,设置为水平进度条,进度条的高度,同时定义进度条状态颜色,写在progress_bar_states.xml文件中,代码如下:      步骤阅读4在这个xml文件中,可以按照自己喜好设置加载颜色,然后把进度条视图添加到WebView视图中,在使用ProgressWebView加载HTML网页,可以像360浏览器一样显示加载进度。setWebChromeClient(newWebChromeClient())用于加载请求的网页,支持进度条、js等效果,这里定义一个内部类WebChromeClient,代码如下:publicclassWebChromeClientextendsandroid.webkit.WebChromeClient{@OverridepublicvoidonProgressChanged(WebViewview,intnewProgress){  super.onProgressChanged(view,newProgress);  if(newProgress==100){ progressbar.setVisibility(GONE);   }else{ if(progressbar.getVisibility()==GONE) progressbar.setVisibility(VISIBLE); progressbar.setProgress(newProgress); }    }}步骤阅读END二、创建ProgressWebActivity类文件1创建ProgressWebActivity.java类文件,获取布局文件的EditText、Button、WebView控件Id,控件初始化@OverrideprotectedvoidonCreate(BundlesavedInstanceState){  super.onCreate(savedInstanceState); setContentView(R.layout.activity_baseweb);     initView();     initData();}privatevoidinitView(){    initTitleView(getWindow().getDecorView(),R.string.load_news_detail_info,ProgressWebActivity.this);    mWebView=(ProgressWebView)findViewById(R.id.baseweb_webview);    mWebView.getSettings().setJavaScriptEnabled(true);}步骤阅读2获取EditText控件输入的网页地址,并判断是否输入正确是http或https开头;给Button设置监听器,onClick()方法中调用WebView的loadUrl方法加载网页protectedvoidinitData(){ Intentintent=getIntent(); Bundlebundle=intent.getExtras(); Stringurl=bundle.getString(\"url\"); if(!TextUtils.isEmpty(url)&&!TextUtils.isEmpty(title)){   mWebView.loadUrl(url);    }}@OverrideprotectedvoidonDestroy(){   super.onDestroy();   mWebView=null;  }}步骤阅读3打开虚拟机或测试手机,运行Android简单Web浏览器项目,initData方法获取上一个Activity传递过来的Intent数据,取出网页URL,判断连接是否为空,如果不为空,则使用自定义的ProgressWebView的loadUrl()方法加载,这个时候我们将会在APP端看到如下效果:步骤阅读END注意事项显示WebView加载进度,需要调用setWebChromeClient方法,重写onProgressChanged方法检查EditText输入是否一个正确的网址,否则报错

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/j1wRPPm6e4.html

(0)

相关推荐