首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

用JAVA生成ANDORID一个壳,运用中嵌入一个网页即可

2012-07-04 
用JAVA生成ANDORID一个壳,应用中嵌入一个网页即可应用经常出现闪屏,一直没有解决,正好jquery mobile更新了

用JAVA生成ANDORID一个壳,应用中嵌入一个网页即可
应用经常出现闪屏,一直没有解决,正好jquery mobile更新了1.1.0版本,升级后这个问题被弱化了
===========================================

之前作的网站总是出现进程意外,强制关闭。后来经过检查是线程问题,最后关闭线程就解决了问题


===========================================

安卓版本检查,传统方式是用户点击软件“检查版本”时来手动检查,这种方式OUT了。因为这样会有大部分人不会来检查版本,导致产品不敢大进步。

现在爱就是幸福网移动版采用服务器统一检查版本,发现有版本时提示用户,这个提示时间,提示内容都可以在服务器上操作。

因为我们用提只是安卓的一个壳即WebView,这时我们只需要加载的URL后加一个参数即可如
http://m.ai9475.com/?version=1.0.101


==========================================
这个WebView,有一问题就是加载时有空白,这时最好的办法是给它加一个背景,同时设置一个为0的透明度,这样用户不会有等的感觉,同时也可以宣传产品品牌。增加用户对产品的认识度

JAVA CODE

       wv=(WebView)findViewById(R.id.wv);    wv .setBackgroundColor(0);    wv .setBackgroundResource(R.drawable.logo);


=========================================
JAVA CODE
package com.tian.sinykk;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.KeyEvent;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.webkit.WebViewClient; public class Androidtest3Activity extends Activity {    /** Called when the activity is first created. */WebView wv;ProgressDialog pd;Handler handler;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        init();//执行初始化函数        loadurl(wv,"http://m.ai9475.com");        handler=new Handler(){        public void handleMessage(Message msg)        {//定义一个Handler,用于处理下载线程与UI间通讯          if (!Thread.currentThread().isInterrupted())          {            switch (msg.what)            {            case 0:            pd.show();//显示进度对话框                    break;            case 1:            pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。            break;            }          }          super.handleMessage(msg);        }        };    }    public void init(){//初始化    wv=(WebView)findViewById(R.id.wv);        wv.getSettings().setJavaScriptEnabled(true);//可用JS        wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上        wv.setWebViewClient(new WebViewClient(){               public boolean shouldOverrideUrlLoading(final WebView view, final String url) {            loadurl(view,url);//载入网页                return true;               }//重写点击动作,用webview载入         });        wv.setWebChromeClient(new WebChromeClient(){        public void onProgressChanged(WebView view,int progress){//载入进度改变而触发              if(progress==100){            handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框            }                   super.onProgressChanged(view, progress);               }           });     pd=new ProgressDialog(Androidtest3Activity.this);        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);        pd.setMessage("数据载入中,请稍候!");    }    public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键        if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {               wv.goBack();               return true;           }else if(keyCode == KeyEvent.KEYCODE_BACK){        ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认        return true;         }           return super.onKeyDown(keyCode, event);       }    public void ConfirmExit(){//退出确认    AlertDialog.Builder ad=new AlertDialog.Builder(Androidtest3Activity.this);    ad.setTitle("退出");    ad.setMessage("是否退出软件?");    ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮@Overridepublic void onClick(DialogInterface dialog, int i) {// TODO Auto-generated method stubAndroidtest3Activity.this.finish();//关闭activity }});    ad.setNegativeButton("否",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int i) {//不退出不用执行任何操作}});    ad.show();//显示对话框    }    public void loadurl(final WebView view,final String url){    new Thread(){        public void run(){        handler.sendEmptyMessage(0);        view.loadUrl(url);//载入网页        }        }.start();    }  }




main.xml
<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout android:orientation="vertical" android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent"  xmlns:android="http://schemas.android.com/apk/res/android">    <WebView android:id="@+id/wv"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:layout_x="0.0dip"    android:layout_y="0.0dip"    android:layout_weight="1.0" /></AbsoluteLayout>



今天又做了些修改,增加了菜单,刷新,分享,退出。同时也增加了加载进度条
package com.tian.sinykk;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.webkit.WebViewClient; public class Androidtest3Activity extends Activity {    /** Called when the activity is first created. */WebView wv;ProgressDialog pd;Handler handler;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        init();//执行初始化函数        loadurl(wv,"http://m.ai9475.com");    }         // 点击Menu时,系统调用当前Activity的onCreateOptionsMenu方法,并传一个实现了一个Menu接口的menu对象供你使用 @Override public boolean onCreateOptionsMenu(Menu menu) { /*  * add()方法的四个参数,依次是:  * 1、组别,如果不分组的话就写Menu.NONE,  * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单  * 3、顺序,那个菜单现在在前面由这个参数的大小决定  * 4、文本,菜单的显示文本  */ menu.add(Menu.NONE, Menu.FIRST + 1, 5, "分享").setIcon( android.R.drawable.ic_menu_share); // setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以 // android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的 menu.add(Menu.NONE, Menu.FIRST + 2, 2, "刷新").setIcon( android.R.drawable.ic_menu_rotate); menu.add(Menu.NONE, Menu.FIRST + 3, 6, "退出").setIcon( android.R.drawable.ic_menu_close_clear_cancel); // return true才会起作用 return true; }  //菜单项被选择事件 @Override public boolean onOptionsItemSelected(MenuItem item) { WebView wv1=(WebView)findViewById(R.id.wv); switch (item.getItemId()) { case Menu.FIRST + 1:     //分享 Intent intent=new Intent(Intent.ACTION_SEND);    intent.setType("text/plain");    intent.putExtra(Intent.EXTRA_SUBJECT,wv1.getTitle());    intent.putExtra(Intent.EXTRA_TEXT, wv1.getTitle()+" 可通过后面网址访问"+wv1.getUrl());     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    startActivity(Intent.createChooser(intent, "分享"));        break; case Menu.FIRST + 2: //刷新wv1.reload(); break; case Menu.FIRST + 3: //退出应用  System.exit(0); break; } return false; }            public void init(){//初始化    wv=(WebView)findViewById(R.id.wv);        wv.getSettings().setJavaScriptEnabled(true);//可用JS        wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上        wv.setWebViewClient(new WebViewClient(){               public boolean shouldOverrideUrlLoading(final WebView view, final String url) {            loadurl(view,url);//载入网页                return true;               }         });                wv.setWebChromeClient(new WebChromeClient() {            public void onProgressChanged(WebView view, int progress) {                setTitle("页面加载中,请稍候..." + progress + "%");                setProgress(progress * 100);                if (progress == 100) {                    setTitle(view.getTitle());                }            }        });            }    public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键        if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {               wv.goBack();               return true;           }else if(keyCode == KeyEvent.KEYCODE_BACK){        ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认        return true;         }           return super.onKeyDown(keyCode, event);       }    public void ConfirmExit(){//退出确认    AlertDialog.Builder ad=new AlertDialog.Builder(Androidtest3Activity.this);    ad.setTitle("退出");    ad.setMessage("是否退出软件?");    ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮@Overridepublic void onClick(DialogInterface dialog, int i) {Androidtest3Activity.this.finish();//关闭activity }});    ad.setNegativeButton("否",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int i) {//不退出不用执行任何操作}});    ad.show();//显示对话框    }    public void loadurl(final WebView view,final String url){    new Thread(){        public void run(){        view.loadUrl(url);//载入网页        }        }.start();    }    /* *//**     * 分享应用     * @param view     *//*    public void onClickShare() {    Intent sendIntent = new Intent();    sendIntent.setAction(Intent.ACTION_SEND);    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");    sendIntent.setType("text/plain");    startActivity(sendIntent);}*/ }


==============================
应用中加了友盟统计,但在运行时报找不到友盟的类,原因是打包时错误,使用如下方式

右键工程,

  Build path,

  java build path,选择libraries

  在右边的按钮中点击“Add Library”

  选择“User library”,点击“下一步”

  点击“User librarys”按钮

  在出现的界面中点击“New..”按钮

  在弹出的界面中随便起一个名字,点击“确定”

  点击“Add jars”按钮选择第三方jar包,点击“确定”完成操作。

  这样的话该jar包会被一起打包到apk中,问题也就解决了!
=========================================

热点排行