您的位置:首页 > 其它

一款简单的安卓浏览器的设计

2016-03-18 14:11 246 查看
    设计一款简单的安卓手机网页浏览器功能。包含前进、后退和支持JavaScript的网页浏览器。运行程序,单击GO按钮,访问地址栏指定的网站;单击“前进”和“后退”按钮,实现类似于IE浏览器上的前进和后退功能。

     layout布局代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"
>
整体采用线性布局,为垂直分布
<LinearLayout
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
 >

            其中的子线性布局采用水平分布
<Button
   android:id="@+id/forward"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="前进" />

<Button
   android:id="@+id/back"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="后退" />
   
   <EditText
    android:layout_weight="1" 
    android:id="@+id/editText_url" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:text=""
    android:lines="1" />  
         编辑框不允许换行
   <Button 
    android:id="@+id/button_go" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="GO" /> 
</LinearLayout>
子线性布局结束
<WebView android:id="@+id/webView1" 
android:layout_width="fill_parent" 
android:layout_height="0dip" 
android:focusable="false"
android:layout_weight="1.0"
/>

</LinearLayout>

主活动MainActivity代码如下:

    public class MainActivity extends Activity {

    private WebView webView;//声明WebView组件的对象

    private EditText urlText;//声明作为地址栏的EditText对象

    private Button goButton;//声明GO按钮对象

    private long exitTime = 0;//记录标记时间
@Override

    public void onCreate(Bundle savedInstanceState) {

        su
bd6f
per.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        webView=(WebView)findViewById(R.id.webView1);//获取布局管理器中添加的WebView组件

        urlText=(EditText)findViewById(R.id.editText_url);//获取布局管理器中添加的地址栏

        goButton=(Button)findViewById(R.id.button_go);//获取布局管理器中添加的GO按钮

        webView.getSettings().setJavaScriptEnabled(true);//设置JavaScript可用

        webView.setWebChromeClient(new WebChromeClient());//处理JavaScript对话框

        //处理各种通知和请求事件,如果不使用该句代码,将使用内置浏览器访问网页

        webView.setWebViewClient(new WebViewClient());

        Button forward=(Button)findViewById(R.id.forward);//获取布局管理器中添加的“前进”按钮

        forward.setOnClickListener(new OnClickListener() {

   

    public void onClick(View v) {

    // TODO Auto-generated method stub

    webView.goForward();//前进

    }

    });

        Button back=(Button)findViewById(R.id.back);//获取布局管理器中添加的“后退”按钮

        back.setOnClickListener(new OnClickListener() {

   

    public void onClick(View v) {

    // TODO Auto-generated method stub

    webView.goBack();//后退

    }

    });

        urlText.setOnKeyListener(new OnKeyListener() {

       

        public boolean onKey(View v, int keyCode, KeyEvent event) {

        // TODO Auto-generated method stub

        if(keyCode==KeyEvent.KEYCODE_ENTER){//如果为回车键

        if("".equals(urlText.getText().toString())){

        openBrowser();//浏览网页

        return true;

        }else{

        showDialog();//弹出提示对话框

        }

        }

        return false;

        }

        });

        goButton.setOnClickListener(new OnClickListener() {

   

      public void onClick(View v) {

      // TODO Auto-generated method stub

        if(!"".equals(urlText.getText().toString())){

         
 openBrowser();//浏览网页

           }else{

         
 showDialog();

           }

      }

 });

  }//OnCreate结束反括号

      

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.activity_main, menu);

        return true;

    }

    private void openBrowser() {
webView.loadUrl(urlText.getText().toString());//浏览

      Toast.makeText(this, "正在加载:"+urlText.getText().toString(), Toast.LENGTH_SHORT).show();
}

    

    private void showDialog() {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)

      .setTitle("网页浏览器")

      .setMessage("请输入要访问的网址")

      .setPositiveButton("确认", new DialogInterface.OnClickListener() {

   

    public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

    Log.d("WebWiew", "单击确定按钮");

    }

       }).show();
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (KeyEvent.KEYCODE_BACK == keyCode&&event.getAction() == KeyEvent.ACTION_DOWN) { 
  
           // 判断是否在两秒之内连续点击返回键,是则退出,否则不退出  
           if (System.currentTimeMillis() - exitTime > 2000) {  
               Toast.makeText(getApplicationContext(), "再按一次退出程序",  
                       Toast.LENGTH_SHORT).show();  
               // 将系统当前的时间赋值给exitTime  
               exitTime = System.currentTimeMillis();  
           } else {  
               finish();  
           }  
           return true;  
       }  
return super.onKeyDown(keyCode, event);
}

    

    

}

最后,需要在AndroidManifest.xml里面设置能够访问Internet权限

<uses-permission android:name="android.permission.INTERNET"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: