安卓第三天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓第三天相关的知识,希望对你有一定的参考价值。

获取SD卡和内存的空间信息的实现代码

获取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();获取缓存目录

==

Ø 关于文件操作,在应用中一般都会有一个清除缓存这个功能

这个功能就是文件操作实现的:

显示缓存大小,要递归循环缓存文件夹下所有文件大小,然后求和。

清除缓存,要递归删除文件。

以后你们找项目,很多项目都有这个功能,面试的时候有可能会被问到如何实现的。 

递归删除代码:这个方法要在子线程中做

=================================

文件存储在数据库  

步骤:
        创建自己的帮助类  继承SQLiteOpenHelper
        构造函数指定数据库的名称等
        重写onCreate();
        在MainActivity();        new MyDataBaseOpenHelper(this);

        helper.getWritableDatabase();

      在help类中
        onCreate        当数据库第一次被创建时调用,只会执行一次  
        db.execSQL(...)  创建数据库的表结构
        onUpgarade        当数据库需要更新时调用,  只能升级,不能降级
DOS下的数据库的增删改查
引入 ListView
MVC模式
数据库的更新升级
--------------------
listView的使用步骤 
        在xml文件布局中声明
        在Java中找到LV控件中设置适配器
        getCount()
        getView()

1.1. 列表视图(ListView) 分批加载、分页加载

1.1. 常见的适配器Adapter

ListView中使用的适配器有: BaseAdapterArrayAdapterSimpleAdapter

 

Ø Listview优化

l 重用ConvertView 减少加载xml的时间

l 利用ViewHolder 减少findviewByid的时间

l 如果只涉及到一个Item的某一个控件的更改,不应该去刷新整个ListView(notifyDataSetChanged())

                                   而是给这个控件使用setTag(Position)的方式设置不同的tag,然后使用ListView.findViewByTag,找到这个对应的控件进行更改

                                   (什么时候需要使用notifyDataSetChanged,当有一个条目添加或者删除,这个时候就必须刷新)

Ø 分批分页加载

Ø 适配器 BaseAdapter

常见对话框
        提醒对话款
        单选对话框
        多选对话框
        进度对话框
 状态栏通知

Ø 一个对话框弹出,Activity会执行什么生命周期方法?

======================================================================

事务管理   5.4   126页

案例:银行转账,

使用方法:

l beginTransaction(): 开启一个事务

l setTransactionSuccessful():设置事务成功标记

l endTransaction(): 结束事务,包括提交和回滚,需要放在finally中执行,否则事务只有到超时的时候才自动结束,会降低数据库并发效率

执行过程:

使用beginTransaction开启一个事务,程序执行到endTransaction方法时会检查事务的标志是否为成功,如果程序执行到endTransaction之前调用了setTransactionSuccessful方法设置事务的标志为成功,则提交事务;如果没有调用setTransactionSuccessful方法则回滚事务。

 事务对效率的提高 

在批量修改数据的时候,由于事务是在进行事务提交时将要执行的SQL操作一次性打开数据库连接执行,

其执行速度比逐条执行SQL语句的速度快了很多倍。

因此当我们开发中遇到对数据库的批量操作那么,使用事务是提高效率的重要原则。

===================================================

Android中几个常用控件

ProgressBarSpinnerAutoCompleteTextViewMultiAutoCompleteTextView等共四个控件的基本用法

======================================

Android中的样式和主题

Android实现国际化

======================================================

Android中的动画

帧动画FrameAnimation

渐变动画TweenAnimation

View Animation(Tween Animation):补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。

渐变包括:包括平移、缩放、旋转、改变透明度。动画效果的定义可以采用XML来做也可以采用java代码来做。补间动画有4种类型:

Alpha 渐变动画

 Scale 伸缩动画

 Translate 位移动画

 Rotate 旋转

 

AnimationSet动画的集合

 

以上是关于安卓第三天的主要内容,如果未能解决你的问题,请参考以下文章

怎么用一台安卓手机控制另一台安卓手机?

什么叫安卓端车牌识别sdk?

用了这么久安卓机 但你知道安卓系统的隐藏彩蛋怎么玩吗?

用卓大师里面的“一键ROOT”出现了(获取ROOT权限失败,因为所需的安卓系统漏可能已经不存在)这啥情况

安卓系统开始收费!谷歌竟然收取每台安卓280元?

iOS推特第三方登录