摘要:
Android的Window类(一)Android的GUI层并不复杂。它的复杂度类似于WGUI这类基于布局和对话框的GUI,与MFC、QT等大型框架没有可比性,甚至飞漫魏永明的MiniGUI都比它复杂许多。您也许会问,这样简单的GUI如何实现浏览器呢?原因很简单,浏览器有自己一套GUI。Android浏览器(WebKit)的GUI和Android的GUI实用同一套GDI——Skia,但GUI层是完全不同的设计,分别自成体系。 Windown类,位于代码树frameworks\base\core\java\android\view\Windowjava.java文件。连同注释,这个文件总共一千多 阅读全文
摘要:
1.Android中通过SQLite数据库引擎来实现结构化数据存储。SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备,提供的是一种高效的数据库引擎。2.Android提供了创建和使用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper工具类提供更简洁的功能。3. SQLiteOpenHelper是SQliteDatabase的一个帮助类,用来管理数据库的创建和版本更新。一般用法是定义一个类继承之,并实现两个抽象方法onCreate(SQLiteDatabase db)和onUpgrade 阅读全文
摘要:
android:allowTaskReparenting是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务。android:alwaysRetainTaskState是否保留状态不变, 比如切换回home, 再从新打开, activity处于最后的状态android:clearTaskOnLanunch比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 从新启动 P, 是否显示 Qandroid:configChanges当配置list发生修改时, 是否调用 onConfigurationChanged() 方法 比如 &quo 阅读全文
摘要:
就像前面提到的,一个activity可以启动另一个,包括那些定义在不同应用程序中的。假设,例如,你想让用户显示一些地方的街道地图。已经有一个activity可以做这个事,所以你的activity所要做的就是将行为对象和需要的信息放在一起,并将它们传递给startActivity()。 地图查看器将显示这个地图。当用户按下后退按钮时,你的activity又重新显示在屏幕上了。对用户来说,这个地图查看器看起来就像是你的应用程序的一部分,即使它定义在另外的应用程序中并运行在那个程序的进程中。Android 通过保持所有的activity在同一个任务中来保持用户体验。简单的的说,任务就是用户所体验到的 阅读全文
摘要:
1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。Explicit Intent明确的指定了要启动的Acitivity,比如以下Java代码:Intent intent= new Intent(this, B.class)Implicit Intent没有明确的指定要启动哪个Activity,而是通过设置一些Intent Filter来让系统去筛选合适的Acitivity去启动。2、intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data。理论上来说,如果i 阅读全文
摘要:
最近做一个页面,仿制以下两个图,一个是横屏,一个竖屏。这是一款名字叫IMDb的手机软件,其中最上面中间是一个图;然后下来是三个tab样式的(Movies、TV、People)三个可以切换,切换是三个不同页面;下面是一个横排的图片,图片可以左右滑动显示;下面是一个list列表,此列表每一行最左边是一个图片,中间是文字,最右边是一个小箭头图标。首先解决的是最上面图片居中显示,在LinearLayout标签中加入android:gravity="center_horizontal",这个表示横向居中显示。这样的话切换横竖屏之后,图片也是在中间的。再次,解决三个(Movies、TV 阅读全文
摘要:
我的widget上没有TextView问题解决了,顺便说下setXXX函数的用法,试了一下午终于试出来了比如上面的setCharSequence(int viewId, String methodName, CharSequence value);views.setString(R.id.textview01, "setText", battery + "%");其中views是RomoteViews的实例,第一个参数就是ID了,关键是第二个参数,是一个方法名字,比如这里是textView,那么textView会有很多方法,比如setBackground 阅读全文
摘要:
一旦拥有了URI对象,你就可以通过调用getAuthority()、getFragment()、getHost()、getPath()、getPort()、getQuery()、getScheme()、getSchemeSpecificPart()和 getUserInfo()方法提取多种组件。你也可以通过调用isAbsolute()确定该URI是绝对的还是相对的,通过调用isOpaque()确定该URI是不透明的还是分层的。如果返回值是true意味着该URI是绝对的或不透明的,如果返回值是false意味着该URI是相对的或分层的。 列表1中的程序用命令行参数建立了一个URI对象,调用URI组 阅读全文
摘要:
Android中的AppWidget与google widget和中移动的widget并不是一个概念,这里的AppWidget只是把一个进程的控件嵌入到别外一个进程的窗口里的一种方法。View在另 外一个进程里显示,但事件的处理方法还是在原来的进程里。这有点像 X Window中的嵌入式窗口。Android中的AppWidget包括以下几个部分:AppWidgetProviderAppWidgetProvider是AppWidget提供者需要实现的接口,它实际上是一个BroadcastReceiver。只不过子类要实现的不再是onReceive,而是转换成了几个新的函数:1 public vo 阅读全文
摘要:
为什么要关闭组件?在用到组件时,有时候我们可能暂时性的不使用组件,但又不想把组件kill掉,比如创建了一个broadcastReceiver广播监听器,用来想监听第一次开机启动后获得系统的许多相关信息,并保存在文件中,这样以后每次开机启动就不需要再去启动该服务了,也就是说如果没有把receiver关闭掉,就算是不做数据处理,但程序却还一直在后台运行会消耗电量和内存,这时候就需要把这个receiver给关闭掉。如何关闭组件?关闭组件其实并不难,只要创建packageManager对象和ComponentName对象,并调用packageManager对象的setComponentEnabledS 阅读全文