首先简略说明绘制图片:
由于canvas.drawBitmap(bitmap, src, dst, paint);有四个参数所以大体有四五步。
1、通过getResource()方法得到drawable文件夹里BitmapDrawable类型的对象
2、将BitmapDrawable类型转化为Bitmap类型的对象
3、创建src, dst,两个长方形,src是指在原图形上截得的图片,dst是指贴到目标位置的长方形。
4、图片的画笔一般为null。
5、调用canvas.drawBitmap(bitmap, src, dst, paint)方法。
接着说明如何...
阅读全文
单一动画:
创建不同的animation对象
确定动画时间
view开始动画
复杂动画:
1、动画集
创建animation set对象
set对象加入不同的animation对象
set对象设定时间或者不同的animation对象分别设定时间
开始动画
2、逐帧动画
创建AnimationDrawable对象
向对象添加资源
向view对象增加AnimationDrawable显示
开始动画
示例代码:
动画集:
<span style="font-size:14px;"> AnimationSet animation = new...
阅读全文
将数据与程序分开的原因,表面是为了独立的管理数据,深层原因是使App兼容不同的环境即使你的数据支持不同语言或者不同屏幕大小的特殊设备。这是非常且越来越重要的!
对于各种各样的资源,我们统一分成两种:
默认资源和针对不同环境的备选资源
举个例子,默认资源存放在res/layout/ directory下,针对于横摆方向的设备的备选资源存放在res/layout-land/ directory(横摆方向的设备的具体方式见图)。当只有默认资源时,...
阅读全文
本文接引上文,主要解释如何在你的工程里组织资源和向不同的设备环境提供特有的资源。
一、分组资源种类
我们把所有资源分门别类的放在/res下的不同文件夹下,而且/res下的每一个文件夹的名称非常重要,代表不同的含义,如下表所示:
Table 1. Resource directories supported inside project
res/ directory.
Directory
Resource Type
animator/
XML files that define propertyanimations.
anim/
XML files that ...
阅读全文
Android提供了几种永久储存手机数据的选项,而我们选择存储的方式依据于我们存储的不同的特定需求,比如你的数据是否需要只对自己公开,数据是否可以被其他应用得到或者你想要储存多大的数据。
数据存储的方式如下: Shared Preferences
通过xml类型的键值对,存储私密的原始数据。 Internal Storage 内部存储
通过手机内存存储私密数据 External Storage 外部存储
在设备外部共享里存储公开的数据 SQLite Da...
阅读全文
发觉上篇翻译只注意一些细节,却没有写出数据存储的编程实现,这篇文章通过实例来完整的体现数据存储。
在实践中,发现的主要问题:
读取和写入的字符流和字节流,API文档上的对于FileInputStream的方法write()和read()属于字符流。
assets目录和R,raw目录的区别。
写入时,不可避免的字符编码问题。
package com.study.test02;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
i...
阅读全文
排错经验:不要因为某个变量简单熟悉就忽略对该值的检查,由此体现代码的健壮的重要性。
报错:NullPointException,错误处:lv.setAdapter(adapter);
也就是说,lv或adapter传值为空。
前期把精力全部投入到SimpleCursorAdapter,包括“_id”和API 11新出现的SimpleCursorAdapter的构造方法中出现的新的变量flags。(flags即标志,FLAG_REGISTER_CONTENT_OBSERVER的标志,即说明这个适配器是否注册到CONTENT_OBSERVER)
…...
阅读全文
Looper与Handle是Android独有的新概念,但我们学习中常常将他们分开学习,实际上两者密不可分。
Looper与Handle的关系:
Looper是负责在线程里建立消息循环的类,包括准备,开始循环,停止等整个消息循环的生命周期。Handle是负责不同线程之间消息的类,包括消息的发送,接受,清除等消息的生命周期。
但是只有存在Looper的线程,才会用到Handle。没有Handle,Looper无法接收消息,也就无法实现功能。
我们通过Looper与Ha...
阅读全文
转:Android下媒体库的实现
作者:jl
在Android下面,媒体库是以ContentProvider来实现的,所谓媒体库,这里并不是资源管理器,而是一个多媒体的文件的管理,多媒体文件包含很多的信息,如作者、年份、专辑、封面等等,在Android下面,这个Provider的实现是在
frameworks/base/core/java/android/provider/MediaStore.java
packages/providers/MediaProvider/src/com/android/providers/media.
frameworks/base/media/java...
阅读全文
MediaStore这个类是 android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提取。这个MediaStore包括了多媒体数据库的所有信息,包括 音频,视频和图像,android把所有的多媒体数据库接口进行了封装,所有的数据库不用自己进行创建,直接调用利用ContentResolver去掉 用那些封装好的接口就可以进行数据库的操作了。今天我就介绍一些这些接口的用法。
首先,要得到一个ContentResolver实例,ContentResolver可以...
阅读全文