Android基礎第二天
public void addTime(){
SQLiteDatabase database = helper.getWritableDatabase();
for (int i = 0; i < 10000; i++) {
ContentValues values1 = new ContentValues();
values1.put("_id", i);
values1.put("name", "xxc"+i);
values1.put("age", i);
database.insert("test1", "_id", values1);
}
}
不開事務向資料庫插入一萬條資料,用時21911毫秒
public void addTime1(){
SQLiteDatabase database = helper.getWritableDatabase();
try {
database.beginTransaction();
for (int i = 0; i < 10000; i++) {
ContentValues values1 = new ContentValues();
values1.put("_id", i);
values1.put("name", "xxc"+i);
values1.put("age", i);
database.insert("test1", "_id", values1);
database.setTransactionSuccessful();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
database.endTransaction();
}
}
開啟事務向資料庫插入一萬條資料,用時3347毫秒
setTransactionSuccessful:呼叫該方法設定事務成功;否則endTransaction方法將回滾事務
endTransaction:有事務的標誌決定是提交事務還是回滾事務
結論就是:
android在批量運算元據的時候開事務要比不開事務效率要高!
android:visibility屬性
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕一"/>
<Button
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕二"/>
<Button
android:visibility="visible" 預設顯示
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕三"/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕一"/>
<Button
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕二"/>
<Button
android:visibility="invisible" 不顯示,但是位置保留
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕三"/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕一"/>
<Button
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕二"/>
<Button
android:visibility="gone" 不顯示,位置也不保留
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鈕三"/>
</LinearLayout>
當LinearLayout佈局的時候將元件放在螢幕左邊,要使用layout_gravity屬性(此時是沒有layout_alignParentRight屬性的)。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="右邊" />
</LinearLayout>
當佈局是RelativeLayout的時候,將元件放在螢幕左邊要使用layout_alignParentRight屬性(此時是沒有layout_gravity屬性的)。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
練習:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上面"/>
<Button
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下面"/>
<Button
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左面"/>
<Button
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右面"/>
<Button
android:id="@+id/center_BT"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中面"/>
<Button
android:layout_alignBaseline="@id/center_BT"
android:layout_toLeftOf="@id/center_BT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中左"/>
<Button
android:layout_alignBaseline="@id/center_BT"
android:layout_toRightOf="@id/center_BT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中右"/>
<Button
android:layout_centerHorizontal="true"
android:layout_above="@id/center_BT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中上"/>
<Button
android:layout_centerHorizontal="true"
android:layout_below="@id/center_BT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中下"/>
</RelativeLayout>
getFilesDir():獲取的資料夾路徑是 /data/data/包名/files
getCacheDir():獲取的資料夾路徑是 /data/data/包名/cache
openFileOutput("a.txt",0); 獲取的檔案路徑是 /data/data/包名/files/a.txt
SharedPreferences儲存路徑: /data/data/包名/shared_prefs/
在Android4.0之前讀SD卡是不需要許可權的,4.0之後則需要許可權
//獲取的資料夾路徑是 SD卡的路徑
File sdFile = Environment.getExternalStorageDirectory();
if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){//判斷SD卡狀態是否可用
Toast.makeText(getApplicationContext(), "SD卡不可用", Toast.LENGTH_SHORT).show();
return;
}
獲取指定目錄總空間和已用空間大小:
package com.xxc.util;
import java.io.File;
import android.content.Context;
import android.os.StatFs;
import android.text.format.Formatter;
public class MemoryUtil {
/**
* 獲取指定資料夾總空間的大小和可用空間大小
* @param path 指定資料夾File物件
* @return
*/
public static String getMemoryInfo(Context context,File path){
//獲取一個磁碟狀態物件
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize(); //獲取一個扇區的大小
long totalBlocks = stat.getBlockCount(); //獲取扇區個數
long availableBlocks = stat.getAvailableBlocks(); //獲取可用扇區數量
//總空間
String totalMemory = Formatter.formatFileSize(context, totalBlocks * blockSize);
//可用空間
String availableMemory = Formatter.formatFileSize(context,availableBlocks * blockSize);
StringBuffer sb = new StringBuffer();
sb.append("總空間:");
sb.append(totalMemory);
sb.append("\n可用空間:");
sb.append(availableMemory);
return sb.toString();
}
}
相關文章
- Mysql基礎學習第二天MySql
- Android基礎Android
- 14天學會安卓開發(第二天)Android程式設計基礎activity和intent安卓Android程式設計Intent
- Android基礎—FragmentAndroidFragment
- Android基礎知識Android
- Android 基礎之 HandlerAndroid
- Android 繪圖基礎Android繪圖
- Android基礎面試題Android面試題
- Android 面試基礎篇Android面試
- Android PopupMenu基礎用法Android
- [Android基礎] VideoViewAndroidIDEView
- Android基礎學習Android
- android基礎學習-android篇day12-android的UI基礎入門AndroidUI
- Android基礎-Activity基本使用Android
- Java for Android 基礎API整理JavaAndroidAPI
- android基礎夯實3Android
- Android OpenGL 基礎入門Android
- Android UI 繪圖基礎AndroidUI繪圖
- android基礎夯實2Android
- 程式設計師找工作必備 PHP 基礎面試題 - 第二天程式設計師PHP面試題
- android基礎學習-android篇day12-UI基礎控制元件(上)AndroidUI控制元件
- android基礎學習-android篇day13-UI基礎控制元件(下)AndroidUI控制元件
- Android基礎 Android EditText禁止輸入空格Android
- Android基礎之Activity全解析Android
- android混淆總結(基礎版)Android
- Android 自定義View基礎(一)AndroidView
- Android基礎知識學習Android
- Android面試之Java 基礎篇Android面試Java
- Android BLE基礎框架全新改版Android框架
- Android應用基礎知識Android
- Android過場動畫基礎教程Android動畫
- Android筆記----第二天(待更。。)Android筆記
- Android Retrofit 2.5.0使用基礎詳解Android
- Android RxJava:基礎介紹與使用AndroidRxJava
- Android NDK開發之JNI基礎Android
- Android基礎之Java集合框架CollectionAndroidJava框架
- 安卓(Android)開發基礎知識安卓Android
- Android入門教程 | Fragment 基礎概念AndroidFragment