當前位置:首頁 » 安卓系統 » androidwidgets

androidwidgets

發布時間: 2022-08-03 03:41:46

❶ android布局控制項之LinearLayout詳解

Android布局控制項之LinearLayout詳解

LinearLayout是線性布局控制項,它包含的子控制項將以橫向或豎向的方式排列,按照相對位置來排列所有的widgets或者其他的containers,超過邊界時,某些控制項將缺失或消失。因此一個垂直列表的每一行只會有一個widget或者是container,而不管他們有多寬,而一個水平列表將會只有一個行高(高度為最高子控制項的高度加上邊框高度)。LinearLayout保持其所包含的widget或者是container之間的間隔以及互相對齊(相對一個控制項的右對齊、中間對齊或者左對齊)。

xml屬性

android:baselineAligned:是否允許用戶調整它內容的基線。

android:baselineAlignedChildIndex:當一個線性布局與另一個布局是按基線對齊的一部分,它可以指定其內容的基線對齊方式。

android:gravity:指定如何在該對象中放置此對象的內容(x/y坐標值)。

android:orientation:設置它內容的對其方向(橫向/豎向)。

gravity 這個英文單詞是重心的意思,在這里就表示停靠位置的意思。

android:layout_gravity 和 android:gravity 的區別

從名字上可以看到,android:gravity是對元素本身說的,元素本身的文本顯示在什麼地方靠著換個屬性設置,不過不設置默認是在左側的。

android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什麼位置。

比如說button:android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示button上的字在button上的位置。

可選值

這兩個屬性可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

而且這些屬性是可以多選的,用「|」分開。

默認這個的值是:Gravity.LEFT

LinearLayout還支持為其包含的widget或者是container指定填充權值。好處就是允許其包含的widget或者是container可以填充屏幕上的剩餘空間。這也避免了在一個大屏幕中,一串widgets或者是containers擠成一堆的情況,而是允許他們放大填充空白。剩餘的空間會按這些widgets或者是containers指定的權值比例分配屏幕。默認的 weight 值為0,表示按照widgets或者是containers實際大小來顯示,若高於0的值,則將Container剩餘可用空間分割,分割大小具體取決於每一個widget或者是container的layout_weight及該權值在所有widgets或者是containers中的比例。例如,如果有三個文本框,其中兩個指定的權值為1,那麼,這兩個文本框將等比例地放大,並填滿剩餘的空間,而第三個文本框不會放大,按實際大小來顯示。如果前兩個文本框的取值一個為2,一個為1,顯示第三個文本框後剩餘的空間的2/3給權值為2的,1/3大小給權值為1的。也就是權值越大,重要度越大。

如果LinearLayout包含子LinearLayout,子LinearLayout之間的權值越大的,重要度則越小。如果有LinearLayout A包含LinearLayout C,D,C的權值為2,D的權值為1,則屏幕的2/3空間分給權值為1的D,1/3分給權值為2的C。在LinearLayout嵌套的情況下,子LinearLayout必須要設置權值,否則默認的情況是未設置權值的子LinearLayout占據整個屏幕

❷ android studio怎麼創建widget

之前看別人說用android studio ,而我還是用著ecilipse不以為然,試了一次,感覺還不如ecilipse好用,後來還是一直用的ecilipse,知道最近用起了android studio才發現真的很強大,支持各種功能,扯遠了,在ecilipse中製作桌面插件,又要配置這個又要配置那個,而在android studio中真的是一鍵搞定,沒有比這個更好的了。下面來看看android studio生成的一些關於AppWidgets的一些文件。
http://blog.csdn.net/jsdfsyd/article/details/50605193

❸ 誰知道android 中view 和Viewgroup的關系是什麼

View對象是Android平台中用戶界面體現的基礎單位。View類通常為「widgets(工具)」的子類的基礎,它們提供了諸如文本輸入框和按鈕之類的UI對象的完整實現。
ViewGroup類同樣為被稱為「Layouts(布局)」的子類奠定了基礎,它們提供了象流式布局、表格布局以及相對布局之類的布局架構。

Android的UI界面都是由View和ViewGroup及其派生類組合而成的。其中,View是所有UI組件的基類,而ViewGroup是容納這些組件的容器,其本身也是從View派生出來的。AndroidUI界面的一般結構可參見:


可見,作為容器的ViewGroup可以包含作為葉子節點的View,也可以包含作為更低層次的子ViewGroup,而子ViewGroup又可以包含下一層的葉子節點的View和ViewGroup。事實上,這種靈活的View層次結構可以形成非常復雜的UI布局,開發者可據此設計、開發非常精緻的UI界面。一般來說,開發Android應用程序的UI界面都不會直接實用View和ViewGroup,而是使用這兩大基類的派生類。下面我們列舉了android中View和ViewGroup的派生類。

View派生出的直接子類有:AnalogClock,ImageView,KeyboardView, ProgressBar,SurfaceView,TextView,ViewGroup,ViewStub

View派生出的間接子類有:AbsListView,AbsSeekBar, AbsSpinner, AbsoluteLayout, AdapterView<T extends Adapter>,AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, AutoCompleteTextView,Button,CalendarView, CheckBox, CheckedTextView, Chronometer, CompoundButton,

ViewGroup派生出的直接子類有:AbsoluteLayout,AdapterView<T extends Adapter>,FragmentBreadCrumbs,FrameLayout,LinearLayout,RelativeLayout,SlidingDrawer

ViewGroup派生出的間接子類有:AbsListView,AbsSpinner, AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, CalendarView, DatePicker, DialerFilter, ExpandableListView, Gallery, GestureOverlayView,GridView,HorizontalScrollView, ImageSwitcher,ListView。

可以在秒秒學上看看Android的課程,講解的可以,希望對你有幫助。

❹ 做安卓軟體開發需要哪些工具

Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。
View等同於J2ME的Displayable,程序人員可以通過 View 類與"XML layout"檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於ViewGroup 是各種layout 的基礎抽象類(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函數不需要在Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間通過Listener 結合在一起,每一個View都可以注冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。
Android的開發技術:
1、Activity生命周期
雖然Android中有四大組件,但是不可否認Activity是最常用的。所以熟練掌握Android的生命周期是必須的。其實生命周期就是記住 Activity的那些方法在什麼時候被系統調用,這樣才可以把對應的邏輯代碼寫到合適的方法內部去。
至於服務和廣播組件可以稍微緩一下,到實際使用的時候再學習都可以。
2、界面開發技術
界面開發是一種基本的技術,幾乎所有的程序裡面都需要用到。在Android開發中界面開發分為3種:
1)使用xml文件布局
使用xml首先對於界面進行布局,然後在Activity裡面進行引用是最常見的應用軟體開發技術,這種方式使用的最大,需要學習的內容也最多。學習時需要熟悉:
a)五種Layout布局
深刻理解五種布局組織控制項的方式是一個基本的基礎,這樣你才可以在實際的界面中靈活的使用每種布局結構,構造出需要的界面。
b)常用控制項
控制項有很多,至少要知道每種控制項是做什麼的,至於裡面的特定參數和方法可以學要的時候再去查
c)界面美華
系統的控制項很多時候無法滿足要求,需要通過添加背景更換圖片等進行美化,要熟悉每種控制項如何去美華。
掌握了上面的內容,通過布局的嵌套就可以製作出各種界面,如果在熟悉include的使用就可以減少xml的重復,方便後期的修改和維護了。
2)使用代碼動態創建
有些時候需要動態的創建一些布局和控制項,這個就需要使用LayoutInflater去創建一些動態的界面了。
3)自己繪制界面
游戲中常用,繼承SurfaceView自己繪制。
3、數據存儲技術
Android中的數據存儲方式有3種:
1)SharedPrefereneces存儲
對於簡單的數據可以使用該方式存儲,以鍵值對的方式存儲一些基本的數據。
2)文件存儲
將數據以文件的形式存儲,可以是手機自身的存儲也可以是SD卡,文件的數據格式自己定義。
3)SQLite資料庫存儲
使用標准SQL語句進行操作,復雜數據的首選。
4、網路編程
現在的Android程序不需要聯網的已經不多了。所以網路編程也是必須的,一般的公司都會封裝有自己的聯網結構,但是基本的聯網還是要熟悉。
1)HTTP聯網
使用Http聯網+Json數據格式是現在很多客戶端的首選。
2)Socket聯網
至於藍牙等連接方式則可以在項目需要的時候學習。
對於手機的系統功能,如撥打電話、發送簡訊、讀取系統參數等則可以根據需要在學習,不麻煩的。
其次,手機軟體相關
Android開發不同於普通的電腦軟體開發,需要了解手機的操作習慣,知道手機的屏幕不大、內存有限,電池有限等,在實際開發和設計時盡量考慮。

❺ 我啥我在手機上下載游戲玩的時候說此應用程序沒有授權在你的ANDROID設備上使用

拆分詞條 android
http://..com/q?word=ANDROID&ct=17&pn=0&tn=ikaslist&rn=10&lm=0&fr=search求助編輯網路名片
AndroidAndroid是一種以Linux為基礎的開放源碼操作系統,主要使用於便攜設備。目前尚未有統一中文名稱,中國大陸地區較多人使用安卓(非官方)或安致(官方)。Android操作系統最初由Andy Rubin開發,最初主要支持手機。2005年由Google收購注資,並組建開放手機聯盟開發改良,逐漸擴展到平板電腦及其他領域上。Android的主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。 2011年11月數據,Android占據全球智能手機操作系統市場52.5%的份額,中國市場佔有率為58%。

中文名: 安卓、安致
外文名: Android
開發商: Google/開放手持設備聯盟
發行商: Google
發行時間: 2008年9月23日
編程語言: C/C++(底層) Java等(應用層)
源碼模式: 混合(自由免費,開放源碼)
包類型: APK
支持平台: ARM、MIPS、x86
內核類: 整塊性核心(Linux)

目錄

名稱來源
內置服務
開放手持設備聯盟
版本記錄命名規則
發行版本
發展歷史
系統架構應用程序(部分)
中介軟體
硬體抽像層
內核
安全許可權機制
名稱來源
內置服務
開放手持設備聯盟
版本記錄 命名規則
發行版本
發展歷史
系統架構 應用程序(部分)
中介軟體
硬體抽像層
內核
安全許可權機制
展開 編輯本段名稱來源
Android一詞最早出現於法國作家利爾亞當(Auguste Villiers de l'Isle-Adam)在1886年發表的科幻小說《未來夏娃》(L'ève future)中。他將外表像人的機器起名為Android。
編輯本段內置服務
谷歌移動服務(英文:Google Mobile Service)是谷歌的一項服務,該服務簡稱「GMS」,指在讓用戶利用行動電話或其他移動設備使用谷歌搜索、谷歌地圖、Gmail、YouTube、Android Market等谷歌服務產品。 谷歌將谷歌移動服務(GMS)內嵌到Android手機系統中,並且對android手機生產商給予不同程度的授權。 GMS是Android操作系統的靈魂,大部分用戶使用Android手機,其實就是為了使用谷歌服務。
編輯本段開放手持設備聯盟
開放手持設備聯盟(Open Handset Alliance)是美國Google公司於2007年11月5日宣布組建的一個全球性的聯盟組織。這一聯盟將支持Google發布的手機操作系統或者應用軟體,共同開發Android系統的開放源代碼。開放手持設備聯盟包括手機製造商、手機晶元廠商和移動運營商。
編輯本段版本記錄
命名規則
Android 用甜點作為它們系統版本的代號的命名方法開始於 Andoird 1.5 發布的時候。作為每個版本代表的甜點的尺寸越變越大,然後按照26個字母數序:紙杯蛋糕,甜甜圈,松餅,凍酸奶,姜餅,蜂巢,冰激凌三明治
發行版本
版本 備注
Android1.1 2008 年9月發布的Android第一版
Android 1.5
Cupcake
(紙杯蛋糕) 2009年4月30日,官方1.5版本(Cupcake 紙杯蛋糕)的Android發布。主要的更新如下:
1、拍攝/播放影片,並支持上傳到Youtube
2、支持立體聲藍牙耳機,同時改善自動配對性能
3、最新的採用WebKit技術的瀏覽器,支持復制/貼上和頁面中搜索
4、GPS性能大大提高
5、提供屏幕虛擬鍵盤
6、主屏幕增加音樂播放器和相框widgets
7、應用程序自動隨著手機旋轉
8、簡訊、Gmail、日暦,瀏覽器的用戶介面大幅改進,如Gmail可以批量刪除郵件
9、相機啟動速度加快,拍攝圖片可以直接上傳到Picasa
10、來電照片顯示
Android 1.6
Donut
(甜甜圈) 2009年9月15日,1.6(Donut 甜甜圈)版本軟體開發工具包發布。主要的更新如下:
1、重新設計的Android Market手勢
2、支持支持CDMA網路
3、文字轉語音系統(Text-to-Speech)
4、快速搜索框
5、全新的拍照介面
6、查看應用程序耗電
7、支持虛擬私人網路(VPN)
8、支持更多的屏幕解析度。
9、支持OpenCore2媒體引擎
10、新增面向視覺或聽覺困難人群的易用性插件
Android2.0/2.0.1/2.1
Eclair
(松餅) 2009年10月26日,2.0(Eclair 松餅)版本軟體開發工具包發布。主要的更新如下:
1、優化硬體速度
2、"Car Home"程序
3、支持更多的屏幕解析度
4、改良的用戶界面
5、新的瀏覽器的用戶介面和支持HTML5
6、新的聯系人名單
7、更好的白色/黑色背景比率
8、改進Google Maps3.1.2
9、支持Microsoft Exchange
10、支持內置相機閃光燈
11、支持數碼變焦
12、改進的虛擬鍵盤
13、支持藍牙2.1
14、支持動態桌面的設計
Android 2.2/2.2.1
Froyo
(凍酸奶) 2010年5月20日,2.2(Froyo 凍酸奶)版本軟體開發工具包發布。主要的更新如下:
1、整體性能大幅度的提升
2、3G網路共享功能。
3、Flash的支持。
4、App2sd功能。
5、全新的軟體商店。
6、更多的Web應用API介面的開發。
Android 2.3
Gingerbread
(姜餅) 2010年12月7日,2.3(Gingerbread 姜餅)版本軟體開發工具包發布。主要的更新如下:
1、增加了新的垃圾回收和優化處理事件
2、原生代碼可直接存取輸入和感應器事件、EGL/OpenGL ES、OpenSL ES。
3、新的管理窗口和生命周期的框架。
4、支持VP8和WebM視頻格式,提供AAC和AMR寬頻編碼,提供了新的音頻效果器
5、支持前置攝像頭、SIP/VOIP和NFC(近場通訊)
6、簡化界面、速度提升:
7、更快更直觀的文字輸入:
8、一鍵文字選擇和復制/粘帖:
9、改進的電源管理系統:
10、新的應用管理方式:

Android 3.0
Honeycomb
(蜂巢) 2011年2月2日, 3.0(Honeycomb 蜂巢)版本主要更新如下:
·優化針對平板
·全新設計的UI增強網頁瀏覽功能
·n-app purchases功能
Android 3.1
Honeycomb
(蜂巢) 2011年5月11日在Google I/O開發者大會宣布發布,版本主要更新如下:
Honeycomb蜂巢(改進3.0BUG)
經過優化的Gmail電子郵箱;
全面支持GoogleMaps
將Android手機系統跟平板系統再次合並從而方便開發者。
任務管理器可滾動,支持USB 輸入設備(鍵盤、滑鼠等)。
支持 Google TV.可以支持XBOX 360無線手柄
widget支持的變化,能更加容易的定製屏幕widget插件。

Android 3.2
Honeycomb
(蜂巢) 2011年7月13日發布,版本更新如下:
支持7英寸設備
引入了應用顯示縮放功能

Android 4.0
Ice Cream Sandwich
(冰激凌三明治) 2011年10月19日 在香港發布,
4.0(Ice Cream Sandwich 冰激凌三明治)版本主要更新如下:
1、全新的ui
2、全新的Chrome Lite瀏覽器,有離線閱讀,16標簽頁,隱身瀏覽模式等。
3、截圖功能
4、更強大的圖片編輯功能
5、自帶照片應用堪比Instagram,可以加濾鏡、加相框,進行360度全景拍攝,照片還能根據地點來排序
6、Gmail加入手勢、離線搜索功能,UI更強大。
7、新功能People:以聯系人照片為核心,界面偏重滑動而非點擊,集成了Twitter、Linkedin、Google+等通訊工具。有望支持用戶自定義添加第三方服務。
8、新增流量管理工具,可具體查看每個應用產生的流量。
9、正在運行的程序可以像電腦一樣的互相切換
10、人臉識別功能
11、系統優化、速度更快
12、支持虛擬按鍵,手機可以不再擁有任何按鍵
13、更直觀的程序文件夾
14、平板電腦和智能手機通用
15、支持更大的解析度
16、專為雙核處理器編寫的優化驅動
17、全新的18、增強的復制粘貼功能
19、語音功能
20、全新通知欄:
21、更加豐富的數據傳輸功能
22、更多的感應器支持
23、語音識別的鍵盤:
24、全新的3D驅動, 游戲支持能力提升
25、全新的谷歌電子市場
26、增強的桌面插件自定義

Android N.n
Jelly Bean
「果凍豆」 繼「冰激凌三明治」之後的下一版Android系統。

編輯本段發展歷史
2005年事件 Google收購了成立僅22個月的高科技企業Android。 2007年事件 11月5日,Google公司正式向外界展示Android操作系統。 11月5日,Google與34家手機製造商、軟體開發商、電信運營商和晶元製造商共同創建開放手持設備聯盟。 2008年事件 5月28日,Patrick Brady於Google I/O大會上提出Android HAL架構圖。 8月18日,Android獲得美國聯邦通信委員會的批准。 9月22日,谷歌正式對外發布第一款Android手機——HTC G1。 9月23日,谷歌發布Android1.0。 9月24日,全球業界都表示不看好Android操作系統,並且聲稱最多1年,Android就會被Google關閉。 2009年事件 4月30日,Android1.5正式發布。 5月10日,HTC G1和HTC G2市場大賣,成為僅次於iPhone的熱門機型。 9月25日,Android1.6正式發布。 9月29日,HTC Hero G3廣受歡迎,成為全球最受歡迎的機型。 10月28日,Android 2.0 智能手機操作系統正式發布。 11月10日,由於Android的火熱,Android平台出現第一個惡意間諜軟體:Mobile Spy,該程序會自動記錄用戶所輸入的任何信息並發送到黑客的郵箱中,還可以視頻錄下用戶的所有操作過程。 2010年事件 1月7日,Google發布了旗下第一款自主品牌手機:Nexus one(HTC G5)。 1月,谷歌與Linux基金會就谷歌修改了Linux內核而產生了矛盾。 2月3日,Linux內核開發者Greg Kroah-Hartman將Android的驅動程序從Linux內核「狀態樹」上除去,從此,Android與Linux開發分道揚鑣。 5月19日,Google正式對外發布Android2.2智能操作系統。 5月20日,Google對外正式展示了搭載Android系統的智能電視-Google TV,該電視為全球首台智能電視。 7月1日,Google宣布正式與雅虎、亞馬遜合作,並且在Android上推出多項Kindle服務和雅虎服務。 7月9日,美國NDP集團調查顯示,Android系統已佔據了美國手機市場28%的份額,全球17%的市場份額。 8月12日,Android平台出現第一個木馬病毒:Trojan-SMS.AndroidOS.FakePlayer.a,該木馬病毒會偽裝成應用程序,當用戶不小心安裝之後,它便會瘋狂地發送簡訊,使用戶的手機開通高額的收費服務。 9月,Android應用數量超過9萬個。 9月21日,Google對外公布數據,每日銷售的Android設備的新用戶數達到20萬。 10月26日,Google宣布Android達到第一個里程碑:電子市場上的Android應用數量達到10萬個。 12月7日,Google正式發布Android2.3操作系統。 2011年事件 1月,Android應用數量超過20萬。 1月,Google對外公布數據,每日Android設備的新用戶數達到30萬。 2月2日,Android3.0正式發布。 6月,Android在日本的智能手機操作系統市場佔有率達到57%。 7月,Android在歐洲的智能手機操作系統市場佔有率達到了22.3% 7月,Google對外公布數據,Android每天的新用戶達到55萬,Android設備用戶總數達1.35億。 8月,谷歌收購摩托羅拉移動。 8月2日,Android手機已佔據全球智能機市場48%的份額,並在亞太地區市場占據統治地位,終結了Symbian(塞班系統)的霸主地位,躍居全球第一。 8月,Android在韓國的智能手機操作系統市場佔有率達到了95%。 8月,Android系統在35個國家市場佔有率第一,平均市場佔有率達到48%。 8月,Android系統成為亞太地區第一大系統,市場佔有率為亞太地區第一大。 9月,數據顯示,Android應用數目已經達到48萬。 9月,Android在美國的智能手機操作系統市場佔有率達到43%。 10月19日,谷歌正式發布Android 4.0操作系統。 11月15日,Android在中國大陸的智能手機操作系統市場佔有率達到了58%。 11月18日,美國NPD數據顯示,Android和iOS平台上的游戲佔有率都首度超過任天堂的DS掌機和索尼的PSP掌機,手機游戲玩家也超過了掌機玩家,游戲開發商更傾向於向Android和iOS手機上開發游戲。 11月18日,谷歌報告顯示,通過谷歌伺服器激活的Android設備用戶總數已經超過2億,每天通過谷歌伺服器激活的新用戶數超過55萬,而這僅僅是通過谷歌伺服器激活的用戶設備數。
編輯本段系統架構
Android是以Linux為核心的手機操作平台,作為一款開放式操作系統,隨著Android的快速發展,如今已允許開發者使用多種編程語言來開發Android應用程序,而不再是以前只能使用Java開發Android應用程序的單一局面,因而受到眾多開發者的歡迎,成為真正意義上的開發式操作系統。 在Android中,開發者可以使用Java作為編程語言來開發應用程序,也可以通過NDK使用C/C++作為編程語言來開發應用程序,也可使用SL4A來使用其他各種腳本語言進行編程(如:python、lua、tcl、php等等),還有其他諸如:Qt(qt for android)、Mono(mono for android)等一些著名編程框架也開始支持Android編程,甚至通過MonoDroid,開發者還可以使用C#作為編程語言來開發應用程序。另外,谷歌還在2009年特別發布了針對初學者的Android Simple語言,該語言類似Basic語言。而在網頁編程語言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已經支持Android開發。 而在Android系統底層方面,Android使用C/C++作為開發語言。
應用程序(部分)
Java開發方面 Android支持使用Java作為編程語言來開發應用程序,而Android的Java開發方面從介面到功能,都有層出不窮的變化。考慮到Java虛擬機的效率和資源佔用,谷歌重新設計了Android的Java,以便能提高效率和減少資源佔用,因而與J2ME等不同。 Android結構
其中Activity等同於J2ME的MIDlet,一個 Activity 類(Class)負責創建視窗(Windows),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(Stopped),甚至被系統清除(Kill)。 View等同於J2ME的Displayable,程序人員可以通過 View 類與「XML layout」檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於ViewGroup 是各種layout 的基礎抽象類(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函數不需要再Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間通過Listener 結合在一起,每一個View都可以注冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。 C/C++開發方面 早期的Android開發只支持Java作為編程語言開發應用程序,因而使得其他語言開發者只能望而卻步。2010年4月,谷歌正式對開發者發布了Android NDK,NDK允許開發者使用C/C++作為編程語言來為Android開發應用程序,初版的NDK使得開發者看到了C/C++在Android開發中的希望。 但是,當前版本的NDK在功能上還有很多局限性:NDK並沒有提供對應用程序生命周期的維護;NDK也不提供對Android系統中大量系統事件的支持;對於作為應用程序交互介面的UI API,當前版本的NDK中也沒有提供。但是相對於初版的NDK,現在的NDK已經進行了許多重大的功能改進。 由此可見,NDK仍然需要完善和發展,相信未來隨著NDK的發展,NDK可以做得更多更好。
中介軟體
操作系統與應用程序的溝通橋梁,應用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。 Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。 Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是雛形的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,目前Skia 也是Google Chrome 的圖形引擎。 Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過ContentResolver類(Column)取得共用資料庫。 Android的中間層多以Java 實現,並且採用特殊的Dalvik 虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種「暫存器型態」(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。 Dalvik虛擬機可以有多個實例(instance), 每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。Dalvik 虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的文件。
硬體抽像層
Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考量驅動程序實現的前提下進行發展。 HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL「提供」操作函數(operations),並由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數。HAL 里包含了許多的 stub(代理人)。Runtime 只要說明「類型」,即 mole ID,就可以取得操作函數。
內核
Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。 目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
安全許可權機制
Android本身是一個許可權分立的操作系統。在這類操作系統中,每個應用都以唯一的一個系統識別身份運行(Linux用戶ID與群組ID)。系統的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應用與應用,應用與系統隔離開。 系統更多的安全功能通過許可權機制提供。許可權可以限制某個特定進程的特定操作,也可以限制每個URI許可權對特定數據段的訪問。 Android安全架構的核心設計思想是,在默認設置下,所有應用都沒有許可權對其他應用、系統或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數據(聯系人或電子郵件),讀寫其他應用文件,訪問網路或阻止設備待機等。 安裝應用時,在檢查程序簽名提及的許可權,且經過用戶確認後,軟體包安裝器會給予應用許可權。從用戶角度看,一款Android應用通常會要求如下的許可權: 撥打電話、發送簡訊或彩信、修改/刪除SD卡上的內容、讀取聯系人信息、讀取日程信息,寫入日程數據、讀取電話狀態或識別碼、精確的(基於GPS)地理位置、模糊的(基於網路獲取)地理位置、創建藍牙連接、對互聯網的完全訪問、查看網路狀態,查看WiFi狀態、避免手機待機、修改系統全局設置、讀取同步設定、開機自啟動、重啟其他應用、終止運行中的應用、設定偏好應用、震動控制、拍攝圖片等。 一款應用應該根據自身提供的功能,要求合理的許可權。用戶也可以分析一款應用所需許可權,從而簡單判定這款應用是否安全。如一款應用是不帶廣告的單機版,也沒有任何附加內容需要下載,那麼它要求訪問網路的許可權就比較可疑。
智能手機操作系統
IOS ▪ Android ▪ Symbian ▪ Windows Mobile ▪ Windows Phone 7

開放分類:
操作系統,google,智能手機,平板電腦,android

「android」在英漢詞典中的解釋(來源:網路詞典):
android
KK: []
DJ: []
a.
1. 有人類特徵的
2. (指骨盤)角形窄口的
3. 陽性的,男性的,雄性的
n.
1. (科幻小說中的)機器人

❻ android studio里widgets沒有large text怎麼回事

因為你寫xml布局的時候寫錯了什麼東西,所以不顯示,直到右下角沒有彈出這個窗口才是正確的xml布局

❼ 什麼是安卓系統的Widgets功能

一個基於web的輕量級小程序
很多實用的軟體,天氣預報,MOP,TAOBAO

❽ 關於android自定義字體,該怎麼處理

解決方案

1)Android默認方法 #1

你可以通過ID查找到View,然後挨個為它們設置字體。在單個View的情況下,它看起來也沒有那麼可怕。

Typeface customFont = Typeface.createFromAsset(this.getAssets(), "fonts/YourCustomFont.ttf");
TextView view = (TextView) findViewById(R.id.activity_main_header);
view.setTypeface(customFont);
但是在很多TextView、Button等文本組件的情況下,我敢肯定你不會喜歡這個方法的。:D

2)Android默認方法 #2

你可以為每個文本組件創建一個子類,如TextView、Button等,然後在構造函數中載入自定義字體。

public class BrandTextView extends TextView {

public BrandTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public BrandTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BrandTextView(Context context) {
super(context);
}
public void setTypeface(Typeface tf, int style) {
if (style == Typeface.BOLD) {
super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont_Bold.ttf"));
} else {
super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont.ttf"));
}
}
}
然後只需要將標準的文本控制項替換成你自定義的就可以了(例如BrandTextView替換TextView)。

<com.your.package.BrandTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View with custom font"/>
<com.your.package.BrandTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="View with custom font and bold typeface"/>
還有,你甚至可以直接在XML中添加自定義的字體屬性。要實現這個,你需要定義你自己的declare-styleable屬性,然後在組件的構造函數中解析它們。

為了不佔篇幅介紹這么基礎的東西,這里有一篇不錯的文章告訴你怎麼自定義控制項屬性。

http://kevindion.com/2011/01/custom-xml-attributes-for-android-widgets/
在大多數情況下,這個方法還不賴,並且有一些優點(例如,切換字體粗細等等,字體可以在組件xml文件的typeface屬性中定義)。但是我認為這個實現方法還是太重量級了,並且依賴大量的模板代碼,為了一個替換字體的簡單任務,有點兒得不償失。

3)我的解決方案

理想的解決方案是自定義主題,然後應用到全局或者某個Activity。
但不幸的是,Android的android:typeface屬性只能用來設置系統內嵌的字體,而非用戶自定義字體(例如assets文件中的字體)。這就是為什麼我們無法避免在Java代碼中載入並設置字體。

所以我決定創建一個幫助類,使得這個操作盡可能的簡單。使用方法:

FontHelper.applyFont(context, findViewById(R.id.activity_root), "fonts/YourCustomFont.ttf");
並且這行代碼會用來載入所有的基於TextView的文本組件(TextView、Button、RadioButton、ToggleButton等等),而無需考慮界面的布局層級如何。

標准(左)與自定義(右)字體的用法。

Standard (left) and Custom (right) fonts usage.

這是怎麼做到的?非常簡單:

public static void applyFont(final Context context, final View root, final String fontName) {
try {
if (root instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) root;
for (int i = 0; i < viewGroup.getChildCount(); i++)
applyFont(context, viewGroup.getChildAt(i), fontName);
} else if (root instanceof TextView)
((TextView) root).setTypeface(Typeface.createFromAsset(context.getAssets(), fontName));
} catch (Exception e) {
Log.e(TAG, String.format("Error occured when trying to apply %s font for %s view", fontName, root));
e.printStackTrace();
}
}
正如你所看到的,所需要做的僅僅是將基於TextView的文本組件從布局中遍歷出來而已。

熱點內容
html編譯成JavaScript 發布:2024-04-29 00:00:15 瀏覽:367
html編譯器手機 發布:2024-04-28 23:59:22 瀏覽:518
大宇精雕機的密碼是多少 發布:2024-04-28 23:50:02 瀏覽:457
androidapi查詢 發布:2024-04-28 23:44:06 瀏覽:58
怎麼升級加密狗 發布:2024-04-28 23:24:57 瀏覽:665
netgear遠程訪問 發布:2024-04-28 23:06:18 瀏覽:532
javaweb整合開發 發布:2024-04-28 23:03:49 瀏覽:457
福康中國伺服器地址 發布:2024-04-28 22:47:20 瀏覽:746
mcryptphp 發布:2024-04-28 22:29:12 瀏覽:195
程序源代碼加密 發布:2024-04-28 22:10:42 瀏覽:836