安卓第三天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓第三天相关的知识,希望对你有一定的参考价值。
获取SDCard内存信息
* @param view
*/
public void sdCardInfo(View view){
File storageDirectory = Environment.getExternalStorageDirectory();
* 返回该路径下文件的总大小,单位是字节。如果该路径不存在则返回0
long totalSpace = storageDirectory.getTotalSpace();
long usableSpace = storageDirectory.getUsableSpace();
* 将返回的大小格式化为byte、KB、MB、等等。
*/
String totalSpaceString = Formatter.formatFileSize(this, totalSpace);
String usableSpaceString = Formatter.formatFileSize(this, usableSpace);
StatFs fs = new StatFs(storageDirectory.getAbsolutePath());
long blockCount = fs.getBlockCount();
int blockSize = fs.getBlockSize();
int availableBlocks = fs.getAvailableBlocks();
long totalSizeFs = blockCount*blockSize;
long avaiSizeFs = blockSize*availableBlocks;
String totalSizeFsString = Formatter.formatFileSize(this, totalSizeFs);
String avaiSizeFsString = Formatter.formatFileSize(this, avaiSizeFs);
et_totalSize.setText(totalSizeFsString);
et_avaiSize.setText(avaiSizeFsString);
其中第一种方法是JDK API提供的,第二种方法是android API提供的。
在我们Android的开发中自己比较推荐使用第二种方法。因为第二种方法Google工程师专门针对Android系统设计的。相对更加的适用,
获取手机内部存储信息
* @param view
*/
public void memeoryInfo(View view){
File filesDir = getFilesDir();
long totalSpace = filesDir.getTotalSpace();
long usableSpace = filesDir.getUsableSpace();
String totalSpaceStr = Formatter.formatFileSize(this, totalSpace);
String usableSpaceStr = Formatter.formatFileSize(this, usableSpace);
et_totalSize.setText(totalSpaceStr);
et_avaiSize.setText(usableSpaceStr);
}
=====================================================================
工作中常用到
Ø 读写文件
工作中会用到一些操作文件的API:
Environment.getExternalStorageDirectory()获取当前SDCard
Environment.getExternalStorageState()方法获取SDCard当前状态
Context.openFileOutput(String name, int mode)可以获取一个文件输出流
Context.openFileInput(String name)可以获取一个文件输入流
context.getFilesDir().getAbsolutePath();获取应用路径
getCacheDir().getAbsolutePath();获取缓存目录
==
Ø 关于文件操作,在应用中一般都会有一个清除缓存这个功能
这个功能就是文件操作实现的:
显示缓存大小,要递归循环缓存文件夹下所有文件大小,然后求和。
清除缓存,要递归删除文件。
以后你们找项目,很多项目都有这个功能,面试的时候有可能会被问到如何实现的。
递归删除代码:这个方法要在子线程中做
=================================
文件存储在数据库
helper.getWritableDatabase();
1.1. 列表视图(ListView) 分批加载、分页加载
1.1. 常见的适配器Adapter
ListView中使用的适配器有: BaseAdapter、ArrayAdapter、SimpleAdapter。
Ø Listview优化
l 重用ConvertView 减少加载xml的时间
l 利用ViewHolder 减少findviewByid的时间
l 如果只涉及到一个Item的某一个控件的更改,不应该去刷新整个ListView(notifyDataSetChanged())
而是给这个控件使用setTag(Position)的方式设置不同的tag,然后使用ListView.findViewByTag,找到这个对应的控件进行更改
(什么时候需要使用notifyDataSetChanged,当有一个条目添加或者删除,这个时候就必须刷新)
Ø 分批分页加载
Ø 适配器 BaseAdapter
Ø 一个对话框弹出,Activity会执行什么生命周期方法?
======================================================================
案例:银行转账,
使用方法:
l beginTransaction(): 开启一个事务
l setTransactionSuccessful():设置事务成功标记
l endTransaction(): 结束事务,包括提交和回滚,需要放在finally中执行,否则事务只有到超时的时候才自动结束,会降低数据库并发效率
执行过程:
使用beginTransaction开启一个事务,程序执行到endTransaction方法时会检查事务的标志是否为成功,如果程序执行到endTransaction之前调用了setTransactionSuccessful方法设置事务的标志为成功,则提交事务;如果没有调用setTransactionSuccessful方法则回滚事务。
事务对效率的提高
在批量修改数据的时候,由于事务是在进行事务提交时将要执行的SQL操作一次性打开数据库连接执行,
其执行速度比逐条执行SQL语句的速度快了很多倍。
因此当我们开发中遇到对数据库的批量操作那么,使用事务是提高效率的重要原则。
===================================================
Android中几个常用控件
ProgressBar、Spinner、AutoCompleteTextView、MultiAutoCompleteTextView等共四个控件的基本用法
======================================
Android中的样式和主题
Android实现国际化
======================================================
Android中的动画
帧动画FrameAnimation
渐变动画TweenAnimation
View Animation(Tween Animation):补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。
渐变包括:包括平移、缩放、旋转、改变透明度。动画效果的定义可以采用XML来做也可以采用java代码来做。补间动画有4种类型:
Alpha 渐变动画
Scale 伸缩动画
Translate 位移动画
Rotate 旋转
AnimationSet动画的集合
以上是关于安卓第三天的主要内容,如果未能解决你的问题,请参考以下文章