Time of Update: 2017-02-27
如果需要注入某個參數化型別,比如List<String>:class Example { @Inject void setList(List<String> list) { ... } }可以使用TypeLiteral 來建立這個綁定。TypeLiteral 為一特殊類型 可以用於表示參數化型別。@Override public void configure() { bind(new TypeLiteral<List&
Time of Update: 2017-02-27
預設情況下,Guice每次都建立類的一個新的執行個體對象給需要該類執行個體的地方 。可以使用Scopes來修改這個預設行為,Scope允許在一定範圍內重用類執行個體。 Roboguice中常用的有兩種:@Singleton 整個Application生命週期中使 用同一執行個體對象@ContextScoped 同一個Context(如Activity)中共用某一實 例對象。使用Scope 的方法為使用相應的標記,如:@Singleton public class
Time of Update: 2017-02-27
Injector 通過檢查bindings 定義來建立某個類型的執行個體對象。定義在Module 中的綁定稱為“明確聲明綁定(Explicit bindings”。Injector 會首先使用帶 有Explicit Bindings為某個類型建立執行個體對象。 當但某個類型沒有明確定義綁 定時,Injector 試圖構造“即時綁定(Just-in-time Bindings),JIT Bindings 也成為隱含綁定(implicit
Time of Update: 2017-02-27
在建立Bindings時,也可以不給出綁定的目標,通常用於含有@ImplementedBy 和@ProvidedBy (後面介紹)的實類(Concrete classes 或type)。 Untargeted bindings 目的是通知Injector 某個類類型,從而Injector可以預先準備某個依 賴。Untargetted Bindings不含to語句。例如:bind(MyConcreteClass.class);
Time of Update: 2017-02-27
如果@Provides方法很複雜的話,可以將這些代碼移動到單獨的類中。這個類 需要實現Guice的Provider 介面,該介面定義如下public interface Provider<T> { T get();}為一個generic 介面。本例我們定義一個PathProvider,用於 返回一個Path對象:public class PathProvider implements Provider<Path>{ private
Time of Update: 2017-02-27
上例說過如果需要構造一些較複雜的類的執行個體,通常的方法是使用@Provides 方法。這個方法必須定義在模組中(Module),而且必須使用@Provides 標註,在 個方法的傳回型別則綁定到這個方法返回的對象執行個體。如果這個方法帶有 binding Annotation或是@Named(“xxx”),Guice則將@Provides方法返回的對象 綁定到這個annotated 類型。本例使用@Provides建立三個圓,然後再屏
Time of Update: 2017-02-27
我們在前面例子Android RoboGuice 使用指南(4):Linked Bindings 時為簡單 起見,定義MyRectangle和MySquare時為它們定義了一個不帶參數的建構函式,如 MyRectangle的如下:public class MyRectangle extends Rectangle{ public MyRectangle(){ super(50,50,100,120); } public MyRectangle(int width, int
Time of Update: 2017-02-27
Android 利用內建VideoView控制項播放視頻Activitypublic class Activity01 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) {
Time of Update: 2017-02-27
Android中context可以作很多操作,但是最主要的功能是載入和訪問資源。在android中有兩種context,一種是application context,一種是activity context,通常我們在各種類和方法間傳遞的是activity context。繼承關係:區別聯絡:public class MyActivity extends Activity { public void method() { mContext = this;
Time of Update: 2017-02-27
本文主要講解下AsyncTask的使用以及Handler的應用首先,我們得明確下一個概念,什麼是UI線程。顧名思義,ui線 程就是管理著使用者介面的那個線程!android的ui線程操作並不是安全的,並且和使用者直接進行介面互動的操作都必須在 ui線程中進行才可以。這種模式叫做單線程模式。我們在單線程模式下編程一定要注意:不要阻塞ui線程、確保只在ui 線程中訪問ui組件當我們要執行一個複雜耗時的演算法並且最終要將計算結果反映到ui上時,我們會發現,我們根本沒辦
Time of Update: 2017-02-27
在開發Android應用時必須遵守單執行緒模式的原則: Android UI操作並不是安全執行緒的並且這些操作必須在UI線程中執行。 在單執行緒模式中始終要記住兩條法則:1. 不要阻塞UI線程2. 確保只在UI線程中訪問Android UI工具包當一個程式第 一次啟動時,Android會同時啟動一個對應的主線程(Main Thread),主線程主要負責處理與UI相關的事件,如:使用者的按鍵事件
Time of Update: 2017-02-27
android字型閃爍動畫,使用線程和Timer實現public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spark(); } private int clo = 0;
Time of Update: 2017-02-27
android中的很多遊戲的遊戲都使用了重力感應的技術,就研究了一下重力感應以螢幕的左下方為原點,箭頭指向的 方向為正。從-10到10,以浮點數為等級單位,想象以下情形:手機螢幕向上(z軸 朝天)水平放置的時侯,(x,y,z)的值分別為(0,0,10);手機螢幕向下(z軸朝地)水平放置的時侯,(x,y,z
Time of Update: 2017-02-27
這段時間在學Android應用開發,在想既然是用Java開發的應該很好反編譯從而得到原始碼吧,google了一下,確實很簡單, 以下是我的實踐過程。在此鄭重聲明,貼出來的目的不是為了去破解人家的軟體,完全是一種學習的態度,不過好像通 過這種方式也可以去漢化一些外國軟體。本文Android反編譯教程,測試環境:Win7 Ultimate x64Ubuntu 12.04 x86_x64反編譯工具包 下載
Time of Update: 2017-02-27
上篇介紹了使用Animation實現3D動畫旋轉翻頁效果,現在介紹圖片倒影實現,先看效果圖本樣本主要通過自訂Gallery和ImageAdapter(繼承自BaseAdapter)實現1、倒影繪製ImageAdapter繼承自 BaseAdapter,詳細實現可見 Android 滑動效果入門篇(二)—— Gallery 這裡重點介紹倒影原理及實現倒影原理:倒影效果是主要由原圖+間距+倒影三部分組成,高度大約為原圖的3/2(原圖為1、倒影為1/2)原圖,就是我們
Time of Update: 2017-02-27
前面介紹了利用Android內建的控制項,進行滑動翻頁製作效果,現在我們通過代碼實現一些滑動翻頁的動畫效果。Animation實現動畫有兩個方式:幀動畫(frame-by-frame animation)和補間動畫(tweened animation)本示 例通過繼承Animation自訂Rotate3D,實現3D翻頁效果。效果圖如下:1、Rotate3D(Animation)首先,自訂Animation的3D動畫類Rotate3Dpublic class Rotate3D extends
Time of Update: 2017-02-27
Android系統內建一個Gallery瀏覽圖片的應用,通過手指拖動時能夠非常流暢的顯示圖片,使用者互動和體驗都很好。本樣本就是通過Gallery和自訂的View,模仿實現一個仿Gallery映像集的圖片瀏覽效果。效果圖如下:1、基本原理在 Activity 中實現 OnGestureListener 的介面 onFling() 手勢事件,通過自訂的 View 繪製draw() 圖片2、 ActivityActivity中,通過onTouchEvent() 註冊
Time of Update: 2017-02-27
Gallery 是Android官方提供的一個View容器類,繼承於AbsSpinner類,用於實現頁面滑動效果。從上面的繼承關係可 以看出,AbsSpinner類繼承自AdapterView,因此我們可以自訂實現Adapter,來填充Gallery容器的資料。本示 例通過自己實現一個Adapter,來填充Gallery容器的圖片資料,首先看效果:Activityimport android.app.Activity; import android.os.Bundle;
Time of Update: 2017-02-27
Android中,View的Listener方法,在是否使用匿名類匿名對象時,有各種不 同的寫法。OnClickListener和其他Listener方法一樣,都是View類的接 口,重載實現後就能使用,其介面定義如下:public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that
Time of Update: 2017-02-27
前面介紹了RogoGuice2.0的基本用法,其它使用可以參見RoboGuice1.1開發 指南,2.0中提供了對Fragment,View(自訂View中使用注入)的支援,本博 客不再一一介紹。本例使用的是RoboGuice 開發包中的簡單樣本 Astroboy(阿童木)。涉及的使用RoboGuice2.0 的一些常用方法。本例 下載(Eclipse項目)。下面對項目中RoboGuice2的使用進行解釋。因為 本例沒使用自訂綁定,所以無需使用res/values/roboguice.xml