摘要:
前提:工程中使用ViewPager,需要导入google提供的jar包(android-support-v4.jar)。要学习ViewPager的使用,建议直接看官方文档Creating Swipe Views with Tabs接下来主要对使用进行下总结,例子是官网上的。ViewPager可以理解成一个布局(layout)部件,如在xml中加载每一个子View作为一个独立的页面,加载在ViewPager上。不过要使子View能作为独立页面插入到ViewPager上,需要实现一个PagerAdapter。在PagerAdapter类或其子类中设计tab的标题(getPageTitle方法中实现 阅读全文
随笔分类 - Android提高
fragment的介绍与使用
2013-12-08 22:26 by ...平..淡..., 1098 阅读, 收藏,
摘要:
稍稍摘录一段Fragment.java中的说明文档。/** * A Fragment is a piece of an application's user interface or behavior * that can be placed in an {@link Activity}. Interaction with fragments * is done through {@link FragmentManager}, which can be obtained via * {@link Activity#getFragmentManager() Activity.getFra 阅读全文
Android stateMachine分析
2013-07-28 21:42 by ...平..淡..., 1337 阅读, 收藏,
摘要:
StateMachine与State模式的详细介绍可以参考文章:Android学习 StateMachine与State模式下面是我对于StateMachine的理解:先了解下消息处理。看下StateMachine::sendMessage方法。不管BT/Wifi中,都有继承StateMachine的子类(BluetoothAdapterStateMachine.java/WifiStateMachine.java),在某些类中,会创建这些类的对象,当需要发送消息时,会调用它们的sendMessage方法,即调用父类StateMachine的sendMessage方法。 /** ... 阅读全文
apk获得Android系统权限的方法
2013-01-10 14:25 by ...平..淡..., 26597 阅读, 收藏,
摘要:
想写一个重启系统的apk(reboot.apk),因为没有权限,所以编译出来的apk无法达到效果。网上查到的方法讲的不太清楚,至少我是这么觉得,因为我照着做,试了好多次才成功。下面是我尝试过并成功的两个方法,总结如下。方法1:通过将项目作为一个模块,放到Android系统源码中进行编译~~~步骤如下:1.在应用程序的AndroidManifest.xml中的manifest节点中加入"android:sharedUserId="android.uid.system"这个属性。<manifest xmlns:android="http://schem 阅读全文
android之Parcel机制学习
2012-11-27 22:52 by ...平..淡..., 2842 阅读, 收藏,
摘要:
Parcel源码的分析,可以参考曹文斌的探索Android中的Parcel机制(上)。本质上把Parcel当成一个Serialize,不同在于它是在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此会更加高效。在Android中,最常见的使用Parcel类的情况是:在Activity间传递数据。在Activity间通过Intent传递数据的时候,可以利用Parcelable机制传递复杂的对象。通过创建一个工程来学习使用Parcel机制。创建Text.java类实现Parcelable接口。package com.cb.test;import android.os.Parcel;impo 阅读全文
笔记之Android服务
2012-11-26 23:03 by ...平..淡..., 444 阅读, 收藏,
摘要:
Android 支持两种服务类型的服务:本地服务和远程服务。本地服务(Local Service):用于应用程序内部远程服务(Remote Sercie):用于android系统内部的应用程序之间前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。后者可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。远程服务使用 AIDL(Android Interface Definition Language, Android接口定义语言)向客户端定义其自身。 也就是说,通 阅读全文
(转)android的消息处理机制(图+源码分析)——Looper,Handler,Message
2012-08-16 18:47 by ...平..淡..., 298 阅读, 收藏,
摘要:
挺用心的,也挺不错的,转载过来:作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想。android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了。这不,前几天为了了解android的消息处理机制,我看了Looper,Handler,Message这几个类的源码,结果又一次被googler的设计震撼了,特与大家分享。android的消息处理有三个核心类:Looper,Handler和Message。其实还有一个Message Queue(消息 阅读全文
(转)深入理解之 Android Handler(相当好!!!)
2012-08-16 16:49 by ...平..淡..., 2226 阅读, 收藏,
摘要:
一,相关概念在Android中如果通过用户界面(如button)来来启动线程,然后再线程中的执行代码将状态信息输出到用户界面(如文本框),这时候就会抛出以下的异常信息:5-12 13:33:04.393: ERROR/JavaBinder(1029):android.view.ViewRoot$CalledFromWrongThreadException:Onlythe original thread that created a view hierarchy can touch its views.该异常的意思是,只有最初创建视图层次结构的线程才能接触该结构中的视图,也就是说,不是最初创建界 阅读全文
Android中对于没有Looper的类,要使用Toast的问题
2012-08-16 16:12 by ...平..淡..., 782 阅读, 收藏,
摘要:
因为Toast.java中初始化时,需要创建一个Handler对象,而默认情况下,Handler会与其被定义时所在线程的Looper绑定,比如,在主线程中定义,其是与主线程的Looper绑定,那么,Toast.java中Handler handler = new Handler() 等价于new Handler(Looper.myLooper())。这时,若Handler所在线程没有Looper,则会报错。1.一种解决方法 1 public class TestService extends Service { 2 private Handler handler; 3 ... 阅读全文
(转)Android关机AppWidget的实现
2012-08-01 16:21 by ...平..淡..., 542 阅读, 收藏,
摘要:
1.背景 转到Android组多日,总有些空虚感,因为之前在WinCE都是做的很底层的驱动,像显示驱动、USB Device驱动、USB Host EHCI、OHCI、2D加速驱动,显示驱动还使用到了NEON机器码!没错是机器码,因为VS2005的ARMASM编译器不支持Cortex-A8才有的NEON指令,所以只好写机器码代替。而在Android这边因为刚刚入手,Framework都不是很熟,只能先做一些简单的任务,这周主要就是完成一个关机的Appwidget。 Appwidget直译是窗口小部件,类似Win7系统里面桌面中的小闹钟、日历等,在Android中可以自由拖放。下面是一个闹钟的A 阅读全文
(转)android linux 关机流程
2012-08-01 16:09 by ...平..淡..., 498 阅读, 收藏,
摘要:
Android 关机流程分析出处To power off an Android phone, keep pressing power bottom then shutdown menu is appeard. Then choose ‘Power OFF’ to power off actually.I looked for the source code to see how to do these sequence.(Japanese version of this page)Showing shutdown menuLong press of power bottom is handle 阅读全文
(转)修改Android解锁界面
2012-08-01 15:55 by ...平..淡..., 1358 阅读, 收藏,
摘要:
背景 先说说背景吧,这是本人从WinCE系统转到Android之后,接到的第一个任务就是修改Android原生的解锁界面,之前看了两个星期的书和网络博客,Java的也有、Android应用开发的也有、Linux开发的也有、Android框架介绍的也有。然后写了几个APK试了了一下,觉得自己有能力了,便充满自信地找到组长接任务。组长没有说什么,拿出一个竞争对手公司的样机,玩了几下拿个我,说道:这是竞争对手公司的方案,他们的解锁效果不错,很方便,你看看能不能也做出来。 说实话接到这个任务当时真的有点失望,心里面一直想,当初做WinCE做的几乎全是驱动,整天和寄存器、指针、协议打交道,现在转... 阅读全文
(转)WebView学习
2012-07-23 16:06 by ...平..淡..., 357 阅读, 收藏,
摘要:
本讲内容:WebView的使用方法今天我们来学习一个可以显示网页的控件WebView。WebView的网页渲染引擎和Safari、Chrome一样都是Webkit。使用WebView进行互联网程序开发有以下优点:1、可以打开远程网址、也可以加载本地Html数据2、可以搭建Java和Javascript交互桥梁3、WebView控件可以高度定制。下面我们通过几个例子来共同学习WebView的使用方法。一、先做一个例子热热身看看效果,例子:通过WebView访问本博客http://android.yaohuiji.com1、先来一个简单的例子,新建一个项目Lesson29_WebView2、因为要 阅读全文
(转)Android实现数据存储技术
2012-07-23 13:58 by ...平..淡..., 179 阅读, 收藏,
摘要:
本文介绍Android中的5种数据存储方式。数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:1使用SharedPreferences存储数据; 2文件存储数据;3SQLite数据库存储数据;4使用ContentProvider存储数据;5网络存储数据;下面将为大家一一详细介绍。第一种:使用SharedPreferences存储数据SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPr 阅读全文
Android模拟器使用SD卡
2012-07-08 12:18 by ...平..淡..., 935 阅读, 收藏,
摘要:
在Android手机上,所有的音乐、视频、图像文件都是存储在SD存储卡上的。但是如果想在Android模拟器上也同样能够存储这些内容,就必须先仿真SD存储卡,并让Android手机能够访问仿真出来的SD存储卡。Android SDK 组件的tools目录里,除了emulator这个运行文件外,另外放置mksdcard这个程序,它可以仿真出所需要的SD存储空间。下面说说如何在AVD中启用SD卡。1.创建镜像文件 用cmd中进入到android的SDK的tools目录下,执行mksdcard创建。 例如我的tools目录为:D:\Program Files\Android\android-sdk\ 阅读全文
SQLite详解
2012-05-14 17:58 by ...平..淡..., 437 阅读, 收藏,
摘要:
通过一个实例来分析..(转自http://blog.csdn.net/liuhe688/article/details/6715983,很好很强大,我根据自己需要摘取其中一部,稍作改动之后程序可运行)step1: 新建工程TestSQLite2,结构图如下其中MyHelper继承了SQLiteOpenHelper,作为维护和管理数据库的基类,DBManager是建立在DBHelper之上,封装了常用的业务方法,Person是我们的person表对应的JavaBean,MainActivity就是我们显示的界面。step2:(1)展示MyHelperMyHelper 1 package com. 阅读全文
SQLite入门
2012-05-14 16:03 by ...平..淡..., 462 阅读, 收藏,
摘要:
一、什么是SQLiteSQLite是一款开源的、轻量级的、嵌入式的、关系型数据库。它在2000年由D. Richard Hipp发布,可以支援Java、Net、PHP、Ruby、Python、Perl、C等几乎所有的现代编程语言,支持Windows、Linux、Unix、Mac OS、Android、IOS等几乎所有的主流操作系统平台。SQLite被广泛应用的在苹果、Adobe、Google的各项产品。如果非要举一个你身边应用SQLite的例子的话,如果你的机器中装的有迅雷,请打开迅雷安装目录,搜索一下sqlite3.dll,是不是找到了它的身影? 如果你装的有金山词霸,那么打开他的安装目录也 阅读全文
Handler的使用(二)
2012-05-13 01:03 by ...平..淡..., 456 阅读, 收藏,
摘要:
简单描述如下:Looper类 是用来封装消息循环和消息队列的一个类。handler 其实可以看做是一个工具类,通过Looper类向消息队列中插入消息,然后通过Looper类从消息队列中提取消息让handler类来处理消息的。ps:可以通过Loop.myLooper()可以得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的Looper对象。默认情况下建立的handler都是与当前线程的looper相关的,但是也可以获取主线程的looper,然后在子线程中建立主线程的handlerHandlerThread 类实现了循环处理消息的功能,所以在本文 阅读全文
Handler的使用(一)
2012-05-12 13:05 by ...平..淡..., 367 阅读, 收藏,
摘要:
Handler的定义(感觉讲得挺好的):主要接受子线程发送的数据, 并用此数据配合主线程更新UI.解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程), 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个Button,Android会分发事件到Button上,来响应你的操作.如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭".这个时候我们需要 阅读全文
Android程序完全退出的方法
2012-04-30 23:21 by ...平..淡..., 262 阅读, 收藏,
摘要:
2个Activity,调用顺序如:A-->B,然后关闭B的时候,退出整个应用程序.My opinion :在A中通过intent创建其与B的连接,调用startActivity方法创建并跳转到B后,调用finish方法结束A(即从历史栈中删除A),此时,A已经被销毁,不能再返回它了。Other opinion :1.Dalvik VM的本地方法(1)android.os.Process.killProcess(android.os.Process.myPid()) //获取PID,目前获取自己的也只有该API,否则从/proc中自己的枚举其他进程吧,不过要说明的是,结束其他进程不一定有权 阅读全文
浙公网安备 33010602011771号