android下麵res目錄

来源:http://www.cnblogs.com/zoufeng/archive/2016/08/04/5735524.html
-Advertisement-
Play Games

1. 相關文件夾介紹 在Android項目文件夾裡面,主要的資源文件是放在res文件夾裡面的。assets文件夾是存放不進行編譯加工的原生文件,即該文件夾裡面的文件不會像xml,java文件被預編譯,可以存放一些圖片,html,js, css等文件。在後面會介紹如何讀取assets文件夾的資源! r ...


1. 相關文件夾介紹      在Android項目文件夾裡面,主要的資源文件是放在res文件夾裡面的。assets文件夾是存放不進行編譯加工的原生文件,即該文件夾裡面的文件不會像xml,java文件被預編譯,可以存放一些圖片,html,js, css等文件。在後面會介紹如何讀取assets文件夾的資源!      res文件夾裡面的多個文件夾的各自介紹(來自網上的Android開髮指南中文版內容):

目錄Directory

資源類型Resource Types

res/anim/

XML文件,它們被編譯進逐幀動畫(frame by frame animation)或補間動畫(tweened animation)對象

res/drawable/

 

res/drawable-hdpi/

 

res/drawable-ldpi/

 

res/drawable-mdpi/

 

res/drawable-xhdpi/

 

res/drawable-xxhdpi/

 

res/drawable-zh/

 

res/drawable-en-rUS-port-hdpi/

.png、.9.png、.jpg文件,它們被編譯進以下的Drawable資源子類型中:

要獲得這種類型的一個資源,可以使用Resource.getDrawable(id)

點陣圖文件

9-patches(可變尺寸的點陣圖)

為了獲取資源類型,使用mContext.getResources().getDrawable(R.drawable.imageId)

註意:放在這裡的圖像資源可能會被aapt工具自動地進行無損壓縮優化。比如,一個真彩色但並不需要256色的PNG可能會被轉換為一個帶調色板的8位PNG。這使得同等質量的圖片占用更少的資源。所以我們得意識到這些放在該目錄下的二進位圖像在生成時可能會發生變化。如果你想讀取一個圖像位流並轉換成一個點陣圖(bitmap),請把圖像文件放在res/raw/目錄下,這樣可以避免被自動優化。

 

drawable- hdpi、drawable- mdpi、drawable-ldpi的區別:

  (1)drawable-hdpi裡面存放高解析度的圖片,如WVGA (480x800),FWVGA (480x854)

  (2)drawable-mdpi裡面存放中等解析度的圖片,如HVGA (320x480)

  (3)drawable-ldpi裡面存放低解析度的圖片,如QVGA (240x320)

  系統會根據機器的解析度來分別到這幾個文件夾裡面去找對應的圖片。

  在開發程式時為了相容不同平臺不同屏幕,建議各自文件夾根據需求均存放不同版本圖片。

Aphone一般到drawable-hdpi去取圖片,drawable-hdpi沒有圖片再到drawable-mdpi去取圖片,而後再到drawable-ldpi取圖片

Apad一般到drawable-mdpi去取圖片,drawable-hdpi沒有圖片再到drawable-ldpi去取圖片

橫屏含有drawable-land- hdpi、drawable-land- mdpi、drawable-land-ldpi的區別:

Aphone一般到drawable-land-hdpi去取圖片,drawable-land-hdpi沒有圖片再到drawable-land-mdpi去取圖片,而後再到drawable-land-ldpi取圖片,而後才會到drawable-hdpi去取圖片,drawable-hdpi沒有圖片再到drawable-mdpi去取圖片,而後再到drawable-ldpi取圖片

Apad一般到drawable-land-mdpi去取圖片,drawable-land-hdpi沒有圖片再到drawable-land-ldpi去取圖片,而後才會到drawable-mdpi去取圖片,drawable-hdpi沒有圖片再到drawable-ldpi去取圖片

 

-finger    用於觸摸屏的設備

-hdpi    近似於240dpi的高級顯示密度的屏幕

-mdpi    近似於160dpi的中級顯示密度的屏幕

-ldpi    近似於120dpi的低級顯示密度的屏幕

-land    橫屏顯示

-port    豎屏顯示

-long    比較長的屏幕,例如WQVGA(432×240), WVGA(800×480), FWVGA(854×480)

 

drawable-en:英文設置下的圖片資料,drawable-zh中文設置下的圖片資料。
若是要為不合像素的手機籌辦的話,須要(以drawable-en為例申明)
:drawable-en-hdpi
:drawable-en-ldpi
:drawable-en-mdpi
同理:為美式英語,
:drawable-en-rUS-hdpi
:drawable-en-rUS-ldpi
:drawable-en-rUS-mdpi

 

//豎屏

:drawable-en-rUS-port-hdpi
:drawable-en-rUS-port-ldpi
:drawable-en-rUS-port-mdpi
//橫屏
:drawable-en-rUS-land-hdpi
:drawable-en-rUS-land-ldpi
:drawable-en-rUS-land-mdpi

建樹這些文件夾是有次序的。即按優先順序別分列的,見下表。所以建樹文件夾時一般從左到右的分列其優先順序別如:drawable-en-rUS-land-mdpi
如:drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480 x320/

res/layout/

res/layout-land/   res/layout-port/   res/layout-land-1024x720 /   res/layout-port-976x768 /
如下目錄: layout layout-land layout-port layout-land-1024x720 //1024x768橫屏 layout-port-976x768     //1024x768豎屏 註意事項: 在android3.0之前版本,要適配指定的解析度,需將layout文件夾定義成如下名稱:   layout   layout-1024x768    layout-1024x600    layout-1280x768    但是,在android3.0後,要適配如上的解析度,需將高度減去48像素,即底部狀態欄的高度,android方可識別。針對以上解析度,android4.0的layout文件夾應該定義為如下名稱:   layout   layout-1024x720    layout-1024x552   layout-1280x720    還有一種情況 如果是平板,有可能是豎屏的,需要是   layout   layout-976x768    layout-976x600    layout-976x768 

 

格式如上。用法與正常的相同。手機會根據解析度,自己找對應的佈局,不用控制, 只需在res下按上述方式,新建對應layout就可以。     註意的是解析度中大的數字必須寫到前面,否則會產生語法錯誤。 如layout-768x1024 的寫法是錯誤的。   註意格式,【layout】-【port/land】-【長度x寬度】   如何限定橫屏或者豎屏?

有些人討厭玩手機的時候橫豎屏來回的切換,有些應用也限定了應用程式只使用橫屏或者只使用豎屏,即使手機設置了“自動切換橫豎屏”。比如“水果忍者”是不能豎屏的(雙人模式除外了)

解決辦法:只需要在AndroidManifest.xml的Activity標簽中加入:android:screenOrientation="landscape"

android:screenOrientation="landscape"表示橫屏

android:screenOrientation="protrait"表示豎屏

這樣,所設定的應用程式就只能是橫屏或者豎屏了

 

res/values/

 

res/values-ldpi/
res/values-mdpi/
res/values-hdpi/
res/values-xhdpi/
res/values-nodpi/
res/values-nodpi-1024×600/
res/values-nodpi-1280×800/
res/values-nodpi-800×480/

res/values-en-rUS/

可以被編譯成很多種類型的資源的XML文件。

註意: 不像其他的res/文件夾,它可以保存任意數量的文件,這些文件保存了要創建資源的描述,而不是資源本身。XML元素類型控制這些資源應該放在R類的什麼地方。

儘管這個文件夾里的文件可以任意命名,不過下麵使一些比較典型的文件(文件命名的慣例是將元素類型包含在該名稱之中):

      array.xml 定義數組

     colors.xml 定義color drawable顏色的字元串值(color string values)。使用Resource.getDrawable()和Resources.getColor()分別獲得這些資源。

     dimens.xml定義尺寸值(dimension value)。使用Resources.getDimension()獲得這些資源。

      strings.xml定義字元串(string)值。使用Resources.getString()或者Resources.getText()獲取這些資源。getText()會保留在UI字元串上應用的豐富的文本樣式。

      styles.xml 定義樣式(style)對象。

 

以添加一個 英語(美國):values-en-rUS 為例

1、把下麵左列表中的Region添加到左邊的列表裡面,併在Region輸入框里輸入us

2、這時,上面的消息提示:如果用Region的話,需要使用語言項,和Region一樣,我們把Language也添加到右面的列表裡面,填入en

3、點擊Finish按鈕,資源文件就會建好了,目錄:/res/values-en-rUS(其實上面一大堆操作,就是為生成這個目錄

android多國語言文件夾文件彙總如下:

Arabic, Egypt (ar_EG) -----------------------------阿拉伯語,埃及
Arabic, Israel (ar_IL) -------------------------------阿拉伯語,以色列
Bulgarian, Bulgaria (bg_BG) ---------------------保加利亞語,保加利亞
Catalan, Spain (ca_ES) ---------------------------加泰隆語,西班牙
Czech, Czech Republic (cs_CZ) -----------------捷克語,捷克共和國
Danish, Denmark(da_DK) ------------------------丹麥語,丹麥
German, Austria (de_AT) -------------------------德語,奧地利
German, Switzerland (de_CH) -------------------德語,瑞士
German, Germany (de_DE) ----------------------德語,德國
German, Liechtenstein (de_LI) ------------------德語,列支敦斯登的
Greek, Greece (el_GR) ----------------------------希臘語,希臘
English, Australia (en_AU) -------------------------英語,澳大利亞
English, Canada (en_CA) --------------------------英語,加拿大
English, Britain (en_GB) ----------------------------英語,英國
English, Ireland (en_IE) -----------------------------英語,愛爾蘭
English, India (en_IN) --------------------------------英語,印度
English, New Zealand (en_NZ) ---------------------英語,紐西蘭
English, Singapore(en_SG) --------------------------英語,新加坡
English, US (en_US) -----------------------------------英語,美國
English, Zimbabwe (en_ZA) --------------------------英語,辛巴威
Spanish (es_ES) ----------------------------------------西班牙
Spanish, US (es_US) -----------------------------------西班牙語,美國
Finnish, Finland (fi_FI) ---------------------------------芬蘭語,芬蘭
French, Belgium (fr_BE) -------------------------------法語,比利時
French, Canada (fr_CA) -------------------------------法語,加拿大
French, Switzerland (fr_CH) --------------------------法語,瑞士
French, France (fr_FR) --------------------------------法語,法國
Hebrew, Israel (he_IL) ---------------------------------希伯來語,以色列
Hindi, India (hi_IN) -------------------------------------印地語,印度
Croatian, Croatia (hr_HR) ----------------------------克羅埃西亞語,克羅埃西亞
Hungarian, Hungary (hu_HU) ------------------------匈牙利語,匈牙利
Indonesian, Indonesia (id_ID) ------------------------印尼語,印尼
Italian, Switzerland (it_CH) ----------------------------義大利語,瑞士
Italian, Italy (it_IT) ---------------------------------------義大利語,義大利
Japanese (ja_JP) ----------------------------------------日語
Korean (ko_KR) ------------------------------------------北韓語
Lithuanian, Lithuania (lt_LT) --------------------------立陶宛語,立陶宛
Latvian, Latvia (lv_LV) ---------------------------------拉托維亞語,拉托維亞
Norwegian-Bokmol, Norway(nb_NO) ---------------挪威語,挪威
Dutch, Belgium (nl_BE) --------------------------------荷蘭語,比利時
Dutch, Netherlands (nl_NL) ---------------------------荷蘭語,荷蘭
Polish (pl_PL) -------------------------------------------波蘭
Portuguese, Brazil (pt_BR) ---------------------------葡萄牙語,巴西
Portuguese, Portugal (pt_PT) ------------------------葡萄牙語,葡萄牙
Romanian, Romania (ro_RO) ------------------------羅馬尼亞語,羅馬尼亞
Russian (ru_RU) ----------------------------------------俄語
Slovak, Slovakia (sk_SK) ------------------------------斯洛伐克語,斯洛伐克
Slovenian, Slovenia (sl_SI) ---------------------------斯洛維尼亞語,斯洛維尼亞
Serbian (sr_RS) ----------------------------------------塞爾維亞語
Swedish, Sweden (sv_SE) ----------------------------瑞典語,瑞典
Thai, Thailand (th_TH) --------------------------------泰語,泰國
Tagalog, Philippines (tl_PH) --------------------------菲律賓語,菲律賓
Turkish, Turkey (tr_TR) -------------------------------土耳其語,土耳其
Ukrainian, Ukraine (uk_UA) --------------------------聯合王國
Vietnamese, Vietnam (vi_VN) -----------------------越南語,越南
Chinese, PRC (zh_CN)--------------------------------中文,中國
Chinese, Taiwan (zh_TW)-----------------------------中文,臺灣

res/xml/

任意的XML文件,在運行時可以通過調用Resources.getXML()讀取。

res/raw/

直接複製到設備中的任意文件。它們無需編譯,添加到你的應用程式編譯產生的壓縮文件中。要使用這些資源,可以調用Resources.openRawResource(),參數是資源的ID,即R.raw.somefilename

 

2.自動生成的R class

     在項目文件夾的gen文件夾裡面有個R.java,我們平常引用的資源主要引用這個類的變數。        註意:R類是自動生成的,並且它不能被手動修改。當資源發生變動時,它會自動修改。  

3. 在代碼中使用資源

下麵是一個引用資源的語法: R.resource_type.resource_name  或者 android.R.resource_type.resource_name   其中resource_type是R的子類,保存資源的一個特定類型。resource_name是在XML文件定義的資源的name屬性,或者有其他文件類型為資源定義的文件名(不包含擴展名,這指的是drawable文件夾裡面的icon.png類似的文件,name=icon)。 Android包含了很多標準資源,如屏幕樣式和按鈕背景。要在代碼中引用這些資源,你必須使用android進行限定,如android.R.drawable.button_background。   下麵是官方給出的一些在代碼中使用已編譯資源的正確和錯誤用法的例子:
  1. // Load a background for the current screen from a drawable resource. 
  2. this.getWindow().setBackgroundDrawableResource(R.drawable.my_background_image); 
  3.  
  4. // WRONG Sending a string resource reference into a  
  5. // method that expects a string. 
  6. this.getWindow().setTitle(R.string.main_title); 
  7.  
  8. // RIGHT Need to get the title from the Resources wrapper. 
  9. this.getWindow().setTitle(Resources.getText(R.string.main_title)); 
  10.  
  11. // Load a custom layout for the current screen. 
  12. setContentView(R.layout.main_screen); 
  13.  
  14. // Set a slide in animation for a ViewFlipper object. 
  15. mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,  
  16.         R.anim.hyperspace_in)); 
  17.  
  18. // Set the text on a TextView object. 
  19. TextView msgTextView = (TextView)findViewByID(R.id.msg); 
  20. msgTextView.setText(R.string.hello_message);  
       查了SDK Doc,才明白為什麼window.setTitle要先Resources.getText,原來setTitle的參數是CharSequence,Resources.getText(int)返回的是CharSequence;而其他setText的參數有的是CharSequence,有的是int(這就是Resources變數值)。   同時官方還給了兩個使用系統資源的例子:
  1. //在屏幕上顯示標準應用程式的圖標
  2. public class MyActivity extends Activity { 
  3.     public void onStart() { 
  4.         requestScreenFeatures(FEATURE_BADGE_IMAGE); 
  5.         super.onStart(); 
  6.         setBadgeResource(android.R.drawable.sym_def_app_icon); 
  7.     } 
  8.  
  9. //應用系統定義的標準"綠色背景"視覺處理 
  10. public class MyActivity extends Activity 
  11.     public void onStart() { 
  12.         super.onStart(); 
  13.         setTheme(android.R.style.Theme_Black); 
  14.     } 
 

4. xml文件內引用資源

1) 引用自定義的資源        android:text="@string/hello"        這裡使用"@"首碼引入對一個資源的引用--在@[package:]type/name形式中後面的文本是資源的名稱。在這種情況下,我們不需要指定包名,因為我們引用的是我們自己包中的資源。type是xml子節點名,name是xml屬性名:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <string name="hello">Hello World, HelloDemo!</string> 
  4. </resources> 
  2) 引用系統資源        android:textColor="@android:color/opaque_red"   指定package: android   3) 引用主題屬性         另外一種資源值允許你引用當前主題中的屬性的值。這個屬性值只能在樣式資源和XML屬性中使用;它允許你通過將它們改變為當前主題提供的標準變化來改變UI元素的外觀,而不是提供具體的值。         android:textColor="?android:textDisabledColor"              註意,這和資源引用非常類似,除了我們使用一個"?"首碼代替了"@"。當你使用這個標記時,你就提供了屬性資源的名稱,它將會在主題中被查找--因為資源工具知道需要的屬性資源,所以你不需要顯示聲明這個類型(如果聲明,其形式就是?android:attr/android:textDisabledColor)。除了使用這個資源的標識符來查詢主題中的值代替原始的資源,其命名語法和"@"形式一致:?[namespace:]type/name,這裡類型可選。  

5. 替換資源(為了可替換的資源和配置)

    個人理解這個替換資源主要用於適應多種規格的屏幕,以及國際化。對於這部分的內容,請參考http://androidappdocs.appspot.com/guide/topics/resources/resources-i18n.html,以後再研究!   

6. Color Value

語法:
  1. <color name="color_name">#color_value</color> 
可以保存在res/values/colors.xml (文件名可以任意)。 xml引用:android:textColor="@color/color_name" Java引用: int color = Resources.getColor(R.color.color_name)   其中#color_value有以下格式(A代表Alpha通道): #RGB #ARGB #RRGGBB #AARRGGBB   xml示例(聲明兩個顏色,第一個不透明,第二個透明色):
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <color name="opaque_red">#f00</color> 
  4.     <color name="translucent_red">#80ff0000</color> 
  5. </resources> 
 

7.Color Drawables

語法:
  1. <drawable name="color_name">color_value</drawable> 
可以保存在res/values/colors.xml。 xml引用:android:background="@drawable/color_name" java引用:Drawable redDrawable = Resources.getDrawable(R.drawable.color_name)   color_name和上面的一樣。個人認為,一般情況下使用color屬性,當需要用到paintDrawable時才使用drawable屬性。   xml示例:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <drawable name="opaque_red">#f00</drawable> 
  4.     <drawable name="translucent_red">#80ff0000</drawable> 
  5. </resources> 
 

8. 圖片

      一般放在res/drawable/裡面。官方提示png (preferred), jpg (acceptable), gif (discouraged),看來一般使用png格式比較好! xml引用  @[package:]drawable/some_file java引用 R.drawable.some_file     引用是不帶擴展名  

9. dimension

語法:
  1. <dimen name="dimen_name">dimen_value單位</dimen> 
一般保存為res/values/dimen.xml。 度量單位: px(象素): 屏幕實際的象素,常說的解析度1024*768pixels,就是橫向1024px, 縱向768px,不同設備顯示效果相同。   in(英寸): 屏幕的物理尺寸, 每英寸等於2.54釐米。   mm(毫米): 屏幕的物理尺寸。   pt(點)  : 屏幕的物理尺寸。1/72英寸。   dp/dip  : 與密度無關的象素,一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。但dp和px的比例會隨著屏幕密度的變化而改變,不同設備有不同的顯示效果。   sp      : 與刻度無關的象素,主要用於字體顯示best for textsize,作為和文字相關大小單位。   XML: android:textSize="@dimen/some_name"
Java: float dimen = Resources.getDimen(R.dimen.some_name)   xml示例:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <dimen name="one_pixel">1px</dimen> 
  4.     <dimen name="double_density">2dp</dimen> 
  5.     <dimen name="sixteen_sp">16sp</dimen> 
  6. </resources> 
 

10. string

下麵是官方給出的正確/錯誤的例子:
  1. //不使用轉義符則需要用雙引號包住整個string 
  2. <string name="good_example">"This'll work"</string> 
  3.  
  4. //使用轉義符 
  5. <string name="good_example_2">This\'ll also work</string> 
  6.  
  7. //錯誤 
  8. <string name="bad_example">This won't work!</string> 
  9.  
  10. //錯誤 不可使用html轉義字元 
  11. <string name="bad_example_2">XML encodings won&apos;t work either!</string> 
     對於帶格式的string,例如在字元串中某些文字設置顏色,可以使用html標簽。對於這類型的string,需要進行某些處理,在xml裡面不可以被其他資源引用。官方給了一個例子來對比普通string和帶格式string的使用:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <string name="simple_welcome_message">Welcome!</string> 
  4.     <string name="styled_welcome_message">We are <b><i>so</i></b> glad to see you.</string> 
  5. </resources> 
Xml代碼
  1. <TextView 
  2.     android:layout_width="fill_parent" 
  3.     android:layout_height="wrap_content" 
  4.     android:textAlign="center" 
  5.     android:text="@string/simple_welcome_message"/> 
Java代碼
  1. // Assign a styled string resource to a TextView on the current screen. 
  2. CharSequence str = getString(R.string.styled_welcome_message); 
  3. TextView tv = (TextView)findViewByID(R.id.text); 
  4. tv.setText(str); 
    另外對於帶風格/格式的string的處理,就麻煩一點點。官方給了一個例子:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.   <string name="search_results_resultsTextFormat">%1$d results for &lt;b>&amp;quot;%2$s&amp;quot;&lt;/b></string> 
  4. </resources> 
這裡的%1$d是個十進位數字,%2$s是字元串。當我們把某個字元串賦值給%2$s之前,需要用htmlEncode(String)函數處理那個字元串:
  1. //title是我們想賦值給%2$s的字元串 
  2. String escapedTitle = TextUtil.htmlEncode(title); 
 然後用String.format() 來實現賦值,接著用fromHtml(String) 得到格式化後的string:
  1. String resultsTextFormat = getContext().getResources().getString(R.string.search_results_resultsTextFormat); 
  2. String resultsText = String.format(resultsTextFormat, count, escapedTitle); 
  3. CharSequence styledResults = Html.fromHtml(resultsText); 
 

11. assets文件夾資源的訪問

       assets文件夾裡面的文件都是保持原始的文件格式,需要用AssetManager以位元組流的形式讀取文件。       1. 先在Activity裡面調用getAssets()來獲取AssetManager引用。       2. 再用AssetManager的open(String fileName, int accessMode)方法則指定讀取的文件以及訪問模式就能得到輸入流InputStream。        3. 然後就是用已經open file 的inputStream讀取文件,讀取完成後記得inputStream.close()。       4.調用AssetManager.close()關閉AssetManager。

需要註意的是,來自Resources和Assets 中的文件只可以讀取而不能進行寫的操作
以下為從Raw文件中讀取:
代碼
    public String getFromRaw(){ 
            try { 
                InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) { 
                e.printStackTrace(); 
            }             
    } 
以下為直接從assets讀取
代碼
    public String getFromAssets(String fileName){ 
            try { 
                 InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) ); 
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) { 
                e.printStackTrace(); 
            }
    } 
當然如果你要得到記憶體流的話也可以直接返回記憶體流!

 

res/raw和assets的相同點:
1.兩者目錄下的文件在打包後會原封不動的保存在apk包中,不會被編譯成二進位。

   *res/raw和assets的不同點:
1.res/raw中的文件會被映射到R.java文件中,訪問的時候直接使用資源ID即R.id.filename;assets文件夾下的文件不會被映射到R.java中,訪問的時候需要AssetManager類。
2.res/raw不可以有目錄結構,而assets則可以有目錄結構,也就是assets目錄下可以再建立文件夾


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在上篇 Handler 原理分析和使用(一)中,介紹了一個使用Handler的一個簡單而又常見的例子,這裡還有一個例子,當然和上一篇的例子截然不同,也是比較常見的,實例如下。 實際運行這個例子,點擊Button之後,TextView文字內容會變成“I get Post Message”。為什麼會是這 ...
  • 作為一個完整的應用程式,數據存儲操作是必不可少的。因此,Android系統一共提供了四種數據存儲方式。分別是:SharePreference、文件存儲、SQLite、 Content Provider。對這幾種方式的不同和應用場景整理如下。第一種: 使用SharedPreferences存儲數據 適 ...
  • # 介紹1、官方文檔寫法```objcstatic AccountManager *DefaultManager = nil; + (AccountManager *)defaultManager { if (!DefaultManager) DefaultManager = [[self allo... ...
  • Scene Kit 是Apple 向 OS X 開發者們提供的 Cocoa 下的 3D 渲染框架。 Scene Kit 建立在 OpenGL 的基礎上,包含瞭如光照、模型、材質、攝像機等高級引擎特性,這些組件都是面向對象的,你可以用熟悉的 Objective-C 或 Swift 語言來編寫代碼。假如 ...
  • 蘋果手機端應用,如果發佈的到Appstore上,往往比較複雜,周期也比較長,Over-the-Air是Apple在 iOS4 中新加的一項技術,目的是讓開發者能夠脫離Appstore,實現從自己的伺服器下載並安裝iOS應用。簡單地說,就是用戶只需要在Safari中點開一條鏈接,就能直接在主界面中安裝 ...
  • 技術博客原地址:http://www.cnblogs.com/dashunzi/p/ApplePay.html#top 原技術博客中有源碼和視頻,有感興趣的朋友可以研究一下! 一、什麼是Apple Pay? 1. 概念 Apple Pay,簡單來說, 就是一種移動支付方式。通過Touch ID/ P ...
  • 最近做支付寶和微信接入自己APP工程的功能,遇到了一些問題,跟大家分享: 這裡先說Android開發微信支付接入。 首先根據官方文檔進行,對比支付寶的官方文檔,微信部分更顯得“摘要”一些。 導入後自行觸發的Gradle Build無法通過,提示需要Android Build Tool 22,所以又安 ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...