Time of Update: 2018-12-03
指標指標被反射到位於<project_root>/gen/package/name/ScriptC_renderscript_filename的指令碼類中。你能夠給給結構體或其他任何Renderscript支援的型別宣告指標,但是結構體不能夠包含指標或嵌套數組。例如,如果你聲明了下列的指向struct和int32_t的指標:typedef struct Point { float2 position; float size;} Point_t; Point_t
Time of Update: 2018-12-03
驗證是否有應用程式來接收Intent對象儘管Android平台會保證確定的Intent對象會被內建的應用程式(如Phone、Email或Calendar等應用程式)接收,但是在調用一個Intent對象之前,你應該始終包含一個驗證的步驟。警告:如果你調用了一個Intent對象,並且在裝置上沒有能夠處理這個Intent對象的應用程式存在,那麼你的應用程式會崩潰。調用queryIntentActivities()方法來擷取能夠處理你的Intent對象的Activity的列表,以便確認是否有Activi
Time of Update: 2018-12-03
與記憶體一起工作在Renderscript中聲明的非靜態、全域的變數會在編譯時間被分配記憶體。在Renderscript代碼中能夠直接使用這些變數來工作,而不必在Android架構層再給它們分配記憶體。Android架構層也能使用反射層類中生產的訪問器方法來訪問這些變數。如果這些變數在Renderscript運行時層被初始化,那麼在Android架構層那些值也會被用於初始化對應值。如果全域變數被標記為const,那麼就不會產生set方法。注意:如果你使用了某些包含指標的Renderscript結
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/training/basics/intents/filters.html前面的兩課一直關注了故事的一邊:從你的應用程式中啟動另一個應用程式的Activity。但是如果你的應用能夠執行一個可能對另外的應用程式有用的操作,那麼你的應用程式就應該準備響應來自其他應用程式的操作請求。例如,如果你建立了一個能夠跟使用者的朋友共用訊息和照片的社區應用,那麼你就應該支援ACTION_SEND類型的Intent,以便使用者能夠啟動來自其他應用程
Time of Update: 2018-12-03
讀寫全域變數讀寫全域變數是一個簡單過程。你能夠在Android架構層使用訪問器方法,或者在Renderscript代碼層直接設定它們。對於在Renderscript代碼中的任何改變都要記住,這種改變不會傳遞給Android架構層。例如,在一個名叫rsfile.rs檔案中給出了一下結構體: typedefstructPoint{ int x; int y; }Point_t; Point_t
Time of Update: 2018-12-03
1.建立.aidl檔案AIDL使用簡單的文法來聲明帶有多個方法的介面,這個些方法能夠帶有參數和傳回值。參數和傳回值可以是任意類型的,甚至是其他AIDL產生的介面。必須使用Java程式設計語言來構建.aidl檔案。每個.aidl檔案必須定義一個單一的介面,並要求只有介面聲明和方法簽名。預設情況下,AIDL支援下列資料類型:1.Java語言中所有的未經處理資料類型(如int,long,char,boolean等);2.String3.CharSequence4.List
Time of Update: 2018-12-03
繪圖對象的座標映射在Android裝置上顯示圖形中的基本問題之一就是它們的螢幕可能是各種尺寸和形狀的。OpenGL會假設一個方形地區,統一的座標地區,並且在預設情況下,在一些方形的螢幕能夠像在方形地區一樣,完美的繪製這些座標。圖1. 預設的OpenGL座標系統(左)被映射到一個典型的Android裝置螢幕(右)。上面的插圖示範了如何把左邊的OpenGL的統一座標系統映射到右邊橫屏裝置的實際座標上。使用GpenGL的投影模式,可以解決這個問題,並且照相視圖(Camera
Time of Update: 2018-12-03
在IPC通道上傳遞對象如果要通過IPC介面把一個類從一個進程發送到另一個進程,這是可以做到的。但是必須確保該類的代碼對應IPC通道另一側的進程是可用的,並且該類必須支援Parcelable介面。支援Parcelable介面是重要的,因為它允許Android系統把對象分解成能夠跨進程進行編組的原始類型。必須按照以下步驟來建立一個支援Parcelable協議的類:1. 要讓該類實現Parcelable介面;2. 實現writeToParcel介面,它會攜帶該對象的目前狀態並把它寫入Parcel;3.
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/guide/topics/graphics/opengl.html在OpenGL ES 2.0中的投影和照相視圖在ES 2.0的API中,首先要通過把一個矩陣成員添加給繪圖物件頂部的著色器(Vertex Shaders)來使用投影和照相視圖。然後,這個被添加的矩陣成員能夠產生並把投影和照相視圖應用給繪圖物件。1. 給頂層著色器(Vertex
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/guide/topics/graphics/opengl.html#compatibilityOpenGL版本和裝置相容性Android系統從1.0開始就支援OpenGL ES 1.0和1.1規範,從Android2.2(API Level 8)開始,架構支援OpenGL ES 2.0 API規範。OpenGL ES 2.0被大多數Android裝置支援,並且推薦新的應用程式用OpenGL來開發。對於支援給定OpenGL
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/guide/topics/graphics/opengl.html形狀的外觀和折點在OpenGL中,形狀的外觀是由三個或三維空間中更多的點來定義的一個表面。一個三個或更多的三維點(在OpenGL中叫做頂點)的集合有前面和後面之分。如何知道哪個面是前,哪個面是後呢?就要用折點或定義形狀中的點的方向來回答這個問題。圖1.圖示顯示了變換成逆時針繪圖順序的座標列表。在這個例子中,三角形的點是按照它們被逆時針方向繪製的順序來定義的。這些繪
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/guide/topics/graphics/overview.htmlAndroid架構提供了兩種動畫系統:屬性動畫(在Android3.0中被引入)和視圖動畫。這兩種動畫系統都是可行的選擇,但是通常屬性動畫是首選的方法,因為它更加靈活,並提供了更多的功能。除了這兩種動畫系統之外,還能夠利用繪圖動畫,它允許載入繪圖資源並一幀一幀的來顯示它們。屬性動畫在Android3.0中被引入(API Level
Time of Update: 2018-12-03
要管理Activity中Fragment,需要使用FragmentManager對象,在Activity中調用getFragmentManager()方法能夠獲得這個對象。FragmentManager對象能夠做以下事情:1. 獲得Activity中既存的Fragment,用findFragmentById()獲得Activity布局中提供UI的Fragment,或用findFragmentByTag()方法獲得沒有提供UI的Fragment;2. 使用popBackStack()方法從回退堆棧
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/guide/topics/graphics/prop-animation.html屬性動畫系統是一個健壯的架構,它幾乎可以允許把任何對象變成動畫。可以根據時間的推移來改變任何對象的屬性來定義一個動畫,而不用關心該對象是否要繪製在螢幕上。屬性動畫是在指定的時間長度上改變一個屬性(對象中的一個成員欄位)的值。要讓某些對象變成動畫,就要給該對象指定想要的動畫屬性,如果對象在螢幕上的位置、動畫的停留時間以及動畫之間的值等。屬性動畫系統可
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/training/basics/intents/sending.htmlAndroid的重要特性之一就是基於要執行的特定的“action”把使用者帶入另外一個應用程式。例如,如果你的應用程式有一個要在地圖上顯示的地址,你不必在你的應用程式建立一個用於顯示地圖的Activity。相反,你可以使用Intent對象給地圖應用程式的View建立一個請求,然後Android系統就會啟動對應的應用程式,病在地圖上顯示你給出的地址。在講解第一
Time of Update: 2018-12-03
在Activity中使用有關Fragment的添加、刪除、替換以及用它們執行其他響應使用者互動行為的能力是一項偉大的功能。你提交給Activity的每組改變集合被叫做一個事務,並且你能使用FragmentTransaction中APIs來執行它。也能夠把每個事務儲存到被Activity管理的回退堆棧中,並允許使用者通過Fragment改變來向後導航(類似同Activity的向後導航)。 你能夠從FragmentManager對象中擷取一個FragmentTransaction對象的執行個體,例如
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/guide/components/aidl.htmlAIDL(AndroidInterface
Time of Update: 2018-12-03
在某些案例中,可能需要Fragment與Activity共用事件。在Fragment內部定義一個回調介面是一個好方法,並且規定由持有它的Activity實現這個回調方法。當Activity通過介面接受回調時,它能在必要時與布局中的其他Fragment共用資訊。例如,如果一個新聞類的應用程式在一個Activity中有兩個Fragment---一個用來顯示文章列表(Fragment A),另一個用來顯示文章內容(Fragment B)---然後再清單項目被選中時Fragment
Time of Update: 2018-12-03
儘管Fragment是作為一個獨立於Activity來實現的一個對象,並且能夠在多個Activity內部使用,但是一個給定的Fragment執行個體直接被捆綁包含它的Activity中。特別是Fragment能夠使用getActivity()方法訪問Activity的執行個體,並且很容易執行如在Activity布局中查詢檢視表的任務:View listView =
Time of Update: 2018-12-03
本文譯自:http://developer.android.com/training/basics/intents/result.html啟動另外一個Activity並不都是單向的,你也可以啟動另外一個Activity,並接受被啟動的Activity所返回的結果,這需要調用startActivityForResult()方法,而不是startActivity()方法。例如,你的應用程式可以啟動一個Camera應用程式,並把該應用程式拍攝的照片作為結果來接收。或者為了讓使用者選擇連絡人,你可以啟動