編輯:Android開發實例
前言
本章內容android.widget.RemoteViews章節,版本為Android 4.0 r1,翻譯來自"xiaoQLu",含示例代碼。
RemoteViews
譯者署名:xiaoQLu
譯者鏈接:http://www.cnblogs.com/xiaoQLu
版本:Android 4.0 r1
結構
繼承關系
public class RemoteViews extends Object implements Parcelable,LayoutInflater.Filter
java.lang.Object
android.widget.RemoteViews
類概述
一個描述了可以在其他進程中顯示的view層,它inflate於layout資源文件,並且這個類對提供一些基本操作修改view內容。
字段
public static final Creator<RemoteViews>
構造器Parcelable.Creator用來實例化RemoteViews類
內部類
class RemoteViews.ActionException
錯誤發生並發送異常時執行的動作
@interface RemoteViews.RemoteView
這個標記指明View的子類可以使用RemoteViews機制
構造函數
public RemoteViews(String packageName, int layoutId)
通過指定的布局文件新建一個RemoteViews對象。
public RemoteViews(Parcel parcel)
從一個parcel中讀取RemoteViews對象。
公共方法
public void addView (int viewId, RemoteViews nestedView)
相當於當inflate指定的RemoteViews後調用addView(View)。它允許用戶構建”nested(內部)”RemoteViews。在某種情況下RemoteViews可以回收布局,使用removeAllViews(int)清除所有存在的子視圖。
參數
viewId 要加入子視圖的父ViewGroup的id
nestedView 描述子視圖的RemoteViews
public void apply(Context context, ViewGroup parent)
Inflates視圖對象並且應用到所有的動作中。
調用注意:這個方法可能有異常拋出。
參數
Context 默認使用的context
parent 生成視圖層將要填充的parent。此方法不會附加到層次結構。調用者應該在適當的時候處理。
返回值
被inflated的視圖層
public RemoteViews clone ()
創建並返回這個對象的復本。默認的實現返回一個淺拷貝:它重新創建這個類的實例並從原來的實例中復制字段值(包括類相關的)到這個新的實例。相比之下,深拷貝,還會遞歸復制嵌套類
返回值
對象的復本。
public int describeContents ()
描述對象在Parcelable中特定的編碼形式
返回值
返回由Parcelable特定編碼形式的對象類型的位掩碼
public int getLayoutId ()
(譯者注:返回Inflates視圖的id)
public String getPackage ()
public boolean onLoadClass (Class clazz)
Hook允許LayoutInflater客戶端限制設置視圖,即允許被inflated。
參數
clazz 用來inflated的視圖對象
返回值
如果允許這個類inflated,返回true,否則返回false
public void reapply (Context context, View v)
為視圖對象應用所有的動作
參數
v 要應用動作的視圖。這個應該是apply(Context, ViewGroup)調用的結果
public void removeAllViews (int viewId)
相當於調用removeAllViews().
參數
viewed 要移除所有子視圖的父ViewGroup的id
public void setBitmap (int viewId, String methodName, Bitmap value)
為RemoteViews在視圖布局上調用一個帶有Bitmap值的方法。
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setBoolean (int viewId, String methodName, boolean value)
為RemoteViews在視圖布局上調用一個帶有boolean值的方法。
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setBundle (int viewId, String methodName, Bundle value)
為RemoteViews在視圖而已上調用一個帶有Bundle值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setByte (int viewId, String methodName, byte value)
為RemoteViews在視圖而已上調用一個帶有byte值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setChar (int viewId, String methodName, char value)
為RemoteViews在視圖而已上 調用一個帶有char值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setCharSequence (int viewId, String methodName, CharSequence value)
為RemoteViews在視圖而已上調用一個帶有CharSequence值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setChronometer (int viewId, long base, String format, boolean started)
等同於調用Chronometer.setBase, Chronometer.setFormat,和Chronometer.start() 或者 Chronometer.stop().
參數
viewId 視圖id
base 定時器應該從0:00開始讀取的時間,這個時間應該基於SystemClock.elapsedRealtime()
format 計時器的格式字符串,或者是簡單顯示時間的null值
started True表示開始,false相反
public void setDisplayedChild (int viewId, int childIndex)
等同於調用setDisplayedChild(int)
參數
viewId 要調用setDisplayedChild(int)的視圖的id
public void setDouble (int viewId, String methodName, double value)
為RemoteViews在視圖而已上 調用一個帶有double值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setEmptyView (int viewId, int emptyViewId)
相當於調用AdapterView.setEmptyView
參數
viewId 要設置空視圖的視圖id
emptyViewId 空視圖的id
public void setFloat (int viewId, String methodName, double value)
為RemoteViews在視圖而已上調用一個帶有float值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setImageViewBitmap (int viewId, Bitmap bitmap)
相當於調用ImageView.setImageBitmap
參數
viewId 視圖id
bitmap 用於繪制的新的Bitmap
public void setImageViewResource (int viewId, int srcId)
相當於調用ImageView. setImageResource
參數
viewId 視圖id
srcId 用於繪制的新的資源id
public void setImageViewUri (int viewId, Uri uri)
相當於調用ImageView. setImageURI
參數
viewId 視圖id
uri 用於繪制的新的資源uri
public void setInt (int viewId, String methodName, int value)
為RemoteViews在視圖而已上調用一個帶有int值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setIntent (int viewId, String methodName, Intent value)
(譯者注:為RemoteViews在視圖而已上調用一個帶有Intent值方法)
public void setLong (int viewId, String methodName, long value)
為RemoteViews在視圖而已上調用一個帶有long值方法
參數
viewId 視圖id
methodName 要調用的方法名
value 要傳的值
public void setOnClickFillInIntent (int viewId, Intent fillInIntent)
當在widgets中使用集合(比如說ListView, StackView等等),在單獨的一個條目中設置PendingIntents是非常浪費的,並且是不被允許的。然而一個單獨的PendingIntents模板可以設置在集合裡,參見setPendingIntentTemplate(int, PendingIntent),並且一個給定條目的單獨的on-click的動作可以通過在條目上設置fillInIntent來區別。然後這個fillInIntent就和PendingIntent的實例結合在一起決定最終的被點擊執行的intent。規定如下:在PendingIntent實例裡,左邊為空白的任何區域,但由fillInIntent提供的,將被重寫,同時PendingIntent的結果將被使用。然後PendingIntent將被在fillInIntent中設置的有聯系的字段填充。參見fillIn(Intent, int)
參數
viewId 要設置fillInIntent視圖id
fillInIntent 要和父類的PendingIntent組合在一起的意圖,用來決定被viewid指定的視圖的on- click動作
public void setOnClickPendingIntent (int viewId, PendingIntent pendingIntent)
相當於調setOnClickListener(android.view.View.OnClickListener)啟動准備好的PendingIntent。當在集合中設置條目的on-click動作時(比如說:ListView, StackView等),這個方法不起作用。然而,[email protected] RemoteViews#setPendingIntentTemplate(int, PendingIntent)應該和RemoteViews#setOnClickFillInIntent(int, Intent).一起使用
參數
viewId 當點擊時將要觸發PendingIntent的視圖的id
pendingIntent 當點擊時傳過去的PendingIntent
public void setPendingIntentTemplate (int viewId, PendingIntent pendingIntentTemplate)
當在widgets中使用集合(比如說ListView, StackView等等)時,在單獨的一個條目中設置PendingIntent代價是很昂貴的,因此也是不被允許的。這個方法應該在集合中設置一個單獨的PendingIntent模板,然後每一個單獨的條目都可以通過setOnClickFillInIntent(int, Intent)來區別他們的點擊事件。
參數
viewId 當點擊時,其子視圖需要使用PendingIntent模板的集合id
pendingIntentTemplate 和viewID的一個子類綁定在一起的PendingIntent,這個孩子在點擊時會被執行
public void setProgressBar (int viewId, int max, int progress, boolean indeterminate)
如果indeterminate為true的話,相當於調用ProgressBar.setMax, ProgressBar.setProgress和ProgressBar.setIndeterminate,那麼最大值和進度被忽略
參數
viewId 視圖的id
max 進度條的100%時的值
progress 進度條當前的值
indeterminate 如果進度條是不確定的為true,反之為false
public void setRelativeScrollPosition (int viewId, int offset)
相當於調用smoothScrollToPosition(int, int).
參數
viewId 視圖id
offset 滾動套適配器偏移位置
public void setRemoteAdapter (int appWidgetId, int viewId, Intent intent)
相當於調用setRemoteViewsAdapter(Intent)
參數
appWidgetId 包含指定視圖的app widget的id
viewId 視圖id
intent 為RemoteViewsAdapter提供數據的服務的intent
public void setScrollPosition (int viewId, int position)
相當於調用smoothScrollToPosition(int, int).
參數
viewId 視圖id
position 滾動到適配器指定位置
public void setShort (int viewId, String methodName, short value)
在視圖布局上為RemoteViews調用一個帶有short值的方法。
參數
viewId 視圖id
methodName 調用方法的名稱
value 要傳給方法的值
public void setString (int viewId, String methodName, String value)
在視圖布局上為RemoteViews調用一個帶有String值的方法。
參數
viewId 視圖id
methodName 調用方法的名稱
value 要傳給方法的值
public void setTextColor (int viewId, int color)
相當於調用setTextColor(int)
參數
viewId 視圖id
color 設置所有的狀態(normal, selected, focused)下的text顏色為指定顏色
public void setUri (int viewId, String methodName, Uri value)
在視圖布局上為RemoteViews調用一個帶有Uri值的方法。
參數
viewId 視圖id
methodName 調用方法的名稱
value 要傳給方法的值
public void setTextViewText (int viewId, CharSequence text)
相當於調用setTextColor(int)
參數
viewId 視圖id
methodName 要調用的方法名
public void setViewVisibility (int viewId, int visibility)
相當於調用view.setVisibility
參數
viewId 視圖id
visibility 這個視圖的新的可見性
public void showNext (int viewId)
相當於調用showNext()
參數
viewId 需要調用showNext()的視圖id
public void showPrevious (int viewId)
相當於調用showPrevious()。
參數
viewId 需要調用showPrevious()的視圖id
public void writeToParcel (Parcel dest, int flags)
把一個對象填充到一個Parcel裡
參數
Dest 需要寫入Parcel的對象
flags 這個對象應該怎樣被的標志。可能是0 或者PARCELABLE_WRITE_RETURN_VALUE
由於項目需要,我們需要一個可以橫向滾動的,又可以豎向滾動的 表格。而且又要考慮大數據量(行)的展示視圖。經過幾天的研究終於搞定,做了一個演示。貼圖如下: &nbs
Android提供的剪貼板框架,復制和粘貼不同類型的數據。數據可以是文本,圖像,二進制流數據或其它復雜的數據類型。Android提供ClipboardManager、Cl
Broadcast Receiver簡介 Broadcast Receiver是Android的五大組件之一,使用頻率也很高。 用於異步接收廣播Intent,廣播
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我