LẬP TRÌNH DI ĐỘNG Bài 1 Nhập Môn Nội dung 1 Giới thiệu môn học 2 Công cụ học tập 3 Giới thiêu về ngôn ngữ java Ngôn ngữ lập trình Java Lập trình hướng đối tượng Công cụ phát triển Java Các loạ[.]
LẬP TRÌNH DI ĐỘNG Bài 1: Nhập Mơn Nội dung Giới thiệu môn học Công cụ học tập Giới thiêu ngôn ngữ java Ngơn ngữ lập trình Java Lập trình hướng đối tượng Công cụ phát triển Java Các loại chương trình Java “Hello, World!” – phiên Java Quá trình thực thi ứng dụng Java TRƯƠNG XUÂN NAM Phần Giới thiệu môn học TRƯƠNG XUÂN NAM Mơn học “lập trình di động” Tên mơn học xác phải “làm quen với lập trình cho thiết bị di động” Ta làm quen chút thơi, muốn lập trình thực cần học nhiều Nên có thiết bị android để thử Số tín chỉ: (3 lý thuyết) Tại khơng có thực hành? Vì lý thuyết nhiều, chí tín chưa đủ Giảng viên: Trương Xuân Nam, khoa CNTT Email: truongxuannam@gmail.com TRƯƠNG XUÂN NAM Tài liệu học tập Bài giảng môn học + demo + tài liệu đọc thêm Tài liệu tham khảo: Raymond Gallardo, Scott Hommel, Sowmya Kannan, Joni Gordon, Sharon Biocca Zakhour The Java Tutorial: A Short Course on the Basics, 6th edition Online version: https://docs.oracle.com/javase/tutorial/ Dave MacLean, Satya Komatineni, Grant Allen Pro Android Apress, 2015 Online: giảng, tài liệu đọc thêm, điểm số, thông báo,… đưa lên website http://txnam.net, mục BÀI GIẢNG TRƯƠNG XUÂN NAM Kiến thức yêu cầu / nên biết Kiến thức lập trình C/C++ Kiến thức lập trình hướng đối tượng (cơ bản) Kiến thức SQL (cơ bản) Kiến thức XML (cơ bản) Kiến thức kiến trúc máy tính (đặc biệt thiết bị di động) Kiến thức hệ điều hành Đã sử dụng thiết bị di động TRƯƠNG XUÂN NAM Đánh giá kết Điểm môn học = ĐQT x 40% + ĐTCK x 60% Điểm trình: Điểm danh Thảo luận Mini project Điểm thi cuối kỳ: Vấn đáp trắc nghiệm Không có giới hạn nội dung thi TRƯƠNG XUÂN NAM Học mơn có lợi gì? Có kiến thức lập trình cho thiết bị di động Có hiểu biết sâu sắc hoạt động thiết bị di động phần mềm thiết bị đó, khai thác tốt thiết bị Có khả viết chương trình đơn giản cho thiết bị di động Có thêm lựa chọn cho đề tài làm tốt nghiệp Có điểm mơn học trường TRƯƠNG XUÂN NAM Nội dung môn học (1/2) Cơ ngôn ngữ lập trình Java Một số chủ đề chọn lọc lập trình Java Giới thiệu lập trình di động Android Activity Layout điều khiển Xử lý kiện Tại phải học java? Lập trình android dùng java TRƯƠNG XUÂN NAM Nội dung môn học (2/2) Intent, Notification Menu Lưu trữ, SQLite content provider Dịch vụ Broadcast Receiver Xử lý đa luồng Khai thác dịch vụ di động mạng Các chủ đề nâng cao Tại chọn android? Dễ, thông dụng, thiết bị rẻ TRƯƠNG XUÂN NAM 10 Kinh nghiệm làm việc với sensor Nhất thiết phải giải phóng sensor khơng cần thiết, không ứng dụng hao pin Hệ thống không tự động tắt sensor kể tắt hình Chú ý làm việc với thơng số 3D: chiều bị hốn đổi vị trí người sử dụng đặt thiết bị theo chiều âm (ví dụ: máy bị lật úp) Nên kiểm thử thiết bị thật hiệu chỉnh độ nhạy Kết hợp nhiều sensor để thiết bị “nhạy cảm” TRƯƠNG XUÂN NAM 26 Kinh nghiệm làm việc với sensor TRƯƠNG XUÂN NAM 27 Phần 2.1 Giới thiệu animation TRƯƠNG XUÂN NAM 28 Animations – nguyên tắc Animation: tập hợp API cho phép biến đổi view thời gian ngắn (từ android 3.0) Tạo animation theo nhiều cách: Định nghĩa XML (folder “res/anim/”) nạp câu lệnh AnimationUtils.loadAnimation Tạo code: tạo biến đối tượng phù hợp Các animation ghép với thành để thực nhiều hiệu ứng (gọi AnimationSet) (advanced) Tự tạo animation: kế thừa Animation viết lại applyTransformation 29 Animations – nguyên tắc Các animation cung cấp Android AlphaAnimation: Thay đổi độ suốt đối tượng • Fade In / Fade Out • Blink RotateAnimation: Xoay đối tượng ScaleAnimation: Thay đổi kích thước • Zoom In / Zoom Out • Slide Up / Slide Down • Bounce TranslateAnimation: Dịch chuyển đối tượng Bằng cách điều chỉnh tham số ta tạo animation khác 30 Phần 2.2 Tạo animation XML Code TRƯƠNG XUÂN NAM 31 Animations – XML vs Code Ví dụ XML: res/animator/fadein.xml // nạp animation từ XML để sử dụng Animation ani = AnimationUtils.loadAnimation(this, R.animator.fadein); Ví dụ tạo animation code: Animation ani = new AlphaAnimation(1, 0); ani.setInterpolator(new AccelerateInterpolator()); ani.setDuration(1000); Sử dụng animation: myView.startAnimation(ani); 32 Animations – XML vs Code Một số thuộc tính quan trọng android:duration: thời gian chạy hiệu ứng (ms) android:startOffset: thời điểm bắt đầu chạy (ms) android:fillAfter: có giữ lại trạng thái sau hiệu ứng khơng (true/false) android:repeatCount: số lần lặp lại hiệu ứng android:repeatMode: chế độ lặp (RESTART | REVERSE) android:interpolator: kiểu diễn biến hiệu ứng • "@android:anim/accelerate_interpolator“ • “@android:anim/ accelerate_decelerate_interpolator” •… 33 Animations – XML vs Code Có thể xử lý kiện hiệu ứng bắt đầu, kết thúc lặp lại AnimationListener rotAni.setAnimationListener(new AnimationListener() { // kết thúc hiệu ứng public void onAnimationEnd(Animation arg0) { layerImage.setVisibility(View.INVISIBLE); layerButtons.setVisibility(View.VISIBLE); } // chuẩn bị lặp lại hiệu ứng public void onAnimationRepeat(Animation arg0) { } // bắt đầu hiệu ứng public void onAnimationStart(Animation arg0) { } }); 34 Animations – Interpolator Interpolator: trình điều khiển trình thực hiệu ứng Một số Interpolator thông dụng: AccelerateDecelerateInterpolator: chậm-nhanh-chậm AccelerateInterpolator: nhanh dần DecelerateInterpolator: chậm dần CycleInterpolator: lặp lại animation theo chu kì LinearInterpolator: tuyến tính, khơng đổi Có thể tự viết interpolator riêng muốn (phải tìm hiểu thêm Interpolator.Result) TRƯƠNG XUÂN NAM 35 Animations – set of animations 36 Animations – example public class MainActivity extends Activity { Animation x; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); x = AnimationUtils.loadAnimation(this, R.animator.abc); } public void btnAni(View v) { View t = findViewById(R.id.editText1); t.startAnimation(x); } } TRƯƠNG XUÂN NAM 37 Phần 2.3 Drawable animation TRƯƠNG XUÂN NAM 38 Drawable Animation kiểu animations Android: Property animation: gốc animation View animation: animation view sử dụng image Drawable animation: animation view sử dụng dãy image Drawable Animation: hoạt hình dãy ảnh TRƯƠNG XUÂN NAM 39 Drawable Animation: ví dụ AnimationDrawable rocketAnimation; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); } public boolean onTouchEvent(MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_DOWN) return super.onTouchEvent(event); rocketAnimation.start(); return true; } TRƯƠNG XUÂN NAM 40