安卓為什麼要有src
① 關於Android界面組件的基本用法
1.文本框(TextView)和編輯框(EditText)
文本框(TextView)不允許用戶編輯文本內容,而編輯框(EditText)允許用戶編輯文本內容
2.按鈕(Button)和圖片按鈕(ImageButton)
Button顯示文字,ImageButton顯示圖片。
為ImageButton指定android:text屬性沒用,不會顯示文字
可以指定android:background為按鈕增加背景圖片,但這圖片是固定的
可以指定android:src為圖片按鈕增加圖片屬性
其實,src才是設置圖標,而background只是設置背景。
如果控制項的大小是100 100 圖片資源是80 80的話,那麼用src,圖片就會居中顯示,如果使用background那麼圖片就會被拉伸充滿控制項。
重要的是,background是底層的圖片資源,src是覆蓋在background上面的資源,他們可以疊加使用,實現選中的效果。
3.單選按鈕(RadioButton)和復選框(CheckBox)
多了一個android:checked屬性,用於指定初始時是否被選中
4.計時器組件Chronometer用法
紅色字體表示常用的方法
5.圖像視圖(ImageView)
它支持屬性android:scaleType setScaleType(ImageView.ScaleType)
matrix(ImageView.ScaleType.MATRIX):使用matrix方式進行
fixXY(ImageView.ScaleType.FIX_XY):對圖片橫向縱向獨立縮放,會改變縱橫比
fitStart(ImageView.ScaleType.FIT_START):保持縱橫比,圖片較長的邊長與ImageView相應的邊長相等,縮放後放在左上角
fitCenter(ImageView.ScaleType.FIT_CENTER):保持縱橫比,圖片較長的邊長與ImageView相應的邊長相等,縮放後放在中央
fitEnd(ImageView.ScaleType.FIT_END):保持縱橫比,圖片較長的邊長與ImageView相應的邊長相等,縮放後放在右下角
center(ImageView.ScaleType.CENTER):放中間,不縮放
centerCrop(ImageView.ScaleType.CENTER_CROP):保持縱橫比,使圖片能完全覆蓋ImageView
centerInside(ImageView.ScaleType.CENTER_INSIDE):保持縱橫比,使ImageView能完全顯示圖片
6.spinner的功能和用法
如果可以確定spinner裡面的列表項,那麼直接在/res/layout/main.xml裡面指定
然後在/res/value/string.xml裡面指定
如果不確定裡面的列表項,那麼必須要提供一個Adapter,這個Adapter負責決定Spinner列表每項的內容
7.日期、時間選擇器(DatePicker和TimePicker)
8.自動完成文本框(AutoCompleteTextView)
比普通文本框多了一個功能:當用戶輸入一定字元後,自動完成文本框會顯示一個下拉菜單,供用戶從中選擇,當用戶選擇某個菜單後,組件會按用戶選擇自動填寫該文本框
使用該組件很簡單,只要為它設置一個Adapter,該Adapter封裝了AutoCompleteTextView預設的提示文本
9.進度條(ProgressBar)
通過style屬性可以為ProgressBar指定風格。該屬性可以有如下的屬性值:
1.@android:style/Widget.ProgressBar.Horizontal 水平進度條
2.@android:style/Widget.ProgressBar.Inverse 不斷跳躍、旋轉畫面的進度條
3.@android:style/Widget.ProgressBar.Large 大進度條
4.@android:style/Widget.ProgressBar.Large.Inverse不斷跳躍、旋轉畫面的大進度條
5.@android:style/Widget.ProgressBar.Small 小進度條
6.@android:style/Widget.ProgressBar.Small.Inverse不斷跳躍、旋轉畫面的小進度條
ProgressBar提供如下方法來操作進度
1.setProgress(int) 設置進度的完成百分比
2.incrementProgressBy(int) 設置進度條的增加或減少。參數為正增加,參數為負減少
10.選項卡(TabHost)
TabHost僅僅只是一個簡單的容器,它提供如下方法
1.newTabSpec(String tag) 創建選項卡
2.addTab(TabHost.TabSpec tabSpec) 添加選項卡
使用TabHost的一般步驟為:
• A. 在界面中定義TabHost組件,並為該組件定義該選項卡的內容
• B. Activity應該繼承TabActivity
• C. 調用TabActivity的getTabHost()來獲取TabHost對象
• D. 通過TabHost對象的方法來創建選項卡、添加選項卡
選項卡主要由TabHost、TabWidget、FrameLayout3個組件組成,三者缺一不可,想像一下選項卡的特點,多個卡重疊在一起,所以用FrameLayout即幀布局是必要的。另外需要注意的是TabHost、TabWidget、FrameLayout三個組件的android:id必須使用系統默認的名稱,而不能自己隨意定義,否則會出錯。
11.圖像切換器(ImageSwitcher)
12.網格視圖(GridView)
使用GridView一般指定numColumn大於1,否則取默認值為1.那麼GridView就變成了ListView
屬性android:stretchMode支持如下屬性
1.none 不拉伸
2.spacingWidth 僅拉伸元素之間的間距
3.spacingWidthUniform 表格、元素之間的間距一起拉伸
4.columnWidth 僅拉伸表格
13.畫廊視圖(Gallery)(現在已經被棄用了,不過還是列出來吧)
Gallery用法很簡單——為它提供一個內容Adapter,該Adapter的getView方法所返回的View可作為Gallery的列表項。可以通過OnItemSelectedListener監聽選擇項的改變
14.列表試圖(ListView和ListActivity)
1.創建ListView由兩種方式:
2.直接使用ListView進行創建
讓Activity繼承ListActivity(繼承了ListActivity的類無需調用setContentView()來顯示頁面,可以直接設置適配器)
一旦獲得ListView後,就要創建顯示的列表項了。需要藉助內容Adapter,內容Adapter負責提供需要顯示的列表項
創建ArrayAdapter時必須指定一個textViewResourceId,該參數決定每個列表項的外觀
1.simple_list_item_1 每個列表項是普通的TextView
2.simple_list_item_2 每個列表項是普通的TextView(字體略大)
3.simple_list_item_checked 每個列表項是已勾選的列表項
4.simple_list_item_multiple_choice 每個列表項是帶多選框的文本
5.simple_list_item_single_choice 每個列表項是帶多單選按鈕的文本
15.使用AlertDialog
1.創建AlertDialog.Builder對象,該對象是AlertDialog的創建器
2.調用AlertDialog.Builder方法為對話框設置圖標、標題等
3.調用AlertDialog.Builder的create()方法創建AlertDialog對話框
4.調用AlertDialog的show()方法顯示對話框
16.使用Toast顯示提示框
步驟如下:
• 調用Toast構造器或makeText方法創建Toast對象
• 調用Toast方法來設置該消息的對齊方式等
• 調用Toast的show()方法顯示出來
• Toast toast = Toast.makeText(ToastTest.this, "信息", Toast.LENGTH_LONG).show();
17.Notification(一般顯示網路狀態、電池狀態、時間等)
使用Notification發送Notification步驟:
• 調用getSystemService(NOTIFICATION_SERVICE)方法獲取系統的Notification Manager服務
• 通過構造器創建一個Notification對象
• 為Notification設置屬性
• 通過Notification Manager發送Notification
② 與Android應用程序相關的文件目錄都有哪些
1.1src文件夾和assets文件夾:
每個Android程序都包含資源目錄(src)和資產目錄(assets),資源和資產聽起來感覺沒有多大差別,但在存儲外部內容時用資源(src)比較多,其中它們的區別在於存放在資源(src)下的內容可以通過應用程序的R類進行訪問,而存放在資產(assets)下的內容會保持原始文件的格式,如果需要訪問,則必須使用AssetManager以位元組流的方式來讀取,用起來非常的不方便。為了方便使用,通常文件和數據都會保存在資源(src)目錄下
1.2res(Resource)目錄:資源目錄
可以存放一些圖標,界面文件和應用中用到的文字信息,下圖為res目錄截圖:
1.2.1 drawable-*dpi文件夾:將圖標按解析度的高低放入不同的目錄,其中draeable-hdpi用來存放高解析度的圖標,drawable-mdpi用來存放中等解析度的圖標,drawable-ldpi用來存放低解析度的圖標
1.2.2 values文件夾:用來存放文字的信息
(1)strings.xml:用來定義字元串和數值
每個string標簽生命了一個字元串,name屬性指定它的引用值
1.2.3 layout文件:用來存放界面信息
1.3 gen目錄:gen目錄下只有一個自動生成的「R.java」文件
1.4 AndroidManifest.xml 功能清單文件
1.5<project.properties>應用要求運行的最低Android版本
1.6<android 2.2> 存放Android自身的jar包
③ 安卓設備上的SRC問題-如何影響到最終的音質
什麼是SRC?
SRC就是Sample Rate Convertor采樣頻率轉換器,intel AC97規范約定了音效卡需要經過這樣一個處理過程,即將所有信號重新轉換成一個統一的采樣率輸出。SRC如果進行了非整數倍的轉換的話,比如44100->48000,會有較大的雜訊或者諧波出現,這些雜訊因轉換器的質量高低、演算法好壞而定,不優秀的演算法會比較嚴重的影響聽感。既然SRC是一個可能破壞音質的過程,為什麼會有這么一個產物呢?前面就說過,AC97是為了節省成本而訂,SRC的結果可以為音效卡省下一顆Crystal。SRC一般都通過軟體運算轉換,這樣受驅動版本的影響非常之大,例如Live!系列,SRC品質最好的是Windows Server2003 自帶的驅動,也有使用硬體SRC的,例如:CS4630音頻加速器。硬體SRC的品質往往大大優於軟體的SRC,SRC品質的好壞的重要性甚至比Codec的檔次更重要
④ SRC問題可解決 安卓手機音頻分析與測試
【IT168評測】現在一台智能手機繼承了非常多的功能,很多的人都會選擇使用手機來聽歌,手機的音樂播放功能足以取代了以前的MP3播放器的位置。實用手機來聽歌當然是非常方便,但是往往會覺得手機的音質並不是太好,特別是安卓系統的智能手機。
▲智能手機SRC測試
其實安卓智能系統的音頻架構導致了安卓手機的音樂播放質量差的問題,問題根源在於安卓系統在播放采樣頻率高於44.1KHz的音頻是會強制音頻的采樣頻率降低到44.1KHz,在這個過程中直接導致了出現SRC的問題,這是安卓系統的硬傷。關於安卓系統音頻架構可參考《尋找音質變差元兇 聊聊Android音頻架構》
什麼是SRC?SRC即Sample Rate Converter,中文意思為采樣頻率轉換。它被音效卡愛好者所關注,大部分發燒友視SRC為音質殺手。
▲安卓手機普遍存在SRC問題
最近我們收到了一款智能手機針對這個問題提出了他們的解決方案,使得安卓手機在音樂播放音質方面可以領先與其他的安卓智能手機,事實是否如此?下面我們來測試一下。
如何測試?
這款智能手機能夠解決安卓系統SRC問題在眾多手機廠商中算是第一個,我們來對這款手機測試一下,首先是使用20Hz到20KHz的全頻掃描進行測試,之後是進行主觀聽感的測試。
▲測試使用的44.1KHz音頻和48KHz音頻
全頻掃描測試使用2個采樣頻率的wav文件,44.1KHz的音頻和48KHz的音頻,將文件放在手機中進行播放,使用cool edit pro錄音,對錄音進行頻譜分析,入股出現SRC頻頻就會出現雜亂無章的線路。
▲正常沒出SRC的圖像
▲出現SRC時的圖像
第二張圖就是SRC的圖像,現在很多安卓手機都會存在SRC問題,理論上測試結果和第二張圖相似,而步步高vivo智能手機解決了SRC問題測試結果應該要接近第一張圖。
▲測試使用E-MU 0404專業音效卡
由於我們手上沒有專業的測試設備,只能使用電腦進行測試,測試使用E-MU 0404 PC專業音效卡作為輸入音效卡,採用cool edit pro來錄音,由於測試環境並不是十分專業可能會有少量的噪音引入,而圖像也不是十分完美,但也可以反映出問題。
SRC測試
這次測試不僅僅針對某品牌的智能手機,我們也找來了Nexus S和魅族M9進行對比,下面來看一下測試的結果。
44.1KHz采樣頻率音頻掃描:
▲Nexus S測試圖像(點擊放大)
▲魅族M9測試圖像(點擊放大)
▲某品牌安卓測試圖像(點擊放大)
上面的測試圖可以看到安卓系統在44.1KHz的采樣頻率下圖像都是非常干凈的,代表音質是沒有受到任何影響,這是由於安卓音頻架構規定的采樣頻率是44.1KHz,對於大部分的MP3音頻都是在44.1KHz的采樣頻率,對於MP3音頻安卓系統基本上問題不大。
48KHz采樣頻率音頻掃描
48KHz采樣頻率音頻掃描是這次測試的重點,因為安卓系統的音頻架構限制了44.1KHz的采樣頻率,所以高於44.1KHz的采樣頻率就會轉換成44.1KHz,直接導致音質變差,下面來看一下測試結果。
▲Nexus S測試圖像(點擊放大)
▲魅族M9測試圖像(點擊放大)
測試結果慘不忍睹,Nexus S採用安卓4.0系統SRC問題依然存在,圖像出現了很多的交錯的線條,而魅族M9採用安卓2.3系統測試的圖像也說明SRC問題非常嚴重。
▲某品牌安卓智能手機測試圖像(點擊放大)
某品牌安卓智能手機進行48KHz采樣頻率音頻掃描結果要比上面兩款手機要好很多,只在掃描直線上面出現一條很淺色的直線,像對於其他的安卓系統已經是一個非常大的飛躍,對於播放高音質的音頻這款安卓智能手機能更好還原原本音質。
主觀聽感:
▲測試使用的48KHz采樣頻率的MP3
說完理論的東西來點實際的聽感,試用手機聽音樂已經是相當普遍,測試使用2首48KHz采樣頻率的MP3進行測試,試聽某品牌智能手機上和其他智能手機音質有什麼區別。
▲測試使用UE TF10耳機
首先來聽一下一般安卓手機播放48KHz采樣頻率的MP3,測試使用了UE TF10入耳耳機,聽感覺得聲音偏暖,有點朦朧的感覺,而音樂的細節有些地方無法很好的展現,這個問題在幾台安卓手機上同樣遇到,音色都是暖,細節表現不佳。而用耳機聽回前面的20Hz-20KHz掃描是明顯發現問題了,除了掃描信號的聲音外還可以聽到背後有一些跟著掃描信號一起響起的音頻掃描聲音,這就是圖像上交錯的線條,嚴重影響聽感。
再來說一下某品牌智能手機上的聽感,試聽這2隻48KHz采樣頻率的MP3時整體聲音很清晰自然,細節表現非常清晰,沒有過多的音染,音場也比較寬廣,整體上表現非常好。再聽音頻掃描信號,並沒有出現前面的情況,只會聽到音頻掃描信號,非常干凈,沒有任何干擾。
測試總結:
▲SRC問題解決究竟用了什麼技術?
通過這個測試可以看到某品牌的安卓智能手機很好地解決了安卓手機SRC問題,提升了安卓手機音頻播放的音質,雖然由於保密原因現在不方便公布這品牌,而且還不知道採用了什麼技術來解決安卓系統的SRC問題,但是可以肯定的是這個品牌的安卓智能手機是第一個解決安卓系統SRC問題的手機。這個決絕SRC問題的技術也將會會公布,到時我們也會為大家公布這個手機品牌和型號。
⑤ 安卓手機根目錄下的各個文件夾有什麼作用
作用:
1.res:資源文件。
2.drawable:布局文件。
3.layout:布局文件。
4.anim:動畫效果文件。
5.values:取值、字元串等。
6.src:代碼,至於src內部的目錄名稱,取決於具體項目結構。
7.libs:庫文件。
⑥ android 工程src文件夾怎麼分類
Android 項目中文件夾的作用
1. src:存放所有的*.java源程序。
2. gen:為ADT插件自動生成的代碼文件保存路徑,裡面的R.java將保存所有的資源ID。
3. assets:可以存放項目一些較大的資源文件,例如:圖片、音樂、字體等。
4. res:可以存放項目中所有的資源文件,例如:圖片(*.png、*.jpg)、文本等。
5. res\drawable-hdpi:保存高解析度圖片資源,可以使用Resources.getDrawable(id)可以獲得資源類型。
6. res\drawable-ldpi:保存低分辯率圖片資源,可以使用Resources.getDrawable(id)可以獲得資源類型。
7. res\drawable-mdpi:保存中等解析度圖片資源,可以使用Resources.getDrawable(id)可以獲得資源類型。
8. res\layout:存放所有的布局文件,主要是用於排列不同的顯示組件,在Android程序中要讀取此配置。
9. res\values: 存放一些資源文件的信息,用於讀取文本資源,在本文件夾之中有一些約定的文件名稱:
· arrays.xml:定義數組數據;
· colors.xml:定義表示顏色的數據;
· dimens.xml:定義尺度,可以使用Resources.getDimension()獲得這些資源;
· strings.xml:定義字元串,可以使用Resources.getString()或Resources.getText()方法獲得這些資源;
· styles.xml:定義顯示的樣式文件;
10.res\raw:自定義的一些原生文件所在目錄,像音樂、視頻等文件格式,Resources.getRawResource()方法可以獲得這些資源。
11. res\xml:用戶自定義的XML文件,所有的文件在程序運行時編譯到應用程序之中,在程序運行時可以使用Resources.getXML()方法獲取。
12. res\anim:用於定義動畫對象;
13. bin:生成apk的文件夾。
⑦ 安卓手機根目錄下的各個文件夾的作用,麻煩詳細介紹。
1、HelloWorld項目的目錄結構
1.1、src文件夾
1.2、gen文件夾
1.3、Android 2.1文件夾
1.4、assets
1.5、res文件夾
1.6、AndroidManifest.xml
1.7、default.properties
圖1、HelloWorld項目目錄結構
下面將分節介紹上面的各級目錄結構。
1.1、src文件夾
顧名思義(src, source code)該文件夾是放項目的源代碼的。打開HelloWorld.java文件會看到如下代碼:
package helloworld.test;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
可以知道:我們新建一個簡單的HelloWorld項目,系統為我們生成了一個HelloWorld.java文 件。他導入了兩個類android.app.Activity和android.os.Bundle,HelloWorld類繼承自Activity且重 寫了onCreate方法。
以下說明針對沒有學過Java或者Java基礎薄弱的人
@Override
在重寫父類的onCreate時,在方法前面加上@Override 系統可以幫你檢查方法的正確性。
例如,public void onCreate(Bundle savedInstanceState){…….}這種寫法是正確的,
如果你寫成public void oncreate(Bundle savedInstanceState){…….}這樣編譯器回報如下錯誤——
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,
以確保你正確重寫onCreate方法。(因為oncreate應該為onCreate)
而如果你不加@Override,則編譯器將不會檢測出錯誤,而是會認為你新定義了一個方法oncreate。
android.app.Activity類:因為幾乎所有的活動 (activities)都是與用戶交互的,所以Activity類關注創建窗口,你可以用方法setContentView(View)將自己的UI放 到裡面。然而活動通常以全屏的方式展示給用戶,也可以以浮動窗口或嵌入在另外一個活動中。有兩個方法是幾乎所有的Activity子類都實現的:
onCreate(Bundle): 初始化你的活動(Activity),比如完成一些圖形的繪制。最重要的是,在這個方法里你通常將用布局資源(layout resource)調用setContentView(int)方法定義你的UI,和用findViewById(int)在你的UI中檢索你需要編程地 交互的小部件(widgets)。setContentView指定由哪個文件指定布局(main.xml),可以將這個界面顯示出來,然後我們進行相關 操作,我們的操作會被包裝成為一個意圖,然後這個意圖對應有相關的activity進行處理。
onPause():處理當離開你的活動時要做的事情。最重要的是,用戶做的所有改變應該在這里提交(通常ContentProvider保存數據)。
更多的關於Activity類的詳細信息此系列以後的文章將做介紹,如果你想了解更多請參閱相關文檔。
android.os.Bundle 類:從字元串值映射各種可打包的(Parcelable)類型(Bundle單詞就是捆綁的意思,所有這個類很好理解和記憶)。如該類提供了公有方法—— public boolean containKey(String key),如果給定的key包含在Bundle的映射中返回true,否則返回false。該類實現了Parceable和Cloneable介面,所以 它具有這兩者的特性。
1.2、gen文件夾
該 文件夾下面有個R.java文件,R.java是在建立項目時自動生成的,這個文件是只讀模式的,不能更改。R
⑧ 安卓系統src問題
Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。Android操作系統最初由Andy Rubin開發,主要支持手機。
一直以來,Android系統由於底層語言的問題,在音頻播放上存在一個漏洞,即48khz采樣率轉換為44.1khz會被劣質SRC。這種被劣質SRC的問題,使得音頻信號在安卓設備里受到了扭曲和損耗,產生大量噪波,立體聲播放層次等這些指標全面受損。而用戶需求較多的高品質音樂母生帶、高清視頻、游戲等的音頻都是高於44.1khz的采樣率;因此有很多用戶不厭其煩抱怨安卓機器的音質失真和受損問題。
通過一段標准音頻理論狀態下的光譜圖,我們可以發現正常安卓機型在播放48khz音頻時,光譜圖可謂慘不忍睹。主信號周圍出現了巨量的噪波,主信號基本難以分辨,因此難免會出現聲道串聲,雜音,變調等問題。
近期智能手機廠商vivo發布了其自主研發的音頻技術VRS。據了解,vivo的VRS技術聲稱完全解決了上述困擾安卓系統音頻播放的夢魘,並得到了國家專利受理。
而應用了VRS音頻技術的vivo V1智能手機在播放48khz音頻時,完全不存在任何問題,其主信號的保真度接近於理論完美狀態。雖然信號源質量並不完全代表最後的聽感,但我們也知道,有了接近無損的信號源,是能夠取得優秀播放效果的前提。可見,VRS技術的出現,表明vivo智能手機在致力於追求產品完美的音質享受探索又邁上了一個新的高度。