任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

Android Fragment使用详解 Android开发技术

  有关Android Fragment相关内容,昨天我们在Fragment对比Activity – Android碎片介绍一文简单讲了下Fragment的作用以及它的生命周期,今天Android123主要讲些Fragment的管理控制、性能优化以及和Activity的传输相关内容。   一、 管理Fragment    管理Fragment在你的Activity你需要使用一个名为FragmentManager的类,通过调用getFragmentManager()方法来实例化该管理类在你的Activity种。 FragmentManager 类一些主要的方法有通过findFragmentById()来获取一个Activity中有关Fragment布局。当然还有类似findFragmentByTag()方法,以及唐Fragment中出栈的popBackStack()同时可以注册addOnBackStackChangedListener()管理.具体的可以在android.app.FragmentManager类中了解  二、 优化Fragment事物处理   一个很好的特性在添加,删除,替换fragment在Activity时可以使用FragmentTransaction类来提高批量处理的效率,这点和SQLite的数据库更新原理类似。  FragmentManager fragmentManager = getFragmentManager();  //实例化fragmentmanager类 FragmentTransaction transaction = fragmentManager.beginTransaction(); //通过begintransaction方法获取一个事物处理实例。   在这期间可以使用 add(), remove(), 以及  replace(). 最终需要改变时执行 commit()即可,接下来我们写代码   transaction.replace(R.id.fragment_container, newFragment);   transaction.addToBackStack(null);   transaction.commit();   三、Fragment和Activity互相通讯   通常Fragment中我们放入平时标准的控件或自定义的控件,基本上和Activity一样,但是如何Fragment中的View布局也是放到Activity中的,这里Android开发网提示大家有两种方法来实现   View listView = getActivity().findViewById(R.id.cwj); //通过getActivity方法可以获取一个Activity中的fragment,这里的cwj是一个fragment,在activity中的布局如下:   <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="horizontal"     android:layout_width="match_parent"     […]

DialogFragment类介绍 Android开发技术

   DialogFragment是Android 3.0新增的Fragment子类,他的Package在android.app.DialogFragment 中,Dialog和Android常规的Dialog是不同的实现方法。   一、常规对话框 public static class MyDialogFragment extends DialogFragment {    int mNum;     static MyDialogFragment newInstance(int num) {        MyDialogFragment f = new MyDialogFragment();         Bundle args = new Bundle();        args.putInt("num", num);        f.setArguments(args);         return f;    }    下面是Fragment的onCreate方法,需要注意的是,设置布局不在这里,和Activity有些不同。     @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mNum = getArguments().getInt("num");         int style = […]

Action Bar示例代码 (一) Android开发技术

   今天一起来看下Android Action Bar的示例代码,我们通过活动栏做一个简单选项菜单。下面这个例子将演示ActionBar.NAVIGATION_MODE_STANDARD、ActionBar.NAVIGATION_MODE_TABS和                     : ActionBar.NAVIGATION_MODE_STANDARD等模式的效果。最后Android123仍然提示大家Action Bar是Android 3.0 honeycomb才开始有的特性,老版本的SDK和固件无法使用。 public class ActionBarDisplayOptions extends Activity  implements View.OnClickListener, ActionBar.TabListener {    private View mCustomView;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.action_bar_display_options);         findViewById(R.id.toggle_home_as_up).setOnClickListener(this);        findViewById(R.id.toggle_show_home).setOnClickListener(this);        findViewById(R.id.toggle_use_logo).setOnClickListener(this);        findViewById(R.id.toggle_show_title).setOnClickListener(this);        findViewById(R.id.toggle_show_custom).setOnClickListener(this);        findViewById(R.id.toggle_navigation).setOnClickListener(this);        findViewById(R.id.cycle_custom_gravity).setOnClickListener(this);         mCustomView = getLayoutInflater().inflate(R.layout.action_bar_display_options_custom, null);         final ActionBar bar = getActionBar();        bar.setCustomView(mCustomView,                new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));         bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this));        […]

ActionBar示例代码 (二) Android开发技术

   ActionBar相关的示例代码第二部分分为两种,作为Android 3.0的重要特性我们直接看代码:   一、使用菜单资源构造   public class ActionBarMechanics extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         getWindow().requestFeature(Window.FEATURE_ACTION_BAR);    }     @Override    public boolean onCreateOptionsMenu(Menu menu) {              menu.add("Normal item");         MenuItem actionItem = menu.add("Action Button");        actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);        actionItem.setIcon(android.R.drawable.ic_menu_share);         return true;    }     @Override    public boolean onOptionsItemSelected(MenuItem item) {        Toast.makeText(this, "Selected Item: " […]

Fragment示例代码 Android开发技术

  Android 3.0平板系统的重要特性Fragment示例代码今天Android123给大家两个例子,一起来看下Fragment的实战代码:   一、通过Fragment实现简单的上下文菜单   public class FragmentContextMenu extends Activity {     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);          ContextMenuFragment content = new ContextMenuFragment();          getFragmentManager().beginTransaction().add(android.R.id.content, content).commit(); //在Activity中通过这个与Fragment通讯    }    下面ContextMenuFragment是我们从Fragment派生的子类,里面重写了onCreateView来布局自己的Fragment     public static class ContextMenuFragment extends Fragment {         @Override        public View onCreateView(LayoutInflater inflater, ViewGroup container,                Bundle savedInstanceState) {            View root = […]

ProcessDialog结合Thread处理耗时操作 Android开发技术

   很多初入Android开发的网友表示经常遇到ANR这类的UI假死或提示强制关闭的问题,有的网友可能想到通过创建一个Android Service的方式来解决耗时操作的假死,但是Android123还是给大家一个简单实用的方法通过创建一个线程而不是服务的方式来解决耗时操作时的假死或等待。   在一个名为Android123的Activity中,我们通过一个进度条控件ProgressDialog可以处理很多耗时操作。代码如下 final ProgressDialog dialog = ProgressDialog.show(Android123.this, "标题", "正文", true);   final Handler handler = new Handler() {      public void handleMessage(Message msg) {         dialog.dismiss();   //关闭progressdialog      }      };   Thread cwjThread = new Thread() {        public void run() {        //这里处理耗时操作,比如文件下载等等。       handler.sendEmptyMessage(0);    //告诉handler      }      };   cwjThread.start(); 

API Level对照表,更新至2.3.3 Android开发技术

   Google近期更新Android SDK频率加快,很多网友还不知道API Level 10是多少,还有就是Android 3.0 honeycomb的API Level又是多少呢? 下面Android123整理出最新的SDK API版本号对照表:     Android 3.0 – honeycomb     Android 2.3.3 – API Level 10     Android 2.3 – API Level 9     2.2 – 8     2.1 – 7     2..0.1 – 6     2.0 – 5     1.6 – 4     1.5 -3     1.1 – […]

分析你的Android ANR错误 Android开发技术

  Android ANR这个错误大家并不陌生,但是从Android 2.2开始出错的ANR信息会自动上传给Google进行系统分析改进,当然了你的应用ANR错误其实保存在一个文件中,在/data/anr/traces.txt文件中,如果你的Android设备没有Root越狱过,可以将你的软件装在模拟器上分析,模拟器可以直接使用Eclipse中的DDMS里的File Explorer来打开,如下图:    虽然traces.txt是一个文本文件,不过使用windows上的记事本打开可能无法正常处理linux的换行符,这里Android123建议你使用ultra edit查看,当然了使用Windows自带的写字板也是不错的。下面一起来分析下错误吧,第一行为出错的时间,第二行都会写上发生ANR的package Name,下文是com.android.systemui这个包,里面的部分线程出了问题,通过下面的的xxx方法以及对应的java文件,后面的数字为xxx.java文件的第几行,是不是很方便呢? —– pid 125 at 2011-02-22 05:18:01 —–Cmd line: com.android.systemui DALVIK THREADS:(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)"main" prio=5 tid=1 NATIVE  | group="main" sCount=1 dsCount=0 obj=0x4001f1a8 self=0xce48  | sysTid=125 nice=0 sched=0/0 cgrp=default handle=-1345006528  | schedstat=( 981213067 8042604425 151 )  at android.os.BinderProxy.transact(Native Method)  at android.os.storage.IMountService$Stub$Proxy.isUsbMassStorageConnected(IMountService.java:95)  at android.os.storage.StorageManager.isUsbMassStorageConnected(StorageManager.java:385)  at […]

Android 2.2开始resources.arsc有改变 Android开发技术

   从Android 2.2 API Level8开始APK文件的资源resources.arsc的编码有了小幅的改变,过去使用的是UTF-16LE编码方式被转换成了UTF-8编码,这样的好处就是处理纯英文等直接通过ascii存储语言的国家资源文件将会更小,而对于中文、日文这些国家的资源文件反而会变大。    UTF-16LE对于编码中文、英文均使用2个字节,但是Google可能考虑各个国家主要还是基于类似英文这样的语言存储,使用UTF-8可以减少文件体积,UTF-8是可变长度的,存储英文占1个字节,存储中文占3个字节。总而言之resources.arsc对于汉化Android应用程序十分关键,结构使用了索引表的方式存储,不过Google经常的更改Android API或部分文件的结构并不是一种好的方法,比如在Android 2.3上OpenCore又被换掉了。

Fragment API将兼容Android 1.6到3.0 Android开发技术

  很多网友都知道Android开发网曾经介绍的 Fragment对比Activity – Android碎片介绍 将用于3.0平板的多窗口管理,而Google将决定Fragment API兼容Android 1.6到3.0之间的版本,Fragment API可以很好的解决Android分辨率众多的问题,Fragment由于是Android Honeycomb的新特性,如果向下兼容必须发布相应的静态库,使其支持。   目前Google的技术解决方法可能就是降低Fragment的效果来使其增加更多平台的版本支持,可能在下一次的SDK升级中Google将会以静态库的方式让你的应用兼容Android手机和平板设计,目前最让Google头疼的兼容性问题除了OS版本众多外,还有很多分辨率问题,早点统一Android平台可能是Google目前需要头等考虑的问题之一。

LoaderManager – Android 3.0新特性 Android开发技术

   在Android 3.0中提供了一个新概念Loaders,通过LoaderManager类可以很轻松的异步加载数据从Fragment或Activity中,Loaders提供了回调机制通知最终的运行结果,有点类似AsyncTask类,但由于Loader对于并发可以用过Loader管理器统一管理,所以更适合批量处理多个异步任务的处理(当然内部仍然是多线程)。下面就让Android123一起和大家看下honeycomb中的新特性吧,对于解决多重异步I/O加快Android平板应用的运行是十分有效的。   一、LoaderManager   LoaderManager类位于android.app.LoaderManager,提供了以下几个方法 abstract void  destroyLoader(int id) //停止并移除loader通过IDabstract void  dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args)  //打印LoaderManager的状态到一个流中static void  enableDebugLogging(boolean enabled) //启用debug记录abstract <D> Loader<D>  getLoader(int id) //返回找到的ID或没有匹配的在Loader中abstract <D> Loader<D>  initLoader(int id, Bundle args, LoaderCallbacks<D> callback)  //初始化Loader使其成为活动状态abstract <D> Loader<D>  restartLoader(int id, Bundle args, LoaderCallbacks<D> callback)  //启动一个新的或重启一个存在的Loader在管理器中 同时LoaderManager还有一个回调接口android.app.LoaderManager.LoaderCallbacks<D> 用于和LoaderManager交互 abstract Loader<D>  onCreateLoader(int id, […]

Android第三方软件也开源 Android开发技术

  谷歌在Android平台上开源了,第三方软件也应该开源走普及道路。目前Android开发网将在时机成熟时开放各种应用的工程源代码,让大家买手机,零价格使用软件,谁想用自己编译就ok的精神。最终收费的仅在于手机游戏、网游运营方面。   感谢各位开发人员的支持,我们会提供高质量的软件源代码给大家一起发展学习,首先提供GIT和SVN服务器作为更新平台。

Android受更多厂商支持,开放手机联盟不断壮大 Android开发技术

  Android平台受到了更多厂商的支持,过去观望的索尼爱立信看见韩系手机三星、LG的加入让日本企业逐渐感兴趣,日本目前已经有3家运营商加入,NTT DoCoMo、KDDI、Softbank都决定运营,最终索爱生产Android智能手机是理所当然的事情,沃达丰和美国Vierzion Wireless虽然关系紧密,Verzione一直表示对Android没有丝毫兴趣,但是目前英国市场逐渐被T-Mobile UK蚕食,为了保证最终的客户Vodafone也加入OHA联盟,Google开放手机联盟阵营不断壮大起来。    目前Open Handset Alliance成员有CMCC、KDDI 、HTC、LG、NTT DoCoMo、Sprint、Motorola、Samsung、T-Mobile 、Ascender、Telecom Italia、eBay、Esmertec、Google 、Telefonica、LivingImage、LiveWire、Nuance 、Broadcom、PacketVideo、Intel、SkyPop、Marvell、SONiVOX、NVIDIA 、Aplix、Qualcomm、Noser、SiRF、TAT、Synaptics、Wind River、Texas Instruments、AKM Semiconductor Inc、ARM、ASUSTek Computer Inc、Atheros Communications、Borqs、Ericsson、Garmin International Inc、Huawei Technologies、Omron Software Co. Ltd、Softbank Mobile Corporation、Sony Ericsson、Teleca AB、Toshiba Corporation、Vodafone.

写给初学者,Android AIDL必看内容 Android开发技术

  更好的设计Android软件应该熟悉掌握AIDL IPC机制,可以让你编写的组件类似Windows ActiveX COM一样更好的复用,提供类似像Symbian那样的服务器机制。服务可以很好的解决在后台运行无UI的窗口。我们创建一个aidl文件名为android123.aidl下面是示例代码,修改于Android SDK文档。 一、创建AIDL文件 package cn.com.android123; 引入声明 import cn.com.android123.IAtmService; // 声明一个接口,这里演示的是银行ATM程序interface IBankAccountService {        int getAccountBalance(); //返回整数,无参数    void setOwnerNames(in List<String> names); //不返回,包含一个传入List参数    BankAccount createAccount(in String name, int startingDeposit, in IAtmService atmService); //返回一个自定义类型    int getCustomerList(in String branch, out String[] customerList); //返回整形,输入一个分支,输出一个客户列表} 二、实现一个接口 显示的提供一个导出接口,为客户端提供绑定。 public class RemoteService extends Service { @Override public IBinder onBind(Intent intent) { […]

Android与XML解析 Android开发技术

  XML是一种常用的存储数据方式,在Android平台中内部很多地方使用了XML存储,比如轻量级的SharedPreferences类的存储其实保存在Data/data/[package name]/db。如果你使用的不是Android Dev Phone或没有Root权限,可以通过Android模拟器来查看。   XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。   XML解析实例:-天气预报程序的开发:   Google为我们提供了很多利用天气预报的程序开发,比如MyLocation API和Google Weather API,这里我们就以中国上海来举例,查询上海天气我们执行http://www.google.com/ig/api?weather=Shanghai,China 可以看到,最后的weather=后面就是城市的拼音名称。   完整的XML文件结构为:   <?xml version="1.0" ?> – <xml_api_reply version="1"> – <weather module_id="0" tab_id="0"> – <forecast_information>   <city data="Shanghai,China" />   <postal_code data="Shanghai,China" />   <latitude_e6 data="" />   <longitude_e6 data="" />   <forecast_date data="2008-12-17" />   <current_date_time data="2008-12-17 16:00:00 +0000" /> […]

Android示例程序Snake贪食蛇代码分析(二) Android开发技术

  上一次我们大概讲解了下Android SDK中的演示程序Snake游戏的主框架,今天我看来看下实现的基础类TileView,从名称上不难看出这是一个方砖类,就是生成一个方块。TileView使用了Android平台的显示基类View,View类是直接从java.lang.Object派生出来的,是各种控件比如TextView、EditView的基类,当然包括我们的窗口Activity类,这些在SDK文档中都说的比较清楚。   这里定义了5个int型全局的变量,分别是方砖的数量mTileSize;方砖水平x防线的数量mXTileCount;以及竖直y方向上的方砖数量mYTileCount,下面是一个相对偏移位置mXOffset和mYOffset;这里android123主让要大家了解如何自定义View在Android开发中,在一个View类中主要是重写onSizeChanged方法来控制改变部分,以及onDraw实现画布的修改,实现的简写如下: @Override    protected void onSizeChanged(int w, int h, int oldw, int oldh) {} @Override    public void onDraw(Canvas canvas) { super.onDraw(canvas);}   我们自定义的TileView类需要自己添加一个构造方法,根据需要,我们还重载了一种包含样式的方法,这里大家可以多看下Gallery控件的实现,就好理解了,下面是基本框架。public TileView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);} public TileView(Context context, AttributeSet attrs) { super(context, attrs);}   在贪食蛇游戏中我们知道Snake是移动的,所以加入了一个清除显示的clearTiles方法,通过一个二维数组保存一个gird网格型的运动轨迹,下一次我们将会讲解android贪食蛇的游戏逻辑和完整的关联拼接实现。如果有疑问可以在bbs.android123.com讨论。

Android开发环境搭建图文教程 Android开发技术

Android开发首先需要搭建完整的开发环境,由于软件均是基于Dalvik Java Virtual Machine运行的所以Google官方推荐使用主流的Java开发IDE Eclipse。我们需要下载必要的开发组件。   1)Java运行时库(JRE),由于Eclipse使用Java开发,所以需要它才可以正常运行IDE。   2)Eclipse集成开发环境,官方提供的Android开发插件ADT Plugin是基于Eclipse编写的,当然用户可以使用NetBean、JBuilder当作代码编辑器使用,但目前没有完整的调试集成。   3)Eclipse ADT Plugin插件是Android Develop Tool Kit的插件,用户需要安装它才能在Eclipse中建立和调试Android程序。   4)Android SDK,它包含了完整的Android模拟器 、Android开发文档和调试工具,Google官方也会定时更新,最新的公开版本为2008-3-3 m5-rc15   以上提到的4个必备工具需要在下面页面中下载安装 Android开发包下载   首先我们将下载的JRE安装,然后解压缩Eclipse和Android SDK。运行Eclipse开发环境。

Android平台View的按键事件KeyDown用法 Android开发技术

  我们继续讨论下Android游戏开发的一些前置知识,平时设计自己的显示类View时需要捕获按键事件,比如KeyEvent、首先引入android.view.KeyEvent类,直接重写onKeyDown方法,同样在键盘上每个按钮都对应一个Scancode扫描吗,详细的定义在KeyEvent类中有,直接查看Android SDK中的定义,实现的方法如下: public boolean onKeyDown(int keyCode, KeyEvent msg) {     if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {           // 按下中键时触发的事件,这里android123.com.cn提醒网友G1或ADP1使用的是轨迹球,这个Trackball仍然可以按下的,不仅仅是方向的导航。             return (true);     }        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {         //向左            return (true);        }        if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {         //向右            return (true);        }        if(keyCode == KeyEvent.KEYCODE_DPAD_UP){         //向上            return (true);        }        if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN){         //向下            return (true);        }        return super.onKeyDown(keyCode, msg);    } […]

Android中的XML解析各种方式对比 Android开发技术

  随着Web2.0的兴起XML越来越受大家重视,作为一种标准的数据存储方式Android是如何支持的呢? 在android平台中提供了多种xml parser解析器,常见包含dom、sax、pull这样的主流方法。目前G1的处理器和内存相对于MIDP设备来说大了很多,对于数据量小于10KB以内的文件使用Dom方式比较方便,主要是XPath查找很好,android123提示如果是一个属性之多的大型文件可以通过sax这样的单向流方式解析,它的好处就是不占用太多的内存,但是控制起来和代码量都是比较大的。这里和J2ME的KXML相同的内核。   Android平台中相对于常规的存储,SharedPreferences足够保存,但是他无法很好的处理外部文件,比如存放在sdcard中的内容,而XML可以很好的决绝,对于复杂的文件和多种方式查询,可以使用结构化的数据库语言SQL来解决,不过SQLite的性能一直表现一般,在资源占用上还是很大的。

Android HomeScreen Launcher解析(一) Android开发技术

  很多网友在邮件中提到了Android的桌面Home Screen有关的开发,我们可以看到常规的桌面上有3个Widgets,比如一个Clock、Search 和不常用的Phooto Frame像框,整个桌面响应的是android.intent.category.HOME这个Intent Action。目前由于权限问题我们无法在原始的Google桌面程序添加Widget在行规的没有Root权限的机器上,其实就是一个provider操作,但我们可以通过自己获取android.intent.cateory.Home这个action来替换掉系统默认的程序,这样就可以自定义我们的Android桌面为类似iPhone等样式。   在Git中我们可以直接获取Launcher,进行修改分析,整个桌面的设计主要是捕获一些常规的事情,比如新装程序在桌面上创建快捷方式、提供Widget的移动等等,可以加入一些类似天气预报、RSS订阅等功能,详细的我们下次解析,涉及图片中的Widget如下:  

Android支持PDF和Office需要底层支持 Android开发技术

  目前Android平台提供了高层的Java语言开发虽然在进度上可以很好的控制,但处理一些效率敏感的算法仍然不能让人满意,目前QuickOffice公司已经推出了Android操作系统上的Office软件可以读取、编辑Word、Excel文档,但是在测试时发现并非我们想象的那么顺利,在打开一个400KB的Word文档时几乎用去了至少30秒,而在编辑方面几乎无法操作,除了force close外还是看到了缺乏底层的无奈。   而PDF解析上同样存在很多问题,不过G1的运行内存还是比较大,处理起来相对顺利,不过仍然和Windows Mobile自带的Office Mobile无法想提丙纶,目前随着微软向Office 2007格式的兼容,对于docx这类的全新格式,在解析库上还需要进一步更新。而唯一很好的解决方式就是等待Google自己和微软、Adobe合作,有消息表明和Adobe的合作还是比较顺利,未来的Android平台会预装Flash 10 Lite提供更多的支持,比如Flv视频解码器、Flash游戏、动画等支持。

Android自定义Adapter步骤 Android开发技术

  Android中提供了大量的适配器Adapter,常见的有BaseAdapter、SimpleCursorAdapter、CursorAdapter等等,其中包含Cursor可以自动和数据库关联。一般在ListView中我们需要定义一些显示的内容,需要用到继承Adapter实现窗口的子类化。   一般我们需要重写Adapter类的四个方法即可,分别是public int getCount() 、public Object getItem(int position)、public long getItemId(int position)和public View getView(int position, View convertView, ViewGroup parent) ,调用时仍然是在ListView或ListActivity中直接setAdapter(CustomAdapter);即可,比较典型的方法参考Android的自带控件Gallery的实现,详细的在API Demo中查找即可。  

Android数据库SQLite使用方法 Android开发技术

  大多数过去做MIS或OA系统的可能都很熟悉数据库相关的操作,Android平台和Windows Mobile一样都支持本地的SQL数据处理,这点Android使用了比MySQL嵌入版更轻量级的SQLite,Google有关Android数据操作的方法提供一个高层的封装就是ContentProvider。一组数据操作可以使用ContentValues对象来完成度或写,ContentValues提供了put和get两种方法分别对应设置和读取,如果对于原始SQL语法比较了解还是建议使用更为灵活的raw执行语言比较快。   主要注意的是Android中使用的SQLite受数据库版本因素而限制,SQLiteDatabase是原始的数据库操作类,提供了createDatabase方法来创建一个新的数据库,最终保存为.db格式的文件,而已经存在的数据可以使用openDatabase方法直接打开,使用execSQL方法可以直接执行SQL语句,完成插入、更新、删除等等,而查询也可以使用本地的SQL语句直接完成,使用rawQuery方法即可,这样会返回一个Cursor对象,我们直接遍历Cursor使用movetoFisrt和movetoNext方法进行遍历查询。直接使用getString或getInt等方法获取每列的数据即可。   而ContentProvider方式比较简单,大家直接看Android SDK中的NoteList例子就很好理解了。

oms和android在开发上有什么不同? Android开发技术

  部分网友对中移动OMS平台和谷歌Android相比到底有什么不同,这里我们主要来说下它们之间几个不一样的地方。首先有必要了解下OMS,OMS是根据开源Android修改而来,由中国移动主持和北京博思通讯联合开发,支持TD-SCDMA、CMMB等特性的中国特色Android手机。全称为Open Mobile System,详细的可以在oms手机网了解。   1.OMS在很多组件上和Android是完全一样的,仅仅是UI改变了,在RIL层上部分会兼容TD,还有OMS还有很多中移动的附件组件,139邮箱、手机电视、飞信等等都是CMCC所有,当然还有部分第三方小公司的产品,比如词典了、部分游戏等等。   2.目前我们测试的Dopod Magic使用了OMS系统,从关于信息可以看到使用了Android1.1固件,但版本号比较有意思和过去MOTO的某款经典机型一样为A188,在开机时也可以看到,在基带、内核上版本和我们的熟悉的RC33没有太大区别,不过最终还是使用了cupcake更新,在输入方面可以看到已经完善了。   3.开发方面我们可以看到最终OMS的桌面将会有两套方案,G1主屏和博思主屏,博思主频多出了一个名为Widget家园的程序,这里可以让我们看到整个Home Screen变换成了类似iPhone的外观或者说魅族M8的桌面,虽然不是很有什么创意不过还是算做了些改进,否则和Android也太像了,更多的都是在UI上的修改。   4.最终OMS上怎么开发呢? Java的IDE还是Eclipse,编译器还是ADT,生成的还是APK文件,最终不同的仅仅是运行在国产的手机上,目前已知的终端有HTC Magic的Dopod G2版本还有联想oPhone。可以在oPhone手机网中了解。

Android Widget开发 Android开发技术

  近期Android 1.5 SDK中加入了不少开发框架,AppWidget framework 可以方便的在Android桌面上开发Widget小工具,在过去我们已经看到了Live Folder中,下面就以Google官方的一个例子来做介绍吧.    首先我们需要计算下最小高度, 默认情况下Android桌面使用的是基于网格的布局,使用下面的公式可以很好的处理:  Minimum size in dip = (Number of cells * 74dip) – 2dipIn this example, we want our widget to be 2 cells wide and 1 cell tall, which means we should request a minimum size 146dip x 72dip. We’re also going to request updates once […]

Android Live Folder开发介绍 Android开发技术

    谷歌在最新的Android平台中加入了Home安全和Widget框架,同时在桌面UI上引入了新的Live Folder对象,在过去我们可以把这个对象当作一个容器来存放一些常用的图标,而本次Android 1.5 Cupcake中的Live Folder有了大幅的增强。比如加入e-books、e-mails查询以及RSS feeds检测,甚至是音乐的playlists都可以很好的完成。 这样大大方便了用户的操作。Android标准的桌面被分割成为了3个部分,用户有足够的空间来自定义排序整个显示效果比iPhone的n宫格显得更整洁。开发LiveFolder我们应该从开源代码从的Launcher中获取更多参考的接口,以及在1.5 SDK中了解更多内容。

Android API Level介绍 Android开发技术

  随着Android 1.1、1.5固件的推出目前整个SDK将API分为了多个版本,其中T-Mobile G1刚刚推出时的固件版本为1.0 API Level为1.下面是一个简单的对应关系:下面是ADT 0.9创建新工程时的选项,如果已经选择后可以在androidmanifest.xml文件中修改Min SDK Version的值来设置,如果使用了新的API最终目标的平台必需兼容,而高版本的API向下兼容,使用老版本SDK开发的程序仍然可以工作在最新的固件。   Android 1.0 固件  API Level为1   Android 1.1固件  API Level为2   Android 1.5固件 API Level为3.

Android 1.5开发体验 Android开发技术

  很多网友对于Android 1.5 SDK还是比较陌生了,过去出现的问题,我们已经在前期内容中讲到API兼容问题,以及ADT 0.9插件无法安装的解决方法,此前出现两个版本的1.5 SDK一个为preview预览版和release 1正式发行版。需要android开发人员注意,同时最新的adt插件是时 0.9.1.v200905011822-162 ,需要大家确认,这里新增的Android Virtual Devices Manager可以帮助开发人员快速的配置自己的API Level以及模拟器的各个特性,比如Sdcard映像的大小、最终的固件版本可选1.1和1.5以及模拟器的屏幕,比如HVGA、QVGA以及相对应的横屏模式。 而新的layout布局工具也有很大的改进,界面的设计基本上可以做到可视化,但是复杂些的xml结构或细节的出错都会遇到null空指针的bug,这里Eclipse配合插件明显不如微软的Visual Studio来的稳定。

Android中MediaRecorder类实现视频录制 Android开发技术

  在最新的Android 1.5版本中开始支持视频录制功能,通过MediaRecorder类的相关方法可以录制视频保存成为MPEG4、H.263和H.264编码的视频。这里很多网友发现自己的代码无法正常执行,首先确定设计预览对象Surface,可以通过setPreviewDisplay()方法实现,同时调用prepare()要在设置预览前执行。这里可以可以设置音源MIC、输出声音的格式3GP,设置编码为AMR。视频源为CAMERA,编码为MPEG_4。最终保存成一个MPEG4的文件,设置好输出文件的路径即可,这里我们还可以通过setVideoSize和setVideoFrameRate方法设置视频的分辨率以及帧数。示例代码参考 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); recorder.setOutputFile(filePath);   测试OK后给大家一个sample,注意视频录制是一个比较好资源的事情,考虑到性能要开一个线程单独处理。

Android 2.0揭秘,Donut新特性曝光 Android开发技术

  在未来的3~6个月,Google Android平台将会升级到2.0版本,这个代号为Donut的分支将会加入本地和Web搜索、手写识别、 Google翻译和文本发音text-to-speech特性,从官方的GIT中可以看到Android Donut中把汗了Svox语音引擎,整体的构架在下面的图片中可以看到,这个来自瑞士的Svox公司已经于上周加入了Google OHA联盟。目前 SVOX Pico TTS 已经支持6个国家的语言发音,包含U.S. 、U.K. English, German, French, Spanish和 Italian,相信大家对Android 2.0已经有些期待了吧。 

Android Scripting Environment 介绍 Android开发技术

  谷歌已经发布了一个工具针对Android操作系统可以编写简单的脚本程序,无需PC上开发的ASE(Android Scripting Environment )将帮助程序员访问大部分的功能通过下载一些简单的脚本,其实现原理和OMS的BAE平台十分相似,详细的可以参考 BAE开发网中的相关W3C Widget例子。   不过相对于传统的Web层面Widgets而言,ASE的功能可以控制GPS、接收感应器数据等等,最终脚本进程运行在后台,你可以创建自动回复服务在来电屏幕程序,同时可以静音来电应声等等。 目前整个实现过程比较简单。

Android NDK之JNI使用例子 Android开发技术

  目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。整个例子分Java和Native C两个部分。首先是我们常用的Java端调用部分。   package com.example.hellojni; import android.app.Activity;import android.widget.TextView;import android.os.Bundle; public class HelloJni extends Activity{    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);         TextView  tv = new TextView(this);        tv.setText( stringFromJNI() ); //如果调用失败将会抛出 java.lang.UnsatisfiedLinkError异常        setContentView(tv);    } //注意下面的native关键字     public native String  stringFromJNI();     public native String  unimplementedStringFromJNI();      static {        System.loadLibrary("hello-jni"); //载入hello-jni库    }  } 需要注意的是这里必须设置SDK版本为1.5或以上版本即在androidmanifest.xml文件中指明<uses-sdk […]

Android Widget开发指导-翻译 Android开发技术

   Widget是Android 1.5的一个新特性,允许程序显示一些常用而又重要的信息在用户的Home screen(桌面主屏)上,标准的Android系统映像包含了一些示例widgets包括指针时钟、音乐播放器和其他工具如Google搜索栏。(Widgets are a feature introduced in Android 1.5. A widget displays an application’s most important or timely information at a glance, on a user’s Home screen. The standard Android system image includes several examples of widgets, including widgets for Analog Clock, Music, and other applications.)   正文Android开发网不做过多的赘述和翻译,仅仅作一些提示,相信结合图片网友可以很好的理解掌握,毕竟Widget和标准的Apps相比没有太大的区别,更多的是在UI上的处理,逻辑执行还是设计成服务更稳定和更高的可靠性。     标准Widget剖析(Standard widget anatomy) […]

100% Secure Checkout

PayPal / MasterCard / Visa