220 likes | 394 Views
Thiết kế giao diện trên Android. MultiUni Trần Vũ Tất Bình. Tổng quan. Trong Android, dùng Activity để hiển thị màn hình .
E N D
Thiếtkếgiaodiệntrên Android MultiUni TrầnVũTấtBình
Tổngquan • Trong Android, dùng Activity đểhiểnthịmànhình. • Mỗi activity sẽchứacác View theodạngcấutrúccây, nghĩalàmột Layout gốcchứacác view/layout con bêntronghoặcchỉcó 1 view duynhất. (lưu ý Layout cũnglàmột view nhé) • Cóthểthiếtkếgiaodiệntrong code java hoặctrong file xml trongthưmục layout.
Layout mẫucủahelloworld <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent”> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=“@string/hello“ /> </LinearLayout>
Mộtsốthuộctínhcơbản • Layout_width, layout_height: chiềurộngcủa view (fill_parentlà to bằngkíchthướccủa layout chứa view này, wrap_contentlàvừađủnội dung cầnhiểnthịcủa view) • Orientation: vớiLinearLayout, việcsắpxếpcác view lànằmkềnhautheohàngnganghoặchàngdọc, takhaibáo orientation đểchọnsắptheokiểunào (horizontal/vertical)
Mộtsốthuộctínhcơbản • Gravity: thuộctínhnày qui địnhcác view nằmbêntrong layout sẽđặttheovịtrínào so với layout(trungtâm, trái , phải, trêndưới…) • Weight: đểcác view phanchiatỉlệdiệntíchhiểnthịtrênmànhình (tỉlệtínhtheo weight củatừng view trêntổngsố weight, các view kokhaibáo weight thìsẽxem qua width và height)
Vídụcơbản • Cácbạnvào link nàylấy code chovàoứngdụng, lưu ý đọcthêmcácdònggiảithíchtiếngAnhnhéhttp://developer.android.com/resources/tutorials/views/hello-linearlayout.html
GiaodiệnvớiLinearLayout • Giảsửbạncầnthiếtkếmộtmànhìnhnhưsau:
GiaodiệnvớiLinearLayout • VớiLinearLayout (LL), các view bêntrongnóđượcđặtkềnhautheohàngnganghoặchàngdọc (cầnlưu ý đặcđiểmnày) • Vớivídựvừarồi, tathấycáchphântíchnhưsau: • Nguyêntắcchủyếulàphânnhómcác View liêntiếpkềnhau (như 3 TextViewkềnhautheohàngdọchoặchàngngangtrongvídụtrên) vàotrongmột LL, phânrãtừlớnđếnnhỏ. • Nhưvậymànhìnhgồm 1 LL lớnbaobênngoài, nhìnthấybêntrongchiathanh 2 phầntrêndướirõràngvậythuộctínhcủa LL nàylàdạngdọc, sauđóchiađôiravàphântíchtiếp. • Phầnbêntrênlạichiathành 2 nữatheohàngngang làmột LL dạngngang, lạichiađôi:mộtbênlà 1 ImageView (vìchỉcó 1 view nênkocầnbỏvàotrong LL), mộtbênlạilà 1 LL chứa 3 TextViewtheohàngdọc. • Nửabêndướitathấyrõràngchứa 3 TextViewkềnhautheohàngngang chovào 1 LL dạngnganglàxong.
GiaodiệnvớiLinearLayout • Xemcây:
Thựchànhtạichỗ • Làmmột layout hiểnthịnhưtronghình: • Cácbướcnhưsau: • Phântíchthànhphần layout trêngiấy (thảoluận) • Phântíchđặcđiểmcác view • Add thêm resource ảnh • Thửtrướcvớivới tab layout (khi view file xml trong eclipse) • Đưavàothựcthitrênmáy, đánhgiá.
Mộtsốloại layout khác • FrameLayout: các view bêntrongđược qui địnhvịtríbằngkhoảngcách so vớibiêntráivàtrên so với layout, các view cóthểđèlênnhau. • RelativeLayout: các view đượcthiếtkếdựatrênquanhệgiứachúngvớinhauvàvới layout chứachúng. • AbsoluteLayout: dànhchobạnnàolàmnhiềuvới C#, nhưngkokhuyếnkhíchvới Android nhé. …
Lưu ý khithiếtkếgiaodiện • Hạnchếđộsaucủacây • Vớicác Layout phứctạp, đừngdùngRelativeLayout • Nênchènvàodữliệutạmđểxemtrước layout hiểnthịrasaobên tab layout (trong eclipse), nhưngxongrồithìnhớxóadữliệutạmđi. • FrameLayoutcóvấnđềvới background • Muốntìmthuộctínhgì, bấm “android:” rồiđợi suggestion sổraxem.
Code nhanhmộtsốvídụ • Thửcùngnhaungồi code nhanhnhé (khiđãhiểurồithìlàmsẽrấtnhanhthôi) http://developer.android.com/resources/tutorials/views/hello-formstuff.html http://developer.android.com/resources/tutorials/views/hello-webview.html
List • Rất hay dùngtrong Android. Đặcbiệtcácứngdụngcầnlưutrữvàhiểnthịnhiềudữliệu. • List làmộtdanhsáchcác view thôngthườngcócùngdạng layout đặtliềnnhau.
ApiDemos • MởứngdụngApiDemosđãcósẵn: • New android project Create project from existing source Browse mởthưmục SDK platforms android-1.6 samples ApiDemos OK Finish. • Mởthưmục project trong eclipse src mởcom.example.android.apis.view mở file List1.java
List1 • Trong code của List1, cácbạntáchbạchphầntạomớiArrayAdapterranhé ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings); setListAdapter(adapter); • Adapter dùngđểkếtnốidữliệucầnđưavào list với layout hiểnthịvàcungcấpchoListViewhiểnthị. • Saukhitạoxong adapter, truyềnvàocho list hiểnthị (dòng code bêndưới)
List1 • Vớiđoạntạomột adapter, taphântíchra: • this: context, lúcnàolàm view cũngcầnrồi • android.R.layout.simple_list_item_1: layout đểhiểnthịmỗi item trong list, ở đâychỉcómộtTextView • mStrings: mảngcácchuỗikítự, làdữliệucầnhiểnthị • Giảithíchđoạntạo adapter nhưsau: tạomột adapter mớivới context của activity hiệntại, dùng layout simple_list_item_1đểhiểnthịmỗi item trong list, dữliệuđưavàolấytừmảngcácchuỗimStrings
List1 • Tạomột project mới, copy code List1 bỏ qua, rồilàmthêmcácthaotácsau: • Tạo 1 file layout có 1 TextViewvà 1 ImageView • TrongTextViewthêmdòngnày android:id=“@+id/text” • Sửalạiđoạntạomới adapter chonódùngcái layout vừatạo. (tìmxemcócái constructor nàogiúpchỉchínhxácđếncáiTextViewtrong layout hay ko) Dạngnày: ArrayAdapter(Context context, intresource, inttextViewResourceId, T[] objects) • Chạyứngdụng
List1 • Giảithích: • Với code mẫu ban đầu, layout chỉcómột view duynhấtlàTextViewnênbạnkocầnkhaibáogìkhácngoài layout vàđưadữliệudạngmảng String vào, adapter sẽtựhiểuvàxửlý. • Vớiyêucầusaunày, layout củabạcónhiềuhơn 1 view, bạncầntruyềnthêm id củaTextViewvào (ở đâylàR.id.text) để adapter cóthểhiểubạnmuốndữliệucủabạnđượctruyềnvào view nàotrong layout.
List14 • Mở List14 ra, đọcvàchạythử.
Vớimụcđíchgiúpchocácbạnkhôngđếnthamdựlớpvẫncóthểhiểuđượcbàigiảngkỹcàngnêntrong slide sẽcónhiềuđoạnchúthíchhơidài.