You are on page 1of 28

CHNG 8

1. 2. 3. Tm hiu v gi Suport-v4 .................................................................................................................. 2 Tm hiu v Control Open Source ................................................................................................... 14

Fragment l g ? ............................................................................................................................... 20

1. Tm hiu v gi Suport-v4
L th vin h tr Fragment, nu l t Android version 3.0 tr ln h tr sn Fragment th cc bn khng cn b sung thm gi android-support-v4.jar . android.support.v4.accessibilityservice: H tr cc class pht trin ng dng cho Android API cp 4 hoc ln hn. Class: AccessibilityServiceInfoCompat Tr gip cho vic truy cp cc tnh nng trong AccessibilityService sau khi API cp 4 trong mt backwards compatible fashion.

android.support.v4.app Cc h tr pht trin ng dng cho Android API cp 4 hoc sau . Cc tnh nng chnh y l tng thch phin bn trc ca FragmentManager v LoaderManager. Interface: ActionBarDrawerToggle.Delegate ActionBarDrawerToggle.DelegateProvider Cho php thc hin tr v ActionBarDrawerToggle.Delegate s dng vi ActionBarDrawerToggle. FragmentManager.BackStackEntry i din ca mt mc trn fragment tr v ngn xp, to ra vi FragmentTransaction.addToBackStack (). FragmentManager.OnBackStackChangedListener Interface thay i tr v ngn xp. LoaderManager.LoaderCallbacks<D> Interface gi li Client tng tc vi Manager. TaskStackBuilder.SupportParentable Class: ActionBarDrawerToggle Class ny cung cp tin dng kt hp cht ch cc chc nng ca DrawerLayout v framework ActionBar thc hin vic thit k ngn ko chuyn hng. Tr gip cho vic truy cp cc tnh nng Activity a ra sau khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong ActivityOptions a ra trong API cp 16 trong
2

ActivityCompat

ActivityOptionsCompat

DialogFragment Fragment Fragment.SavedState

FragmentActivity

FragmentManager FragmentPagerAdapter

FragmentStatePagerAdapter FragmentTabHost FragmentTransaction ListFragment LoaderManager NavUtils

NotificationCompat

mt backwards compatible fashion. Stattic library h tr h tr phin bn ca framework DialogFragment. Stattic library h tr h tr phin bn ca framework Fragment. Thng tin trng thi c ly ra t mt fragment qua FragmentManager.saveFragmentInstanceState. Lp c s cho cc hot ng m mun s dng fragment h tr da trn Fragment and Loader APIs. Stattic library h tr h tr phin bn ca framework FragmentManager. Thc hin PagerAdapter i din cho mi trang nh mt Fragment c lin tc gi trong b fragment qun l{ khi no ngi dng c th tr li trang. Thc hin PagerAdapter c s dng mt Fragment qun l mi trang. Special TabHost cho php vic s dng cc i tng Fragment cho ni dung tab ca n. Stattic library h tr h tr phin bn ca framework FragmentTransaction. Stattic library h tr h tr phin bn ca framework ListFragment Stattic library h tr h tr phin bn ca framework LoaderManager NavUtils cung cp chc nng tr gip cho cc ng dng thc hin m hnh iu hng giao din ngi dng Android. Tr gip cho vic truy cp cc tnh nng trong Notification a ra sau khi API cp 4 trong mt backwards compatible fashion. Class tr gip to ra cc thng bo nh dng ln bao gm mt tp tin nh km hnh nh ln. Class tr gip to ra cc thng bo ln nh dng bao gm rt nhiu vn bn. Xy dng class cho cc i tng NotificationCompat. Class tr gip to ra cc thng bo ln nh dng bao gm mt danh sch (ln n 5) ca
3

NotificationCompat.Action NotificationCompat.BigPictureStyle

NotificationCompat.BigTextStyle NotificationCompat.Builder NotificationCompat.InboxStyle

NotificationCompat.Style

ServiceCompat

ShareCompat ShareCompat.IntentBuilder

ShareCompat.IntentReader TaskStackBuilder

chui. Mt i tng m c th p dng kiu thng bo phong ph cho mt i tng Notification.Builder. Tr gip cho vic truy cp cc tnh nng Service a ra sau khi API cp 4 trong mt backwards compatible fashion. Tr gip thm cc chc nng cho vic chia s d liu gia cc hot ng. IntentBuilder l mt tr gip cho vic xy dng ACTION_SEND v ACTION_SEND_MULTIPLE chia s { ngha v cc hot ng bt u chia s ni dung. IntentReader l mt tr gip c d liu cha trong mt chia s (ACTION_SEND). Class tin ch xy dng ngn xp tr li iu hng qua cng vic trn Android 3.0 v mi hn.

Exceptions: Fragment.InstantiationException c nm bi Khi to (Context, String, Bundle) khi c mt instantiation tht bi.

android.support.v4.content H tr cc class pht trin ng dng cho Android API cp 4 hoc sau . Cc tnh nng chnh y l Loader v cc class lin quan v LocalBroadcastManager cung cp mt thc hin sch ca chng trnh pht sng m khng cn phi i ra ngoi ng dng.

Interface: Loader.OnLoadCompleteListener<D> Giao din c thc hin pht hin khi mt Loader hon tt ti d liu ca n.

Class: AsyncTaskLoader<D> ContextCompat Stattic library h tr h tr phin bn ca framework AsyncTaskLoader Tr gip cho vic truy cp cc tnh nng trong Context a ra i vi API cp 4 trong
4

CursorLoader FileProvider

IntentCompat

Loader<D> Loader.ForceLoadContentObserver

LocalBroadcastManager

WakefulBroadcastReceiver

mt backwards compatible fashion. Th vin tnh h tr phin bn ca framework's CursorLoader. FileProvider l mt lp c bit ca ContentProvider to iu kin chia s an ton ca cc tp tin lin quan n mt ng dng bng cch to ra mt ni dung :/ / Uri cho mt tp tin thay v mt file :/ / / Uri. Tr gip cho vic truy cp cc tnh nng trong Intent a ra sau khi API cp 4 trong mt backwards compatible fashion. Th vin tnh h tr phin bn ca framework's Loader. Thc hin mt ContentObserver s chm sc ca kt ni vi Loader, ti d liu ca n khi cho bit n thay i. Tr gip ng k{ v gi broadcasts ca Intents cho cc i tng cc b trong qu trnh ca bn. Tr gip cho cc mu chung ca vic thc hin mt BroadcastReceiver tip nhn mt s kin thit b nh thc v sau i n mt dch v, trong khi m bo rng cc thit b khng i ng tr li trong qu trnh chuyn i.

android.support.v4.content.pm H tr pht trin ng dng cho Android API cp 4 hoc sau . Class ActivityInfoCompat Tr gip cho vic truy cp cc tnh nng trong ActivityInfo a ra i vi API cp 4 trong mt backwards compatible fashion.

android.support.v4.database H tr pht trin ng dng cho Android API cp 4 hoc sau . Class:
5

DatabaseUtilsCompat

Tr gip cho vic truy cp cc tnh nng trong DatabaseUtils a ra i vi API cp 4 trong mt backwards compatible fashion.

android.support.v4.graphics.drawable Class DrawableCompat Tr gip cho vic truy cp cc tnh nng trong Drawable a ra i vi API cp 4 trong mt backwards compatible fashion.

android.support.v4.hardware.display Class: DisplayManagerCompat Tr gip cho vic truy cp cc tnh nng trong DisplayManager a ra i vi API cp 4 trong mt backwards compatible fashion.

android.support.v4.media Class: TransportController TransportMediator Giao din c s kim sot vn chuyn mt media Tr gip cho vic thc hin iu khin vn chuyn mt media (vi chi, tm dng, b qua, v hnh ng ca phng tin truyn thng khc). Thc hin pht li ca h thng media, p ng yu cu thc hin cc hnh ng v ly trng thi hin ti ca n. Lng nghe thay i pht li c th c ng k{ vi TransportController.

TransportPerformer

TransportStateListener

android.support.v4.net Class: ConnectivityManagerCompat Tr gip cho vic truy cp cc tnh nng trong ConnectivityManager a ra i vi API cp 16 trong mt backwards compatible fashion.
6

TrafficStatsCompat

Tr gip cho vic truy cp cc tnh nng trong TrafficStats a ra i vi API cp 14 trong mt backwards compatible fashion.

android.support.v4.os Interface: ParcelableCompatCreatorCallbacks<T> Callbacks cng c to Parcelable.

Class; EnvironmentCompat Tr gip cho vic truy cp cc tnh nng trong Environment a ra i vi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong Parcelable a ra i vi API cp 4 trong mt backwards compatible fashion.

ParcelableCompat

android.support.v4.print Class: PrintHelper android.support.v4.text Interface: TextDirectionHeuristicCompat Giao din cho cc i tng s dng mt heuristic cho vic on hng on bng cch kim tra vn bn. Tr gip cho in n bitmap.

Class: BidiFormatter Lp tin ch nh dng vn bn cho mn hnh hin th trong mt bi cnh c kh nng i opposite-directionality m khng garbling. Class xy dng mt BidiFormatter vi cc ty chn khng mc nh.

BidiFormatter.Builder ICUCompat

TextDirectionHeuristicsCompat TextUtilsCompat android.support.v4.util

Mt s i tng thc hin TextDirectionHeuristic.

H tr pht trin ng dng cho Android API cp 4 hoc sau . Class: ArrayMap<K, V> ArrayMap l mt cu trc d liu bn chung key->value c thit k c nhiu b nh hiu qu hn mt HashMap truyn thng, thc hin iu ny l mt phin bn ca nn tng ArrayMap c th c s dng trn cc phin bn c. Th vin tnh h tr phin bn ca framework's AtomicFile, class h tr thc hin thao tc nguyn vo mt tp tin bng cch to ra mt tp tin sao lu cho n khi ghi hon thnh thnh cng. SparseArray ch i nh x cc Object, mt phin bn nn tng ca LongSparseArray c th c s dng trn cc phin bn c hn ca nn tng ny. Th vin phin bn ca LruCache. C s trin khai ca ArrayMap m khng bao gm bt kz kh nng tng tc API Java container tiu chun. Mt bn sao ca cc nn tng hin ti (KitKat phin bn ca SparseArray, cung cp mt phng php removeAt() v nhng th khc.

AtomicFile

LongSparseArray<E>

LruCache<K, V SimpleArrayMap<K, V>

SparseArrayCompat<E>

android.support.v4.view H tr pht trin ng dng cho Android API cp 4 hoc sau . Cc tnh nng chnh y l mt lot cc class x l backwards compatible fashion. Interface: ActionProvider.VisibilityListener MenuItemCompat.OnActionExpandListener Lng nghe nhng thay i theo bo co ca refreshVisibility (). Xc nh giao din cho mt cuc gi li c gi khi mt mc trnh n c nh du
8

ViewPager.OnPageChangeListener ViewPager.PageTransformer

bng SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW c m rng hoc thu hp. Gi li giao din ng ph vi thay i trng thi ca trang chn. Mt PageTransformer c gi bt c khi no c th nhn thy/km theo trang l cun.

Class: AccessibilityDelegateCompat Tr gip cho vic truy cp View.AccessibilityDelegate a ra khi API cp 4 trong mt backwards compatible fashion. Class l mt trung gian hon thnh mt nhim v nht nh, v d nh chia s mt tp tin. Pht hin c ch khc nhau v cc s kin bng cch s dng MotionEvents cung cp. Kh nng tng thch truy cp cc chc nng mi hn Gravity. Tr gip cho vic truy cp cc tnh nng trong KeyEvent a ra khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng API trong MarginLayoutParams thm vo sau API 4. Tr gip cho vic truy cp cc tnh nng trong Menu a ra khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong MenuItem a ra khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong MotionEvent a ra khi API cp 4 trong mt backwards compatible fashion. Lp c s cung cp cc b chuyn i c tr trang bn trong ca mt ViewPager. PagerTabStrip l mt ch s tng tc ca hin ti, tip theo, v cc trang trc ca mt ViewPager. PagerTitleStrip l mt ch s khng tng tc ca hin ti, tip theo, v cc trang trc ca
9

ActionProvider

GestureDetectorCompat GravityCompat KeyEventCompat

MarginLayoutParamsCompat

MenuCompat

MenuItemCompat

MotionEventCompat

PagerAdapter PagerTabStrip

PagerTitleStrip

ScaleGestureDetectorCompat

VelocityTrackerCompat

ViewCompat

ViewCompatKitKat ViewConfigurationCompat

ViewGroupCompat

ViewPager ViewPager.LayoutParams ViewPager.SavedState ViewPager.SimpleOnPageChangeListener

ViewParentCompat

ViewParentCompatICS WindowCompat

mt ViewPager. Tr gip cho vic truy cp cc tnh nng trong ScaleGestureDetector a ra khi API cp 19 (KitKat) trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong VelocityTracker a ra khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong View a ra khi API cp 4 trong mt backwards compatible fashion. Trin khai thc hin KitKat-specific View API Tr gip cho vic truy cp cc tnh nng trong ViewConfiguration gii thiu sau khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong ViewGroup gii thiu sau khi API cp 4 trong mt backwards compatible fashion. Layout qun l cho php ngi s dng lt tri v phi thng qua cc trang d liu. Thng s Layout cn c cung cp cho cc quan im thm vo mt ViewPager. y l trng thi lin tc c lu bi ViewPager. Thc hin n gin ca giao din ViewPager.OnPageChangeListener vi vic trin khai s khai ca tng phng php. Tr gip cho vic truy cp cc tnh nng trong ViewParent gii thiu sau khi API cp 4 trong mt backwards compatible fashion. Trin khai thc hin ICS-specific ViewParent API Tr gip cho vic truy cp cc tnh nng trong ca s a ra sau khi API cp 4 trong mt backwards compatible fashion.

Android.support.v4.view.accessibility H tr pht trin ng dng cho Android API cp 4 hoc sau . Class: AccessibilityEventCompat
10

Tr gip cho vic truy

AccessibilityManagerCompat

AccessibilityManagerCompat.AccessibilityStateChangeListenerComp at AccessibilityNodeInfoCompat

AccessibilityNodeProviderCompat

AccessibilityRecordCompat

cp cc tnh nng trong AccessibilityEvent a ra sau khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp cc tnh nng trong AccessibilityManager a ra sau khi API cp 4 trong mt backwards compatible fashion. Lng nghe trng thi cn. Tr gip cho vic truy cp AccessibilityNodeInfo a ra sau khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp AccessibilityNodeProv ider a ra sau khi API cp 4 trong mt backwards compatible fashion. Tr gip cho vic truy cp AccessibilityRecord a ra sau khi API cp 4 trong mt backwards compatible fashion.

android.support.v4.widget Cc Class h tr pht trin ng dng cho Android API cp 4 hoc sau . iu ny bao gm vic thc hin hon ton CursorAdapter v cc class c lin quan, l cn thit s dng vi CursorLoader.
11

Interface: DrawerLayout.DrawerListener Lng nghe gim st cc s kin v Drawer. SimpleCursorAdapter.CursorToStringConverter Lp ny c th c s dng bi my khch bn ngoi ca SimpleCursorAdapter xc nh cch con tr phi c chuyn i thnh mt String. SimpleCursorAdapter.ViewBinder Lp ny c th c s dng bi my khch bn ngoi ca SimpleCursorAdapter rng buc cc gi tr Cursor. SlidingPaneLayout.PanelSlideListener Lng nghe gim st cc s kin v sliding panes. SwipeRefreshLayout.OnRefreshListener Cc class m mun c thng bo khi c cc c ch swipe chnh xc lm mi nn thc hin giao din ny. Class: AutoScrollHelper AutoScrollHelper l mt class tin ch thm t ng edge-triggered di chuyn cho xem. ContentLoadingProgressBar thc hin mt ProgressBar m ch i mt thi gian ti thiu c bc b trc khi hin th. Th vin tnh h tr phin bn ca framework's CursorAdapter. DrawerLayout hot ng nh thng cp cao cho ni dung ca s cho php tng tc "Drawer" quan im c ko ra t cc cnh ca ca s. Trng thi tip tc tn trn cc trng hp. Stub/no-op thc hin tt c cc phng php DrawerLayout.DrawerListener. Tr gip cho vic truy cp EdgeEffect a ra sau khi API cp 4 trong mt backwards compatible fashion. ExploreByTouchHelper l mt lp tin ch thc hin h tr tip cn trong Views ty chnh m i din cho mt tp hp cc View ging nh mc hp l. Tr gip cho vic truy cp cc tnh nng trong ListPopupWindow gii thiu sau khi
12

ContentLoadingProgressBar

CursorAdapter DrawerLayout

DrawerLayout.LayoutParams DrawerLayout.SavedState DrawerLayout.SimpleDrawerListener EdgeEffectCompat

ExploreByTouchHelper

ListPopupWindowCompat

API cp 4 trong mt backwards compatible fashion. ListViewAutoScrollHelper Thc hin AutoScrollHelper m bit c lm th no di chuyn qua mt ListView. PopupMenuCompat Tr gip cho vic truy cp cc tnh nng trong PopupMenu gii thiu sau khi API cp 4 trong mt backwards compatible fashion. ResourceCursorAdapter Th vin tnh h tr phin bn ca framework's ResourceCursorAdapter. ScrollerCompat Cung cp quyn truy cp vo cc API Scroller mi khi c sn. SearchViewCompat Tr gip cho vic truy cp cc tnh nng trong SearchView gii thiu sau khi API cp 4 trong mt backwards compatible fashion. SearchViewCompat.OnCloseListenerCompat Gi li ng giao din truy vn. SearchViewCompat.OnQueryTextListenerCompat Gi li thay i cc vn bn truy vn. SimpleCursorAdapter Th vin tnh h tr phin bn ca framework's SimpleCursorAdapter. SlidingPaneLayout SlidingPaneLayout cung cp chiu ngang, b tr nhiu ca s s dng cc cp cao nht ca mt giao din ngi dng. SlidingPaneLayout.LayoutParams SlidingPaneLayout.SimplePanelSlideListener No-op khai cho SlidingPaneLayout.PanelSlideListener. SwipeRefreshLayout Cc SwipeRefreshLayout nn c s dng bt c khi no ngi dng c th lm mi cc ni dung ca mt ci nhn thng qua mt swipe. ViewDragHelper ViewDragHelper l mt lp tin ch vit ty chnh ViewGroups. ViewDragHelper.Callback Gi li c s dng nh mt knh giao tip vi ViewDragHelper tr li s dng n.

13

2. Tm hiu v Control Open Source


Gii thiu: Android l mt phn mm ngn xp ngun m cho mt lot cc thit b di ng v mt d n m ngun m tng ng ng u Google. y bn c th tm thy cc thng tin v m ngun bn cn phi tm hiu thm v nn tng Android. T bn c th to ra phin bn ty chnh ca phn mm ngn xp Android, cng thit b v cc ph kin cho nn tng Android, v m bo cc thit b ca bn tng thch vi cc nh ngha tng thch Android. M ngun c sn cho Android: M ngun Android: Android l mt phn mm ngn xp m ngun m c to ra cho hng lot cc thit b vi cc yu t dng khc. Mc ch chnh ca Android l to ra mt nn tng phn mm m c sn, cc OEM v cc nh pht trin thc hin { tng sng to ca h thnh hin thc v gii thiu mt thnh cng, sn phm thc t ci thin tri nghim di ng cho ngi dng. Chng ti cng mun chc chn rng khng c tm im ca s tht bi, trong c th hn ch hoc kim sot nhng sng kin ca bt kz khc. Kt qu l mt sn phm tiu dng sn xut cht lng y vi m ngun m cho cc tuz bin v chuyn mng. Trit l qun tr: Android c bt u bi mt nhm cc cng ty c gi l Open Handset Alliance , ng u l Google. Ngy nay, nhiu cng ty - c hai thnh vin ban u ca OHA v nhng ngi khc - u t rt nhiu trong Android. Cc cng ty ny phn b cc ngun lc k thut quan trng ci thin Android v mang cc thit b Android ra th trng. Cc cng ty u t vo Android lm nh vy trn gi tr ca n bi v chng ti tin rng mt nn tng m l cn thit. Android ch ch v r rng mt m ngun m - tri vi mt phn mm min ph - , mt nhm cc t chc c nhu cu chia s kt hp cc ngun lc cng tc trn mt thc hin duy nht ca mt sn phm c chia s. Trit l thc dng Android l, u tin v quan trng nht. Mc tiu l mt sn phm chia s rng mi ng gp c th thay i v ty chnh. Ty bin c th khng kim sot c, tt nhin, dn n vic trin khai khng tng thch. ngn chn iu ny, cc d n m ngun m Android cng duy tr Android Compatibility Program, trong nu r nhng g n c ngha l "Android tng thch" v nhng g c yu cu ca nh xy dng thit b t c trng thi . Bt c ai cng c th (v s) s dng m ngun Android cho mc ch no, v chng ti hoan nghnh tt c cc s dng hp php. Tuy nhin, tham gia vo cc h sinh thi chia s cc ng dng, chng ti ang xy dng xung quanh Android, cc nh xy dng thit b phi tham gia vo Android Compatibility Program.

14

D n m ngun m Android c dn dt bi Google, ngi duy tr v tip tc pht trin Android. Mc d Android bao gm nhiu tiu d n, iu ny l ng mt k thut qun l d n. Chng ti xem v qun l{ Android nh l mt sn phm duy nht ton din cc phn mm, khng phi l mt "phn b", c im k thut, hoc tp hp cc b phn thay th. Mc ch ca chng ti l nh xy dng cng thit b Android vi mt thit b, h khng thc hin mt c im k thut hoc gim tuyn mt phn phi. Kh nng tng thch Android: Kh nng tng thch: Mc ch ca Android l thit lp mt nn tng m cho cc nh pht trin xy dng cc ng dng sng to. Chng trnh Android Compatibility nh ngha cc chi tit k thut ca nn tng Android v cung cp cc cng c c s dng bi cc OEM m bo rng cc ng dng pht trin chy trn nhiu loi thit b. Android SDK cung cp cc cng c c xy dng trong cc nh pht trin s dng ghi r cc thit b c tnh nng ng dng ca h yu cu. V Google Play cho cc ng dng ch dnh cho nhng thit b ng cch c th chy chng. Ti sao xy dng cc thit b Android tng thch? Ngi dng mun c mt thit b ty chnh: Mt in thoi di ng l mt c nhn, lun lun m, ca ng vi Internet. Chng ti khng phi gp ngi s dng no nhng ngi khng mun ty chnh n bng cch m rng tnh nng ca n. l l{ do ti sao Android c thit k nh mt nn tng mnh m cho cc ng dng ang chy aftermarket. Pht trin nhiu hn: Khng c nh sn xut thit b c th hy vng s vit tt c cc phn mm m mt ngi c th nhn thy rng cn. Chng ta cn pht trin bn th ba vit cc ng dng ngi dng mun, v vy cc d n m ngun m Android nhm mc ch lm cho n d dng v ci m nht c th cho cc nh pht trin xy dng cc ng dng. Mi ngi u cn mt mi trng chung: Mi dng ca cc nh pht trin ang vit lm vic xung quanh mt li in thoi c th l mt dng m m khng thm mt tnh nng mi. Cc in thoi tng thch c, cc ng dng hn s c. Bng cch xy dng mt thit b Android tng thch hon ton, bn c hng li rt ln ca cc ng dng vit cho Android, trong khi khuyn khch cc nh pht trin xy dng hn trong cc ng dng. Kh nng tng thch Android l min ph, v rt d dng:

15

Nu bn ang xy dng mt thit b di ng, bn c th lm theo cc bc sau chc chn rng thit b ca bn tng thch vi Android. bit thm thng tin chi tit v chng trnh tng thch Android ni chung, xem tng quan v chng trnh. Xy dng mt thit b tng thch l mt qu trnh ba bc: M ngun phn mm Android. y l m ngun Android trn nn tng phn cng ca bn. Tun th Android Compatibility Definition Document (CDD). Cc CDD lit k cc yu cu phn mm v phn cng ca mt thit b Android tng thch. Thng qua cc Compatibility Test Suite (CTS). S dng CTS nh mt s tr gip lin tc tng thch trong qu trnh pht trin. Cng Android cho cc thit b: Android cung cp cho bn s t do trin khai k thut thit b ca ring bn v cc trnh iu khin h tr h. The Hardware Abstraction Layer (HAL) (HAL) cung cp cho bn mt cch tiu chun to ra phn mm gia cc nn tng Android ngn xp v phn cng ca bn. Ngoi ra, h iu hnh Android l m ngun m gip bn thng qua bringup thit b ca bn. m bo rng thit b ca bn duy tr mt mc cao v cht lng v cung cp mt tri nghim ph hp cho ngi dng ca bn, h phi cng phi vt qua cc bi kim tra trong cc b kim tra kh nng tng thch (CTS). CTS m bo rng bt c ai xy dng mt thit b p ng tiu chun cht lng m bo cc ng dng chy reliabaly tt v cung cp cho ngi dng mt tri nghim tt. bit thm thng tin, xem phn tng thch. Kin trc h thng Android Low-Level: Trc khi bn bt u chuyn mng Android phn cng ca bn, iu quan trng l phi c mt s hiu bit v cch hot ng Android mc cao. Bi v trnh iu khin ca bn v m HAL tng tc vi nhiu lp m Android, s hiu bit ny c th gip bn thng qua nhiu lp m c sn cho bn thng qua AOSP (Android Open Source Project) cy ngu n. S di y cho thy mt ci nhn cp h thng Android hot ng nh th no:

16

Kin trc h thng Adroid.

Application framework: y l mc m hu ht cc nh pht trin ng dng quan tm. Bn nn lu { ca cc API c sn cho cc nh pht trin n cc giao din HAL c bn v c th cung cp thng tin nh th no thc hin iu khin ca bn. Binder IPC:

17

The Binder Inter-Process Communication c ch truyn thng cho php cc ng dng khun kh vt qua ranh gii qu trnh v gi vo cc dch v h thng m Android. iu ny v c bn cho php cc API khun kh cp cao tng tc vi cc dch v h thng ca Android. cp ng dng khun kh, tt c cc thng tin lin lc ny c n t cc nh pht trin v nhng th xut hin "just work.". System services: Hu ht cc chc nng tip xc qua cc API ng dng khun kh phi giao tip vi mt s loi dch v h thng truy cp vo phn cng c bn. Dch v c chia thnh cc thnh phn m-un vi chc nng tp trung nh Window Manager, Search Service, or Notification Manager. Dch v h thng c chia thnh hai thng: h thng v phng tin truyn thng. H thng dch v bao gm nhng th nh Window or Notification Manager. Cc dch v phng tin truyn thng bao gm tt c cc dch v lin quan n chi v ghi li phng tin truyn thng.

Hardware abstraction layer (HAL): HAL phc v nh l mt giao din tiu chun cho php h thng Android gi vo cc lp iu khin thit b trong khi bt kh tri v vic trin khai cp di ca trnh iu khin v phn cng ca bn. Bn phi thc hin HAL tng ng (v trnh iu khin) cho on c th ca phn cng sn phm ca bn cung cp. Android khng u quyn mt s tng tc gia cc tiu chun thc hin HAL ca bn v trnh iu khin thit b ca bn, v vy bn c t do lm nhng g l tt nht cho tnh hung ca bn. Tuy nhin, bn phi tun theo quy nh ti mi giao din HAL phn cng c th cho h thng Android c th tng tc mt cch chnh xc vi phn cng ca bn. Trin khai HAL thng c xy dng trong cc m-un th vin chia s (. tp tin). Linux Kernel: i vi hu ht cc phn, ang pht trin trnh iu khin thit b ca bn cng ging nh pht trin mt trnh iu khin thit b in hnh Linux. Android s dng mt phin bn c bit ca Linux kernel vi mt s b sung c bit nh wakelocks, mt h thng qun l b nh l mnh m hn trong vic gi gn b nh, Binder IPC driver, v cc tnh nng khc rt quan trng cho mt nn tng di ng nh Android. Nhng b sung c t lin quan lm vi s pht trin trnh iu khin hn vi chc nng ca h thng. Bn c th s dng bt kz phin bn kernel m bn mun min l n h tr cc tnh nng cn thit. Tuy nhin, chng ti khuyn bn nn s dng phin bn mi nht ca Android kernel.

18

Xy dng ph kin cho Android: Xy dng bt buc ph kin USB v Bluetooth m rng kh nng h tr cc thit b Android ca ngi dng. Ph kin m thanh: Android 4.1 v cao hn h tr cho u ra m thanh qua kt ni USB hoc Bluetooth. Ph kin ty chnh: Ph kin cho Android tt c u c mt im chung, tt c cc kt ni vi thit b Android. Khi bt u xy dng mt ph kin, bn nn quyt nh nh th no ph kin ca bn s kt ni vi cc thit b Android.

19

3. Fragment l g ?
Fragment c th xem nh l 1 hoc nhu giao din (sub activity), c vng i ca n, v thng nm trong 1 mn hnh cng lc. Khi no nn s dng Fragment ? Khi mnh pht trin ng dng c layout khc nhau ch Portrait v Landscape Khi bn mun ng dng ca mnh h tr nhiu loi mn hnh to nh khc nhau (tablet c mn hnh to hn in thoi nhu)

1/nh ngha: Fragment l mt i tng c nhng vo Activity, chng ta c th xem Fragment nh l mt hoc nhiu giao din (sub Activity) c lifecycle ring v thng nm cng mt mn hnh. Fragment c thm vo t API level 11 o C cc loi Fragment sau: ListFragment DialogFragment WebViewFragment PreferenceFragment Mun dng c Fragment th u tin bn phi khai bo mt i tng dng qun l Fragment l FragmentManger. C php: y c 2 trng hp nu s dng t API level 11 tr ln th nh sau: FragmentManager manger= getFragmentManager(); Cn dng trong cc API thp hn th: FragmentManager manger= getSupportFragmentmanger(); Sau chng ta cn to ra mt i tng qun l vic thm, xa, sa or thay th Fragment l FragmentTransaction. C php: FragmentTransaction transaction= manager.beginTransaction(); Sau y l mt s method thng dng vi Fragment: Thm fragment: add(intcontainerViewId, Fragment fragment, String tag) Xa fragment: remove(Fragment fragment) Thayth fragment: replace(intcontainerViewId, Fragment fragment, String tag) Ktthc transaction: commit() c bit lu method commit() lun lun phi c sau khi bn dng cc method trn, v lun lun t n cui cng.

20

3.2. Lm vic vi Fragment Bc 1: Ci t th vin android support (android-support-v4.jar) t Android SDK Manager, add vo th mc libs Bc 2: To 1 project t tn l VN. Trong phn layout ngoi activity_main t sinh ra th ta to thm 3 fragment na, t tn ln lt n l: fragment_01, fragment_02, start_fragment v trong phn src th ngoi MainActivity th ta to thm 3 class na t tn l Fragment01, Fragment02, StartFragment

21

Ni dung trong activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context="com.example.vn.MainActivity" tools:ignore="MergeRootFrame" > <LinearLayout android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btnStartFragment" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="ChonFragment1" android:text="Start Fragment" /> <Button android:id="@+id/btnFragment01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="ChonFragment1" android:text="Fragment 01" /> <Button android:id="@+id/btnFragment02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="ChonFragment1" android:text="Fragment 02" /> </LinearLayout> <LinearLayout android:id="@+id/fragment_placeholder" android:layout_weight="3" android:layout_width="0dp"
22

android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> </LinearLayout>

Ni dung trong fragment_01.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="day la Fragment 01" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> Ni dung trong fragment_02.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.widget.TextView android:id="@+id/fragment_placeholder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="day la Fragment 02"
23

android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> Ni dung trong start_fragment.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.widget.TextView android:id="@+id/btnStartFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="day la Start Fragment" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>

Bc 3: Trong phn src ti MainActivity.java - to 1 fragment, bn phi k tha lp Fragment. - Lu khi to Fragement, bn phi override li hm onCreateView(). Ni dung : package com.example.vn; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.View; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

24

// dng trong cc API thp hn FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); StartFragment startFragment = new StartFragment(); transaction.add(R.id.fragment_placeholder, startFragment); transaction.commit(); //do s dng thm sa xa thay th th .commit } public void ChonFragment1(View view) { Fragment newFragment; if(view == findViewById(R.id.btnStartFragment)) { newFragment = new StartFragment(); } else if(view == findViewById(R.id.btnFragment01)) { newFragment = new Fragment01(); } else if(view == findViewById(R.id.btnFragment02)) { newFragment = new Fragment02(); } else { newFragment = new StartFragment(); } //to ra mt i tng qun l vic thm, xa, sa or thay th Fragment l FragmentTransaction FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_placeholder, newFragment); transaction.addToBackStack(null);//mun tt c Fragment u c a vo stack transaction.commit(); } } Ni dung Fragment01.java package com.example.vn; import android.os.Bundle;
25

import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment01 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_01,container, false); } } Ni dung Fragment02.java package com.example.vn; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment02 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_02,container, false); } } Ni dung StartFragment package com.example.vn; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class StartFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return
26

inflater.inflate(R.layout.stadrt_fragment,container, false); } } 4. ViewPager l g? - ViewPager l mt i tng kh ging nh Slide trnh din ca MS PowerPoint. - ViewPager c th trt chuyn i gia cc giao din mt cch nh nhng v kh mt, thay v chuyn i mn hnh qua mt s kin chp en nh trn tivi. Mn hnh hin th trc n hoc sau n s c hin th ra ngay tc th lin vi n. - ViewPager h tr t Android API 13 tr ln. 4.1 cc bc thc hin Bc 1 : To 1 project t tn l PAGER1 v to 4 file xml nm trong Layout ln lt l : fragment1_layout, fragment2_layout, fragment3_layout, viewpager_layout. Ni dung trong fragment1_layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FF0000" android:orientation="vertical" > </LinearLayout>

Ni dung trong fragment2_layout:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#00FF00" android:orientation="vertical" > </LinearLayout>

Ni dung trong fragment3_layout:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#0000FF" android:orientation="vertical" > </LinearLayout>

Trong 3 fragment trn s dng thuc tnh background cho tng fragment phn bit khi chy demo.

27

Ni dung trong viewpager_layout:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > //khai bo i tng ViewPager (lu iu khin ny c xy dng trong gi //android.support.v4.view do ta khng th ko th t giao din m phi chnh sa trong //code xml) <android.support.v4.view.ViewPager android:id="@+android:id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>

Bc 2: Ln lt to 3 class trong src, t tn ln lt l Fragment1, Fragment2, Fragment3

28

You might also like