Microsoft Word - custom_component_trong_android.docx

Tài liệu tương tự
Microsoft Word - edittext_trong_android.docx

Microsoft Word - custom_font_trong_android.docx

Microsoft Word - auto_complete_trong_android.docx

Microsoft Word - mot_so_ung_dung_android_co_ban.docx

Microsoft Word - fragment_transition_trong_android.docx

Microsoft Word - audio_capture_trong_android.docx

Microsoft Word - tao_ung_dung_hello_world_trong_android.docx

Microsoft Word - alert_dialog_trong_android.docx

Microsoft Word - single_fragment_trong_android.docx

Microsoft Word - bluetooth_trong_android.docx

Microsoft Word - grid_view_trong_android.docx

Microsoft Word - cai_dat_android_studio.docx

Microsoft Word - activity_trong_android.docx

Microsoft Word - resource_trong_android.docx

Microsoft Word - google_map_trong_android.docx

Trường Đại học Công nghiệp TpHCM - Thiết kế giao diện - Xử lý sự kiện - Thao tác với menu - Làm việc với Intent - Làm việc với Dialog - Đa ngôn ngữ Bà

CÀI ĐẶ T ANDROID TRÊN NETBEAN Yêu cầ u:trong quá trình cài đặ t phả i kế t nố i mạ ng,và phiên bả n này đượ c cài trên windows. 1.Download Netbean(6.7

Kế thừa

Microsoft Word - content_provider_trong_android.docx

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG ISO 9001:2015 ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN Sinh

Nhúng mã-cách khai báo biến Nhúng mã-cách khai báo biến Bởi: Khoa CNTT ĐHSP KT Hưng Yên Nhúng mã javascript trong trang HTML Bạn có thể nhúng JavaScri

Những cơ sở của ngôn ngữ C# Những cơ sở của ngôn ngữ C# Bởi: phamvanviet truonglapvy Trong chương này sẽ trình bày về hệ thống kiểu trong C#; phân biệ

Microsoft Word - jsp_syntax.docx

Lập trình và ngôn ngữ lập trình

Tìm hiểu ngôn ngữ lập trình Visual Basic Tìm hiểu ngôn ngữ lập trình Visual Basic Bởi: Khuyet Danh Tìm hiểu ngôn ngữ lập trình Visual Basic Tổng quan

PowerPoint Presentation

Thực hành trên Rose Thực hành trên Rose Bởi: Đoàn Văn Ban Xây dựng biểu đồ thành phần + Tạo lập mới hoặc mở một biểu đồ thành phần đã được tạo lập trư

Microsoft Word - TN216.doc

Microsoft Word - action_trong_jsp.docx

Slide 1


Java cơ bản

Microsoft Word - fragment_trong_android.docx

Microsoft Word - status_code_trong_servlet.docx

Câu lệnh (statement) Câu lệnh (statement) Bởi: Khuyet Danh Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh. Chương trình bao gồm nhiều câu

Chương trình dịch

1

Copyright vietjack.com Nạp chồng toán tử trong C# Operator Overloading là Nạp chồng toán tử. Bạn có thể tái định

Microsoft Word - server_response_trong_servlet.docx

Xử lý ngoại lệ

NGÔN NGƯ LÂ P TRIǸH Biên tập bởi: nguyenvanlinh

Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư v

ĐỀ THI GIỮA KỲ MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đề số 1. Thời gian 120 phút (Sinh viên KHÔNG được sử dụng tài liệu hay máy tính ) Xây dựng lớp STRING và

Microsoft Word - client_request_trong_servlet.docx

Lớp và đối tượng-các hàm và các lớp friend Lớp và đối tượng-các hàm và các lớp friend Bởi: Thanh Hiền Vũ CÁC HÀM VÀ CÁC LỚP friend Một hàm friend của

Copyright vietjack.com Chuỗi (String) trong C# Trong C#, bạn có thể sử dụng các chuỗi (string) như là mảng các ký

Microsoft Word - xu_ly_cookie_trong_servlet.docx

Microsoft Word - Bai 7.1.docx

NGÔN NGỮ THỐNG KÊ R

TRƯỜnG ĐẠI HỌC BÁCH KHOA HÀ nội VIỆn CÔnG nghệ THÔnG TIn VÀ TRUYỀn THÔnG TIN HỌC ĐẠI CƯƠNG Bài 10. Các cấu trúc lập trình trong C Nội dung 1. Cấu trúc

Kế thừa và đa hình

1 Tạo slide trình diễn với Microsoft Powerpoint Tạo slide trình diễn với Microsoft Powerpoint Người thực hiện Hoàng Anh Tú Phạm Minh Tú Nội dung 1 Mục

Các cấu trúc logic trong lập trình 1 Cấu trúc tuần tự (Sequence) 1.1 Những câu lệnh phải được sắp xếp theo thứ tự Một số hướng dẫn cho việc tổ chức câ

Trường ĐHBK Hà Nội Khoa Điện Bộ môn Điều khiển Tự động Tài liệu hướng dẫn thực hành: KĨ THUẬT LẬP TRÌNH C/C++ Bài 1: Lập trình cơ sở 1 Mục đích bài th

Animation, Modules 6 - Hoạt hình, tách file

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 5. Kiểu dữ liệu và biểu thức trong C Nội dung 1. Các ki

Microsoft Word - jsp_exception_handling.docx

Các câu hỏi nhỏ về visual basic Các câu hỏi nhỏ về visual basic Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các câu hỏi nhỏ về visual basic Sau đây là một số câu

Trường ĐH Khoa Học Tự Nhiên Tp. Hồ Chí Minh TRUNG TÂM TIN HỌC Lập trình Android Bài 2. Các thành phần ứng dụng Ngành Mạng & Thiết bị di động 2014

TIN HỌC ĐẠI CƯƠNG Bài 6. Phần mềm trình chiếu Bùi Trọng Tùng, SoICT, HUST 1 Nội dung 1. Giới thiệu chung về Microsoft Powerpoint 2. Một số quy tắc soạ

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

Hàm và lớp template trong Lập trình hướng đối tượng Hàm và lớp template trong Lập trình hướng đối tượng Bởi: unknown Trong phần này, chúng ta tìm hiểu

Microsoft Word - thuoc_tinh_trong_jquery.docx

Microsoft Word - kieu_du_lieu_trong_jdbc.docx

Microsoft Word - session_tracking_trong_servlet.docx

Cách viết một ứng dụng trên microsoft windows Cách viết một ứng dụng trên microsoft windows Bởi: Khuyet Danh CÁCH VIẾT MỘT ỨNG DỤNG TRÊN MICROSOFT WIN

Array, Indexer và Collection Array, Indexer và Collection Bởi: phamvanviet truonglapvy Mảng (Array) Mảng là một tập hợp các phần tử có cùng kiểu, được

27_7193.pdf

Lập trình cấu trúc trong Visual Basic Lập trình cấu trúc trong Visual Basic Bởi: Nguyễn Sơn Học xong chương này, sinh viên phải nắm bắt được các vấn đ

Moduel 7:Trinh chiếu bài thuyết trình 163 Moduel 7: rình chiếu bài thuyết trình 7.1. rình chiếu bài thuyết trình Thiết lập các tùy ch n cho chế độ Sli

Bài tập thực hành Chuyên đề 1 CNPM - Java Khoa CNTT- Trường ĐH Công nghệ TP.HCM Lab 01: LẬP TRÌNH JAVA CƠ BẢN VỚI NET BEANS A. MỤC TIÊU: Hướng dẫn tải

Microsoft Word - Huong dan su dung Mailchimp.docx

Microsoft Word - co_ban_ve_jquery.docx

PowerPoint Presentation

Lớp đối tượng trong.net Framework Lớp đối tượng trong.net Framework Bởi: Khuyet Danh Trong chương này chúng ta sẽ tìm hiểu các lớp cơ sở mà.net cung c

sdfsdfsdfsfsdfd

Microsoft Word - 09-TRAN CAO DE(56-63)

Bài tập thực hành NNLT Visual Basic GV. Nguyễn Thị Hải Bình BÀI THỰC HÀNH ÔN TẬP 1. Sinh viên ĐỌC CẨN THẨN TẤT CẢ NỘI DUNG trong bài thực hành trước k

Microsoft Word - danh-sach-lien-ket-doi-trong-c.docx

Công nghệ Hibernate Công nghệ Hibernate Bởi: Khoa CNTT ĐHSP KT Hưng Yên Giới thiệu Trước khi tìm hiểu Hibernate là gì, chúng ta cần chuẩn bị một số ki

Microsoft Word - form_trong_html.docx

Chương trình dịch

Template and Exception Template and Exception Bởi: Thanh Hiền Vũ TEMPLATE Trong phần này, chúng ta tìm hiểu về một trong các đặc tính còn lại của C++,

Chương 1:

asqw

Chương trình dịch

Microsoft Word - Lab09 - WebSieuthisach.doc

Microsoft Word - LedCenterM_HDSD.doc

PHẦN LÝ THUYẾT Câu 1 : Trong Windows Explorer để đánh dấu chọn tất cả các đối tượng ta sử dụng? a. ấn Alt + Click chuột c. Tổ hợp phím Ctrl + A b. Ấn

Stored Procedures Stored Procedures Bởi: Khoa CNTT ĐHSP KT Hưng Yên Trong những bài học trước đây khi dùng Query Analyzer chúng ta có thể đặt tên và s

BÀI 16: ĐỊNH DẠNG VĂN BẢN Khái niệm định dạng văn bản: Định dạng văn bản là trình bày các phần văn bản nhằm mục đích cho văn bản rõ ràng và đẹp, nhấn

26 Khoa hoïc Coâng ngheä LẬP TRÌNH PHÂN TÁN DÙNG CÔNG NGHỆ MOBILE AGENT VỚI SỰ HỖ TRỢ CỦA JAVA VÀ VOYAGER Tóm tắt ThS. Nguyễn Khắc Quốc * Lập trình ph

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI LILIN DVR 708/716/ Cấu tạo đầu ghi 1.1 Đầu ghi DVR 816 Mặt trước: Stt Tên Chức năng 1 Phím sang trái Di chuyển sang tr

Microsoft Word - emulator_trong_android.docx

Các biến và các kiểu dữ liệu trong JavaScript Các biến và các kiểu dữ liệu trong JavaScript Bởi: Hà Nội Aptech Các biến (Variables) Biến là một tham c

GIÁO TRÌNH Microsoft Word 2013

Bản ghi:

Custom Component trong Android Triển khai các thành phần riêng trong các thành phần đã xây dựng sẵn (pre-built) và kế thừa từ lớp con bằng lớp đã được định nghĩa riêng. Android cung cấp các widget đã xây dựng sẵn như Button, TextView, EditText, ListView, CheckBox, RadioButton, Gallery, Spinner, AutoCompleteTextView để bạn có thể sử dụng trực tiếp trong ứng dụng Android. Nhưng có một tình huống là khi bạn không thấy hài lòng với các tính năng đang tồn tại của bất cữ widget có sẵn nào, thì Android cung cấp cho bạn các phương thức để tạo riêng cho bạn các Custom Component (Custom Component) để bạn có thể tùy chỉnh cho phù hợp với yêu cầu của bạn. Nếu bạn chỉ cần tạo các điều chỉnh nhỏ tới widget hoặc layout đang tồn tại, thì bạn có thể sử dụng lớp con của widget hoặc layout đó và ghi đè các phương thức của chúng. Chương này giải thích cho bạn cách tạo Custom View và sử dụng chúng trong ứng dụng theo các bước đơn giản.

VÍ DỤ CUSTOM COMPONENT TRONG CẤU TRÚC CUSTOM VIEW Tạo một Custom Component đơn giản Tạo attribute file với tên attrs.xml trong thư mục res/values. <?xml version="1.0" encoding="utf-8"?> <resources> name="options"> <attr name="titletext" format="string" <declare-styleable localization="suggested" /> <attr name="valuecolor" format="color" /> </declare-styleable> </resources> Thay đổi layout file được sử dụng bởi Activity thành như sau. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:custom="http://schemas.android.com/apk/res/com.vogella.android.view.compo undview" android:layout_width="match_parent" android:layout_height="match_parent" android:showdividers="middle" android:orientation="vertical" android:divider="?android:attr/listdivider" tools:context=".mainactivity" > <com.vogella.android.view.compoundview.coloroptionsview android:id="@+id/view1" android:layout_width="match_parent" android:layout_height="?android:attr/listpreferreditemheight" android:background="?android:selectableitembackground" android:onclick="onclicked" custom:titletext="background color" custom:valuecolor="@android:color/holo_green_light"/> <com.vogella.android.view.compoundview.coloroptionsview android:id="@+id/view2" android:layout_width="match_parent" android:layout_height="?android:attr/listpreferreditemheight" android:background="?android:selectableitembackground" android:onclick="onclicked" custom:titletext="foreground color" custom:valuecolor="@android:color/holo_orange_dark"/> </LinearLayout> Tạo java file với tên ColorOptionsView. package com.vogella.android.customview.compoundview; import com.vogella.android.view.compoundview.r; import android.content.context; import android.content.res.typedarray; import android.util.attributeset; import android.view.gravity; import android.view.layoutinflater; import android.view.view; import android.widget.imageview; import android.widget.linearlayout; import android.widget.textview; public class ColorOptionsView extends LinearLayout { private View mvalue; private ImageView mimage; public ColorOptionsView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainstyledattributes(attrs,r.styleable.coloroptionsview, 0, 0); String titletext = a.getstring(r.styleable.coloroptionsview_titletext); int valuecolor =

a.getcolor(r.styleable.coloroptionsview_valuecolor,android.r.color.holo_blue_li ght); a.recycle(); setorientation(linearlayout.horizontal); setgravity(gravity.center_vertical); LayoutInflater inflater = (LayoutInflater) context.getsystemservice(context.layout_inflater_service); inflater.inflate(r.layout.view_color_options, this, true); TextView title = (TextView) getchildat(0); title.settext(titletext); mvalue = getchildat(1); mvalue.setbackgroundcolor(valuecolor); mimage = (ImageView) getchildat(2); } public ColorOptionsView(Context context) { this(context, null); } public void setvaluecolor(int color) { mvalue.setbackgroundcolor(color); } public void setimagevisible(boolean visible) { mimage.setvisibility(visible? View.VISIBLE : View.GONE); } } Sửa đổi Main activity và sau đó chạy ứng dụng. package com.vogella.android.customview.compoundview; import com.vogella.android.view.compoundview.r; import android.app.activity; import android.os.bundle; import android.view.menu; import android.view.view; import android.widget.toast; public class MainActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } @Override public boolean oncreateoptionsmenu(menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.activity_main, menu); return true; } public void onclicked(view view) { String text = view.getid() == R.id.view1? "Background" : "Foreground"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } } Ứng dụng đang chạy sẽ trông như sau:

Thuyết minh bởi sử dụng code bên trong lớp Activity Tương tự như cách khởi tạo Custom Component, cách mà bạn khởi tạo widget đã xây dựng sẵn trong lớp Activity của bạn. Ví dụ, bạn có thể sử dụng code sau để khởi tạo Custom Component đã được định nghĩa ở trên. @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); DateView dateview = new DateView(this); setcontentview(dateview); } Bạn theo dõi kỹ ví dụ trên để hiểu cách Thuyết minh một Custom Component bởi sử dụng code bên trong một Activity. Thuyết minh bởi sử dụng Layout XML file Theo cách truyền thống, bạn sử dụng Layout XML file để khởi tạo các widget xây dựng sẵn của bạn, và cách tương tự cũng sẽ áp dụng trên các custom widget để bạn có thể khởi tạo các Custom Component của mình bởi sử dụng Layout XML file như giải thích ở trên. Ở đây, com.example.compoundview là package mà bạn đã đặt tất cả code liên quan tới lớp DateView và DateView là một tên lớp Java mà bạn đặt toàn bộ Custom Component của mình ở trong đó. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".mainactivity" > <com.example.compoundview.dateview android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#fff" android:textsize="40sp" android:background="#000"/> </RelativeLayout> Ở đây, điều quan trọng để ghi nhớ là chúng ta đang sử dụng tất cả thuộc tính TextView cùng với Custom Component mà không có bất cứ thay đổi nào. Tương tự, bạn có thể sử dụng tất cả sự kiện và phương thức cùng với thành phần DateView đó. Custom Component với Custom Attribute trong Android Chúng ta đã thấy cách chúng ta kế thừa tính năng của các widget xây dựng sẵn, nhưng trong cả hai ví dụ đã cho ở trên, chúng ta thấy rằng các Custom Component có thể sử dụng tất cả thuộc tính mặc định của lớp cha. Nhưng giả sử khi bạn muốn tạo riêng thuộc tính cho

mình, thì ví dụ dưới đây là thủ tục đơn giản để tạo và sử dụng thuộc tính mới cho các Custom Component trong Android. Sau đây, chúng ta sẽ giới thiệu ba thuộc tính và sử dụng chúng như sau: <com.example.compoundview.dateview android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#fff" android:textsize="40sp" custom:delimiter="-" custom:fancytext="true"/> Bước 1 Bước này cho phép chúng ta sử dụng các thuộc tính tùy biến để định nghĩa chúng trong một xml file mới dưới res/values/ và gọi nó là attrs.xml. Bạn theo dõi ví dụ về attrs.xml sau: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="dateview"> <attr name="delimiter" format="string"/> <attr name="fancytext" format="boolean"/> </declare-styleable> </resources> Ở đây, name=value là những gì chúng ta muốn sử dụng trong Layout XML file như là thuộc tính, và format=type là kiểu thuộc tính. Bước 2 Bước này sẽ đọc các thuộc tính này từ Layout XML file và thiết lập chúng cho thành phần. Trình tự logic này tiếp tục cho các Constructor mà đã được truyền một AttributeSet, khi đó là nơi chứa các thuộc tính XML. Để đọc các giá trị trong XML, đầu tiên bạn tạo một TypedArray từ AttributeSet, sau đó sử dụng nó để đọc và thiết lập các giá trị như sau: TypedArray a = context.obtainstyledattributes(attrs, R.styleable.DateView); final int N = a.getindexcount(); for (int i = 0; i < N; ++i) { int attr = a.getindex(i); switch (attr) { case R.styleable.DateView_delimiter: String delimiter = a.getstring(attr); //...do something with delimiter... break; case R.styleable.DateView_fancyText: boolean fancytext = a.getboolean(attr, false); //...do something with fancytext... break; } } a.recycle(); Bước 3 Cuối cùng, bạn có thể sử dụng các thuộc tính đã định nghĩa của mình trong Layout XML file, như sau: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:custom="http://schemas.android.com/apk/res/com.example.compoundview"

android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".mainactivity" > <com.example.compoundview.dateview android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#fff" android:textsize="40sp" custom:delimiter="-" custom:fancytext="true"/> </RelativeLayout> Phần quan trọng là:xmlns:custom="http://schemas.android.com/apk/res/com.example.compoundview". Ghi nhớ rằng http://schemas.android.com/apk/res/ sẽ vẫn duy trì như cũ, nhưng phần cuối cùng sẽ được thiết lập thành tên package và từ đó bạn có thể sử dụng bất cứ thứ gì đằng sau xmlns:. Trong ví dụ này, mình đã sử dụng custom, nhưng bạn có thể sử dụng bất cứ tên nào bạn thích.