随笔分类 - Android
安卓开发
摘要:1. 对于类的成员变量,不管程序有没有显式的进行初始化,Java虚拟机都会先自动给它初始化为默认值。默认值如下: Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d2. 局部变量声明之后,Java虚拟机就不会自动给它初始化为默认值,因此局部变量的使用必须先经过显式的初始化。 但是需要声明的是:对于只负责接收一个表达式的值的局部变量可以不初始化,参与运算和直接输出等其它情况的局部变量需要初始化。通过下面这个测试可以看到JVM对哪些数据初
阅读全文
摘要:在android 2.3上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主程序中进行,有两个方法可以解决。 一个是在主程序中增加:// 详见StrictMode文档 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // o...
阅读全文
摘要:Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。本文从应用的角度,着重介绍怎么用Bitmap来实现这些功能。 一、Bitmap的生成1.1 BitmapFactory decode出Bitmap Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。这必然是 某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,这个类就是BitmapFactory。图一、BitmapFac...
阅读全文
摘要:Android SDK提供了一个强大的类Drawable,Drawable这个抽象类到底代表了什么,如何使用?Drawable是个很抽象的概念,通过简单的例子程序来学习它,理解它。先看个简单的例子,使用Drawable的子类ShapeDrawable来画图,如下:public class testView extends View {private ShapeDrawable mDrawable;public testView(Context context) {super(context);int x = 10;int y = 10;int width = 300;int height =
阅读全文
摘要:一、在Android中访问图片在Android中操作图片是通过使用Drawable类来完成的。Drawable类有很多个子类,如BitmapDrawable用来操作位图;ColorDrawable用来操作颜色;ShapeDrawable用来操作各种形状。有三种方法实例化Drawable对象:一是使用保存在工程中的一个图片文件;二是使用XML定义Drawable属性;三是构造方法实例化,这种方法在实际开发中一般用不到。1、使用图片文件创建Drawable对象1)、在工程的资源文件夹下放入一个image1.jpg图片文件2)、创建布局文件main.xml并在其中添加一个ImageView组件3)、
阅读全文
摘要:Intent应该算是Android中特有的东西。你可以在Intent中指定程序要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料。都指定好后,只要调用startActivity(),Android系统会自动寻找最符合你指定要求的应用程序,并执行该程序。★intent大全:1.从google搜索内容Intent intent = new Intent();intent.setAction(Intent.ACTION_WEB_SEARCH);intent.putExtra(SearchManager.QUERY,"searchString")
阅读全文
摘要:android系统管理联系人的URI如下ContactsContract.Contacts.CONTENT_URI 管理联系人的UriContactsContract.CommonDataKinds.Phone.CONTENT_URI管理联系人的电话的UriContactsContract.CommonDataKinds.Email.CONTENT_URI 管理联系人的Email的Uri(注:Contacts有两个表,分别是rawContact和Data,rawContact记录了用户的id和name,其中id栏名称 为:ContactsContract.Contacts._ID, name名
阅读全文
摘要:遇到一个问题,我的地图浮标图片在WVGA手机上正好,在QVGA上就显的太大,所以我要根据屏幕的不同调整浮标的大小使其在QVGA大小合适。有的同事提出了依据分辨率来区分不同的屏幕,但是单WVGA就支持好几种不同的分辨率,QVGA又支持好几种。。。而且更神奇的时候,有时候,通过代码获取屏幕分辨率竟然得到了320 x 427,Android文档是不支持这种分辨率的,所以依据分辨率来区分不同的屏幕是行不通的。 还好通过仔细研读文档,“各种VGA的density是不同的,(hdpi: 240 , ldpi: 120 , mdpi: 160 , xhdpi: 320)”,所以只要求出不同屏幕...
阅读全文
摘要:android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多。Tab标签页的使用 首先要设计所有的分页的界面布局 在分页设计完成后,使用代码建立Tab标签页,并给每个分页添加标识和标题 最后确定每个分页所显示的界面布局建立一个“TabDemo”程序,包含三个XML文件,分别为tab1.xml、tab2.xml和tab3.xml,这3个文件分别使用线性布局、相对布局和绝对布局示例中的main.xml的代码
阅读全文
摘要:Inflater 英文意思是膨胀,在Android 中应该是扩展的意思吧。LayoutInflater的作用类似于findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml 布局文件,并且实例化!而findViewById()是找具体某一个xml 下的具体widget 控件(如:Button,TextView 等)。LayoutInflater inflater = LayoutInflater.from(this);View view=inflater.inflate(R.layout.ID, null);或者干脆并成一句:View view=..
阅读全文
摘要:当应用程序启动时,系统会为其创建一个进程,也会创建一个线程名字叫做main,所有其所属组件的创建,系统事件的处理,系统的回调等一切应用相关的事情都运行在此名叫main的线程中。此线程即为常说的主线程(main thread)。俗称的UI线程(UI thread)也是它,因为只有主线程可以操作UI相关的事情,所以有人把主线程也称作UI线程。为什么非主线程不能操作UI呢?因为对UI操作常常会引发系统的回调,所以如果允许第三线程来操作可能会引发系统回调的紊乱,进而会打乱整个框架的时序! 这里要特别注意的就是同一个进程中的所有组件运行在同一个线程中,Activiy,Service,Borad...
阅读全文
摘要:一.文件下载1.使用HTTP协议下载文件HttpURLConnection对象2.将下载的文件写入SDCARD下载的文件最好放入SDCARD 要想将下载下来的文件放入SDCARD,必须修改权限 /**这句很重要,为其添加可以访问sdcard的权限*/<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>二.xml解析1.什么是SAX SimpleAPI for XML 简单的解析XML的API2.SAX解析的基本原理3.SAX常用接口 ContentHandler接口
阅读全文
摘要:1.Google Map介绍 google提供给开发者的API 1)基于地图的API 2)android将大部分地图功能封装在MapView当中 3)MapView将通过GoogleMaps服务取得数据 并以地图的方式显示出来 4)MapView提供了一组控件用于地图的控制2.获取Maps API Key 1)应用程序签名(标识程序的开发者) 证书包含一个唯一的key 2)申请地图API Key的流程 a.生成证书指纹 1.在cmd下切换到.android目录下 2.输入命令:keytool -list -alias androiddebugkey -keystore debug...
阅读全文
摘要:Animations的使用*一套实现动画的API1.什么是Animations 实现动画效果2.Animations的分类 1)TweenedAnimations 提供了旋转,移动,伸展,和淡出等等效果 a.Alpha:淡入淡出效果 b.Scale:缩放效果 c.Rotate:旋转效果 d.Translate:移动效果 2)Frame-by-FrameAnimations 创建一个Drawable序列,可以按照时间间歇一个个的显示3.Animations的使用方法(一)代码实现1)使用TweenedAnimations的步骤 a.创建一个AnimationSet对象 可以把几个动画对象放...
阅读全文
摘要:1.UserLocation1)获取用户的位置2)追踪用户的移动2.UserLocation的API LocationManager:管理用户定位服务 LocationProviders:其他的定位方式 定位的分类(前两者是主要的): a.GPS定位(精确) b.NETWORK定位(粗糙) c.passive(被动) 步骤: a.在主配置文件中声明相应的权限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> b.获取LocationManager对象 c.选择Loc
阅读全文
摘要:蓝牙操作:1.蓝牙简介 目前是使用最广泛的无线通讯协议,针对近距离的设备通讯2.Android中与蓝牙相关的API 1)BluetoothAdapter 本地蓝牙适配器 2)BluetoothDevice 远程的蓝牙设备 3)扫描已配对的蓝牙设备 在主配置文件中声明蓝牙权限: <uses-permission android:name="android.permission.BLUETOOTH"/> 4)已配对蓝牙设备的查询 a.获得BluetoothAdapter对象 /**得到一个蓝牙适配器的方法*/ bluetoothAdapter = Bluetooth
阅读全文
摘要:1.什么事WIFI利用无线路由器上网的协议2.获取WIFI网卡的状态 WIFI网卡的状态是由一系列的整形常量来表示的 有状态: 网卡不可用WIFI_STATE_DISABLED 对应值为1 网卡正在关闭WIFI_STATE_DISABLING 对应值为0 网卡可用WIFI_STATE_ENABLED 对应的值为3 网卡正在打开WIFI_STATE_ENABLING 对应的值为2 未知网卡状态WIFI_STATE_UNKNOWN 对应值为43.操作WIFI所需要的权限 注:在android中设置权限的类是Manifest.permission4.改变WIFI网卡的状态 对网卡进行操作需...
阅读全文
摘要:SQLite一种小型的关系型数据库其官方网站:www.sqlite.org访问数据库的知识点:当访问数据库SQLite时必须使用SQLiteOpenHelper类涉及到几个重要的类:访问数据的类:SQLiteOpenHelper五个重要的方法:1)getReadableDatabase()---对数据库进行查询2)getWritableDatabase()---对数据库进行修改等等3)onCreate(SQLiteDatabase db)---创建数据库4)onOpen(SQLiteDatabase db)---打开数据库5)onUpgrade(SQLiteDatabase db, int o
阅读全文
摘要:Handler类的介绍主要作用:处理大量数据的功能放在单独一个类中1.Handler的基本使用Handler在使用过程中涉及到两个队列1)线程队列 注意的方法: a./**调用post方法,将线程对象加入到消息队列中*/ handler.post(thread); b./**从线程队列中清除此线程对象*/ handler.removeCallbacks(thread); c./**调用postDelayed方法,将线程对象延时加入到消息队列中*/ handler.postDelayed(thread, 2000);2)消息队列 /**将msg对象加入到消息队列当中*/ handler...
阅读全文
摘要:1.LinearLayout的使用方法一些不太熟悉的组件参数:/**在垂直方向居中*/android:gravity="center_vertical"注:dip格式与屏幕分辨率没关系,适应各种屏幕/**设置单行显示*/android:singleLine="true"2.TableLayou的使用方法大体框架:<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent
阅读全文