欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android應用開發(fā)的一般文件組織結構講解

 更新時間:2015年12月01日 15:54:35   投稿:goldensun  
這篇文章主要介紹了Android應用開發(fā)的一般文件組織結構講解,同時附帶介紹了一個獲取Android的文件列表的方法,需要的朋友可以參考下

認識Android編程各個文件之間的聯(lián)系和使用方法,以及認識Activity文件結構的大體可以看下圖:

2015121155105100.png (226×482)

代碼在src中的.java文件中編輯,gen目錄下有一個R.java的文件,這個文件存儲res目錄下各種資源文件的id號,在主文件java中調用該資源的時候直接調用id號即可,如 R.layout.main ,這個條目得打開R.java文件中查看,"R"對應R.java文件,"layout"對應R.java文件中的layout類,"main"對應layout類中的一個靜態(tài)常量聲明。

實際上res中的每一個文件都會在R.java中自動產生靜態(tài)常量,這是res目錄和assets目錄最大的不同之處,這樣做的好處不言而喻,對資源的修改不會對代碼產生任何的影響,因為代碼中使用的只是ID號碼而已。

res目錄中的前三個文件夾是存放圖片資源的,而且通常情況下同一張圖片要有三個版本二,高低中分辨率。

第四個文件夾是存放布局文件的,main.xml,一個Activity對應一個xml文件,而且每個Activity都要在AndroidMainfest.xml中注冊一下。default.properties文件在學java的時候接觸過,無非也是對對代碼的可重復性使用和修改提供了方便而已。第一個Java Activity程序,會體現出這些文件之間的關系和使用。

下面程序任務:添加一個顯示文本和一個按鈕

對Activity的初步認識:就像一個窗口,能顯示信息,又像一個容器,能容納功能空間,如button,在程序角度上看,又像一個 類,可以和其他的類(Activity)發(fā)生聯(lián)系。

創(chuàng)建Activity的要點:

一個Activity就是一個類,類名隨意起,不過必須繼承Activity這個父類。
需要復寫onCreate()方法
每一個Activity都應該在AndroidManifest.xml文件中進行配置
為Activity添加必要的控件
整體文件代碼預覽:

MyActivity.java 文件

package geeker.MyActivity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends Activity {
  //成員變量的聲明
  private TextView myTextView = null;
  private Button myButton = null;
  //重寫OnCreate方法,會自動生成
  public void onCreate(Bundle savedInstanceState) {
    //調用父類方法,該句代碼自動生成
    super.onCreate(savedInstanceState);
    //通過布局文件的id調用該Activity所使用的布局文件
    setContentView(R.layout.main);
    //通過findViewById()方法拿到布局文件中添加的控件
    //不過在布局文件中添加控件的時候必須定義id號,
    //如:android:id="@+id/myTextView"
    myTextView = (TextView)findViewById(R.id.myTextView);
    myButton = (Button)findViewById(R.id.myButton);
    //向控件上制定顯示文字
    myTextView.setText("This is my first Activity !");
    myButton.setText("MY FIRST BUTTON"); 
  }
}

main.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
<TextView 
  android:id="@+id/myTextView"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  />
<Button
  android:id="@+id/myButton"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />  
</LinearLayout>

R.jar 文件該文件自動生成,不要自己改動

/* AUTO-GENERATED FILE. DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found. It
 * should not be modified by hand.
 */
package geeker.MyActivity;
public final class R {
  public static final class attr {
  }
  public static final class drawable {
    public static final int icon=0x7f020000;
  }
  public static final class id {
    public static final int myButton=0x7f050001;
    public static final int myTextView=0x7f050000;
  }
  public static final class layout {
    public static final int main=0x7f030000;
  }
  public static final class string {
    public static final int app_name=0x7f040001;
    public static final int hello=0x7f040000;
  }
}

其實走一遍添加Button的流程就明白各個文件間的聯(lián)系了:

1. 先打開main.xml文件,加一個button按鈕的布局

<Button
  android:id="@+id/myButton"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />

2. 其實上一步完成后,編譯運行已經能看到一個Button按鈕了,但是我想在按鈕上添加文字以說明該按鈕的作用,在java中的程序為 :
Button bt = new Button();
bt.setText("MY FIRST BUTTON");

那么在Android程序中如何在.java源文件中拿到剛才在main.xml中添加的控件呢?

基于這個目的,在main.xml文件中加了此句:android:id="@+id/myButton",這一句使得R.java文件中多了一個叫id的類,該控件的id號就在這個類中出現了,這樣做為了方便.java文件中的調用。

實際上如果不加上一句,該控件是不會在R.java文件中產生id號碼的,因為只有在res目錄中添加文件才會自動在R.java中產生id號,而添加一個控件只是在一個資源文件中做修改而已,所以不會自動產生id號。

我們可以看一下R.java文件中自動產生的ID代碼:

public static final class id {
    public static final int myButton=0x7f050001;
    public static final int myTextView=0x7f050000;
  }

然后在.java文件中就可通過getViewById()方法拿到控件了。

拿到控件之后就可以像java程序中一樣進行相關操作了,代碼如:

private Button myButton = null;
myButton = (Button)findViewById(R.id.myButton);
myButton.setText("MY FIRST BUTTON"); 

實際上這個流程只體現了xml文件和R.java文件之間的聯(lián)系(通過該句:android:id="@+id/myButton),以及.java與R.java之間的聯(lián)系(通過該句:findViewById(R.id.myTextView) )。補充一下其他文件關系的代碼體現:

MyActivity.java文件與Main.xml文件的聯(lián)系時通過MyActivity.java文件中的setContentView(R.layout.main);體現的,因為一個Activity文件要對應一個布局文件。

MyActivity.java文件與AndroidManifest.xml文件之間的聯(lián)系時通過AndroidManifest.xml文件中的。

<activity android:name=".MyActivity"
         android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

來體現的,這也說明了Activity創(chuàng)建的關鍵點之一:每一個Activity都應該在AndroidManifest.xml文件中進行配置。

PS:獲取Android的文件列表的方法

有的時候我們的程序需要去對android的指定目錄或者全局目錄進行遍歷獲取其中的文件,但是獲取文件的時候可能會遇到無法列出文件夾中的文件的問題,這就是我出現的問題,對于某個子文件夾進行獲取listFiles()的時候返回為NULL,也就是不允許列出文件夾中內容。這個是由于android中的安全機制的緣故,由于android繼承了Linux系統(tǒng)的傳統(tǒng),對于某個特定的目錄有用戶的權限,一共分為三種--可讀,可寫,可執(zhí)行;雖然說我們可以設置某個特定的目錄的權限,但是對于目錄里面的子目錄和子文件都可以進行權限的設置,也就是說出了根目錄權限之外,子目錄本身的權限也決定了子目錄可否訪問,這一點我們需要清楚了解,所以我們在判斷完了是否是目錄之外,我們還需要在進行l(wèi)istFiles()獲取File[]數據后判斷獲取的數組是否為空,如果為空的話,文件夾是不可訪問的。樣例代碼如下:

package net.nowamagic.file;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.util.Log;
/**
 * @author 
 * function 用于掃描SD卡上的文件
 *
 */
public class FileScan {
  
  private static final String TAG = "FileScan";
  public HashMap<String, String> getMusicListOnSys(File file) {
    
    //從根目錄開始掃描
    Log.i(TAG, file.getPath());
    HashMap<String, String> fileList = new HashMap<String, String>();
    getFileList(file, fileList);
    return fileList;
  }
  
  /**
   * @param path
   * @param fileList
   * 注意的是并不是所有的文件夾都可以進行讀取的,權限問題
   */
  private void getFileList(File path, HashMap<String, String> fileList){
    //如果是文件夾的話
    if(path.isDirectory()){
      //返回文件夾中有的數據
      File[] files = path.listFiles();
      //先判斷下有沒有權限,如果沒有權限的話,就不執(zhí)行了
      if(null == files)
        return;
      
      for(int i = 0; i < files.length; i++){
        getFileList(files[i], fileList);
      }
    }
    //如果是文件的話直接加入
    else{
      Log.i(TAG, path.getAbsolutePath());
      //進行文件的處理
      String filePath = path.getAbsolutePath();
      //文件名
      String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
      //添加
      fileList.put(fileName, filePath);
    }
  }
  
}

相關文章

  • Spring?Boot?+?Spring?Batch?實現批處理任務的詳細教程

    Spring?Boot?+?Spring?Batch?實現批處理任務的詳細教程

    這篇文章主要介紹了Spring?Boot+Spring?Batch實現批處理任務,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java語言實現反轉鏈表代碼示例

    Java語言實現反轉鏈表代碼示例

    這篇文章主要介紹了Java語言實現反轉鏈表代碼示例,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • mybatis一直加載xml,找到錯誤的解決方案

    mybatis一直加載xml,找到錯誤的解決方案

    這篇文章主要介紹了mybatis一直加載xml,找到錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • IDEA插件Statistic統(tǒng)計代碼快速分辨爛項目

    IDEA插件Statistic統(tǒng)計代碼快速分辨爛項目

    這篇文章主要為大家介紹了使用IDEA插件Statistic來統(tǒng)計項目代碼,幫助大家快速識別出爛項目,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-01-01
  • Java實現隨機出題,10道10以內加減法計算代碼實例

    Java實現隨機出題,10道10以內加減法計算代碼實例

    這篇文章主要介紹了Java實現隨機出題,10道10以內加減法計算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Linux系統(tǒng)下更換jdk版本詳細步驟

    Linux系統(tǒng)下更換jdk版本詳細步驟

    隨著Java語言的不斷更新,多個版本的JDK在現在的Linux環(huán)境中都存在,使得不同的開發(fā)人員可以按照自己的需求使用不同的JDK版本,這篇文章主要給大家介紹了關于Linux系統(tǒng)下更換jdk版本的詳細步驟,需要的朋友可以參考下
    2023-12-12
  • 手把手教你用Java給暗戀對象發(fā)送一份表白郵件

    手把手教你用Java給暗戀對象發(fā)送一份表白郵件

    隨著我們學習java的深入,也漸漸發(fā)現了它的一些樂趣,比如發(fā)送郵件,下面這篇文章主要給大家介紹了關于如何利用Java給暗戀對象發(fā)送一份表白郵件的相關資料,需要的朋友可以參考下
    2021-11-11
  • java使用反射創(chuàng)建并操作對象的方法

    java使用反射創(chuàng)建并操作對象的方法

    這篇文章主要介紹了java使用反射創(chuàng)建并操作對象的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • Java使用JDBC連接數據庫的詳細步驟

    Java使用JDBC連接數據庫的詳細步驟

    本文詳細講解了Java使用JDBC連接數據庫的詳細步驟,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • SpringCloud Feign 服務調用的實現

    SpringCloud Feign 服務調用的實現

    Feign是一個聲明性web服務客戶端。本文記錄多個服務之間使用Feign調用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論