- Khảo sát trải nghiệm của người dùng: + Giao diện ứng dụng được thiết kế tối giản, thân thiện và dễ sử dụng, có thể sử dụng chỉ với một vài thao tác đơn giản do đó phù hợp với mọi lứa t
Giới thiệu
- Sản phẩm: App đọc truyện tranh
- Nếu bạn là một đam mê manga, comic nhưng lại cảm thấy quá bất tiện khi phải mang theo quá nhiều sách đi khắp nơi thì không thể bỏ qua được những ứng dụng thần kì như ứng dụng của nhóm mình
- Với giao diện dễ nhìn và dễ sử dụng, ứng dụng này không chỉ là nơi để tận hưởng thế giới của những câu chuyện tranh hấp dẫn mà còn là điểm đến lý tưởng để khám phá và tìm kiếm những bộ truyện mới và phổ biến từ nhiều thể loại khác nhau.
Khảo sát
- Qua tìm hiểu ban đầu, nhận thấy đây là một sản phẩm không quá khó và nhóm bọn em có thể hoàn thành được
- Ý tưởng để thực hiện dự án xuất phát từ những ứng dụng ebook, truyện tranh hàng đầu hiện nay như Noveltoon, Weeboo, POPS,
- Khảo sát trải nghiệm của người dùng:
+ Giao diện ứng dụng được thiết kế tối giản, thân thiện và dễ sử dụng, có thể sử dụng chỉ với một vài thao tác đơn giản do đó phù hợp với mọi lứa tuổi
+ Có thể dễ dàng tìm kiếm và theo dõi các bộ truyện yêu thích
+ Sự đa dạng về thể loại truyện tranh bao gồm trinh thám, hài hước, phiêu lưu, và được cập nhật thường xuyên.
Các module chính
- Layout chứa các giao diện của ứng dụng XML là một ngôn ngữ đánh dấu linh hoạt, có thể mở rộng dễ dàng, dễ đọc và dễ hiểu XML được dùng để mô tả dữ liệu dưới dạng text do đó khá phù hợp cho việc thiết kế
- Ví dụ giao diện của một bộ truyện sẽ được thiết kế như sau: b database
- DatabaseAppDocTruyen được thiết kế để tương tác với cơ sở dữ liệu SQLite chứa thông tin về tài khoản và mật khẩu của người dùng
- DatabaseAppDocTruyen được kế thừa từ SQLiteOpenHelper hỗ trợ một số chức năng như: tạo bảng tài khoản và chèn dữ liệu mẫu, truy vấn dữ liệu từ bảng tài khoản, thêm một tài khoản mới vào cơ sở dữ liệu
- Hàm OnCreat() được gọi khi cơ sở dữ liệu được tạo, nó chứa các câu lệnh SQL để tạo bảng Hàm getData() truy vấn và trả về một đối tượng
‘Cursor’, là một con trỏ dữ liệu cho phép bạn duyệt qua hàng kết quả Hàm AddTaiKhoan() sử dụng getWritableDatabase() để có thể ghi vào cơ sở dữ liệu, ContentValues() để chứa các giá trị cần thêm vào bảng và gọi phương thức insert() để thêm dữ liệu vào bảng c model
- Class TaiKhoan được dùng để định nghĩa cách thức đăng nhập vào ứng dụng bao gồm tài khoản và mật khẩu Các phương thức get và set được dùng để thiết lập giá trị và thiết lập giá trị cho đối tượng trong trường hợp cần thiết d object
- 2 Class ChapTruyen và TruyenTranh được dùng để định nghĩa một bộ truyện và 1 chap(tập) truyện
- Class ChapTruyen và TruyenTranh cũng sẽ có những hàm get và set giống TaiKhoan Khác biệt ở chỗ chúng sẽ có thêm phương thức khởi tạo đối tượng từ một JSON, điều này giúp chuyển đổi dữ liệu từ định dạng JSON sang đối tượng Java Và tại sao lại là JSON, chúng em xin được giải thích ở những phần sau e adapter
- Class ChapTruyenAdapter và TruyenTranhAdapter kế thừa từ
ArrayAdapter được sử dụng để gắn kết dữ liệu danh sách chap truyện và danh sách truyện tranh theo layout đã được thiết kế sẵn bên trên vào một giao diện ListView hoặc GridView
- Adapter sẽ đóng vai trò như một ‘chiếc khuôn bánh’ và dữ liệu của chap truyện hoặc bộ truyện sẽ như ‘nguyên liệu’ thay vì phải thiết kế riêng từng layout cho từng truyện, chap truyện Ngoài ra Adapter còn đảm bảo dữ liệu được hiển thị đúng cách và được cập nhật nhanh chóng khi có thay đổi
- Ngoài ra trong class TruyenTranhAdapter còn có một phương thức sortTruyen(String s) Phương thức này chính là xương sống của thanh tìm kiếm sortTruyen được sử dụng để sắp xếp danh sách truyện theo tên truyện dựa trên chuỗi s được nhập vào, nếu truyện đó chứa chuỗi s thì nó sẽ được đẩy lên đầu danh sách f intefaces
- LayAnhVe, LayChapVe và LayTruyenVe là các interface được thiết kế để định nghĩa các phương thức mà một lớp khác cần triển khai
- Cả 3 interface đều chứa phương thức start() khi bắt đầu quá trình lấy dữ liệu, end() khi kết thúc quá trình lấy dữ liệu và fail() khi quá trình lấy dữ liệu gặp lỗi g api
- ApiLayAnh, ApiLayChap, ApiLayTruyen là các class được xây dựng nhằm thực hiện API call để lấy danh sách truyện tranh từ một nguồn dữ liệu và sau đó thông báo kết quả qua các interface tương ứng đã được liệt kê ở bên trên
- 3 class đều chứa phương thức doInBackground() sẽ được thực hiện trong background thread và được sử dụng để tương tác với API mà không đóng kết nối giao diện của người dùng Trong phương thức đó, chúng em sử dụng một thư viện mở rộng có tên OkHttp để gửi một yêu cầu HTTP đến URL được bọn em dựng sẵn để lấy dữ liệu từ nguồn cung cấp API
- Các class chỉ khác nhau về URL và inteface Các URL dẫn đến một trang web chứa dữ liệu JSON tương ứng với mỗi API Ví dụ với ApiLayTruyen JSON sẽ chứa nhiều đối tượng truyện tranh bao gồm các thuộc tính id, linkAvt, ten Chap và tenTruyen Chúng em quyết định sử dụng JSON bởi vì tính ngắn gọn, đơn giản và có thể dễ dàng đọc được, bất kể ngôn ngữ lập trình được sử dụng là gì, chúng vẫn có thể ánh xạ sang các miền đối tượng h activities
- Tất cả các class trên sẽ phụ trách tiếp nhận tương tác của người dùng và xử lý sự kiện
+ DangKy được kế thừa từ AppCompatACtivity:
Class DangKy sẽ làm việc với Database như chúng em đã trình bày ở phần b Nó bao gồm các phương thức:
CreateTaiKhoan() – tạo tài khoản checkAccountName() – kiểm tra xem tên tài khoản tồn tại hay chưa checkStrongPassWord() – kiểm tra mật khẩu đủ mạnh hay chưa confirmPassWord() – xác nhận mật khẩu
AnhXa() – ánh xạ các thành phần layout được thế kế trong xml ở phần a sang các biến trong mã nguồn Java onCreat() – thiết lập EventListener cho các Button Ngoài lời gọi đến những phương thức kiểm tra ở bên trên onCreat() còn có thêm chức năng hiển thị hoặc ẩn mật khẩu khi người dùng kích vào Button tương ứng
Kích để quay lại màn hình đăng nhập
+ DangNhap được kế thừa từ AppCompatActivity
Ngoài phương thức AnhXa() như trên, DangNhap chủ yếu được thiết kế để xử lý sự kiện khi người dùng tương tác
Bật/tắt hiển thị mật khẩu
Chuyển sang màn hình đăng kí
Xử lí sự kiện khi người dùng bấm vào nút đăng nhập, một vài sự kiện được thiết lập như: kiểm tra người dùng nhập đầy đủ thông tin hay chưa, kiểm tra tài khoản mật khẩu
Phương thức AnhXa() của DangNhap
Phương pháp - ngôn ngữ - công cụ
+ Lập trình hướng đối tượng
+ Thiết kế giao diện: XML
+ Một số thư viện mở rộng như: OkHttp, Glide,
+ SQLite: cơ sở dữ liệu.
Giới thiệu kết quả
- Màn hình đăng nhập/đăng kí: