[Android應用開發] 02.界面展示和文件權限

常見佈局

相對佈局

RelativeLayout
  • 組件默認左對齊、頂部對齊html

  • 設置組件在指定組件的右邊android

    android:layout_toRightOf="@id/tv1"
  • 設置在指定組件的下邊web

    android:layout_below="@id/tv1"
  • 設置右對齊父元素api

    android:layout_alignParentRight="true"
  • 設置與指定組件右對齊緩存

    android:layout_alignRight="@id/tv1"

線性佈局

LinearLayout
  • 指定各個節點的排列方向ide

    android:orientation="horizontal|vertical"
  • 設置右對齊佈局

    android:layout_gravity="right"
  • 當豎直佈局時,只能左右對齊和水平居中,頂部底部對齊豎直居中無效post

  • 當水平佈局時,只能頂部底部對齊和豎直居中網站

  • 使用match_parent時注意不要把其餘組件頂出去this

  • 線性佈局很是重要的一個屬性:權重

    android:layout_weight="1"
  • 權重設置的是按比例分配剩餘的空間

幀佈局

FrameLayout
  • 默認組件都是左對齊和頂部對齊,每一個組件至關於一個div

  • 能夠更改對齊方式

    android:layout_gravity="bottom"
  • 不能相對於其餘組件佈局

表格佈局

TableLayout
  • 每一個節點是一行,它的每一個子節點是一列

  • 表格佈局中的節點能夠不設置寬高,由於設置了也無效

    • 根節點的子節點寬爲匹配父元素,高爲包裹內容

    • 節點的子節點寬爲包裹內容,高爲包裹內容

    • 以上默認屬性沒法修改

  • 根節點中能夠設置如下屬性,表示讓第1列拉伸填滿屏幕寬度的剩餘空間

    android:stretchColumns="1"

絕對佈局

AbsoluteLayout
  • 直接指定組件的x、y座標

    android:layout_x="144dp"
    
      android:layout_y="154dp"

logcat

  • 日誌信息總共分爲5個等級

    • verbose

    • debug

    • info

    • warn

    • error

  • 定義過濾器方便查看

  • System.out.print輸出的日誌級別是info,tag是System.out

  • Android提供的日誌輸出api

    Log.v(TAG, "寶寶巴士!");
    
      Log.d(TAG, "寶寶巴士!");
    
      Log.i(TAG, "寶寶巴士!");
    
      Log.w(TAG, "寶寶巴士!");
    
      Log.e(TAG, "寶寶巴士!");

文件讀寫操做

  • Ram內存:運行內存,至關於電腦的內存

  • Rom內存:內部存儲空間,至關於電腦的硬盤(data/data/com.sinyee.babybus.packagename)

  • sd卡:外部存儲空間,至關於電腦的移動硬盤

在內部存儲空間中讀寫文件

小案例:用戶輸入帳號密碼,勾選「記住帳號密碼」,點擊登陸按鈕,登陸的同時持久化保存帳號和密碼

1. 定義佈局
2. 完成按鈕的點擊事件
  • 彈土司提示用戶登陸成功

    Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT).show();
3. 拿到用戶輸入的數據
  • 判斷用戶是否勾選保存帳號密碼

    CheckBox cb = (CheckBox) findViewById(R.id.cb);
    
      if(cb.isChecked()){
    
    
    
      }
4. 開啓io流把文件寫入內部存儲
  • 直接開啓文件輸出流寫數據

    //持久化保存數據
    
          File file = new File("data/data/com.itheima.rwinrom/info.txt");
    
          FileOutputStream fos = new FileOutputStream(file);
    
          fos.write((name + "##" + pass).getBytes());
    
          fos.close();
  • 讀取數據前先檢測文件是否存在

    if(file.exists())
  • 讀取保存的數據,也是直接開文件輸入流讀取

    File file = new File("data/data/com.itheima.rwinrom/info.txt");
    
      FileInputStream fis = new FileInputStream(file);
    
      //把字節流轉換成字符流
    
      BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    
      String text = br.readLine();
    
      String[] s = text.split("##");
  • 讀取到數據以後,回顯至輸入框

    et_name.setText(s[0]);
    
      et_pass.setText(s[1]);
  • 應用只能在本身的包名目錄下建立文件,不能到別人家去建立

直接複製項目

  • 須要改動的地方:

    • 項目名字

    • 應用包名

    • R文件從新導包

使用路徑api讀寫文件

  • getFilesDir()獲得的file對象的路徑是data/data/com.sinyee.babbyus.packagename/files

    • 存放在這個路徑下的文件,只要你不刪,它就一直在
  • getCacheDir()獲得的file對象的路徑是data/data/com.sinyee.babbyus.packagename/cache

    • 存放在這個路徑下的文件,當內存不足時,有可能被刪除
  • 系統管理應用界面的清除緩存,會清除cache文件夾下的東西,清除數據,會清除整個包名目錄下的東西

在外部存儲讀寫數據

sd卡的路徑

  • sdcard:2.3以前的sd卡路徑

  • mnt/sdcard:4.3以前的sd卡路徑

  • storage/sdcard:4.3以後的sd卡路徑

  • 最簡單的打開sd卡的方式

    File file = new File("sdcard/info.txt");
  • 寫sd卡須要權限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 讀sd卡,在4.0以前不須要權限,4.0以後能夠設置爲須要

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • 使用api得到sd卡的真實路徑,部分手機品牌會更改sd卡的路徑

    Environment.getExternalStorageDirectory()
  • 判斷sd卡是否準備就緒

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

查看源代碼查找獲取sd卡剩餘容量的代碼

  • 導入Settings項目

  • 查找「可用空間」獲得

    <string name="memory_available" msgid="418542433817289474">"可用空間"</string>
  • 查找"memory_available",獲得

    <Preference android:key="memory_sd_avail" 
    
          style="?android:attr/preferenceInformationStyle" 
    
          android:title="@string/memory_available"
    
          android:summary="00"/>
  • 查找"memory_sd_avail",獲得

    //這個字符串就是sd卡剩餘容量
    
      formatSize(availableBlocks * blockSize) + readOnly
    
      //這兩個參數相乘,獲得sd卡以字節爲單位的剩餘容量
    
      availableBlocks * blockSize
  • 存儲設備會被分爲若干個區塊,每一個區塊有固定的大小

  • 區塊大小 * 區塊數量 等於 存儲設備的總大小

Linux文件的訪問權限

  • 在Android中,每個應用是一個獨立的用戶

  • drwxrwxrwx

  • 第1位:d表示文件夾,-表示文件

  • 第2~4位:rwx,表示這個文件的擁有者用戶(owner)對該文件的權限

    • r:讀

    • w:寫

    • x:執行

  • 第5-7位:rwx,表示跟文件擁有者用戶同組的用戶(grouper)對該文件的權限

  • 第8-10位:rwx,表示其餘用戶組的用戶(other)對該文件的權限

openFileOutput的四種模式

  • MODE_PRIVATE:-rw-rw----

  • MODE_APPEND:-rw-rw----

  • MODE_WORLD_WRITEABLE:-rw-rw--w-

  • MODE_WORLD_READABLE:-rw-rw-r--

 

 

本站文章爲 寶寶巴士 SD.Team 原創,轉載務必在明顯處註明:(做者官方網站: 寶寶巴士 
轉載自【寶寶巴士SuperDo團隊】 原文連接: http://www.cnblogs.com/superdo/p/4871079.html

相關文章
相關標籤/搜索