Những điều bạn cần biết về: Android Studio 3.0, Android 8.1 Developer Preview


Cách đây không lâu, Android programmer vừa nhận được tin vui khi Google  công bố phiên bản mới nhất của IDE cho mobile, Android Studio 3.0, đồng thời preview Android 8.1 (Oreo).

Những tính năng trong Android Studio 3.0 cũng hỗ trợ cho Kotlin, ngôn ngữ lập trình khá hot gần đây do được phong cấp “hạng nhất” trong lập trình Android. Cũng trong phiên bản này, lần đầu tiên hỗ trợ Kotlin được tích hợp trong IDE.

Các lập trình viên giờ đây đã có thể dùng Kotlin thông qua built-in conversion tool (Vào menu: Code > Convert Java File to Kotlin File), bằng cách tạo một file mới (File > New > Kotlin File/Class) hoặc với option mới để tạo một Kotlin-enabled project trong New Project Wizard, vốn chỉ cần bạn đánh dấu vào “Include Kotlin support” checkbox.

Những việc làm hấp dẫn

  • (HCM) Android Developer | Attractive Salary at Spiraledge
    SpiraledgeHo Chi MinhNegotiable

  • (HN) | Mobile Developer (iOS & Android) | Attractive Salary at Add-on Development
    Add-on DevelopmentHa NoiNegotiable

  • (HCM) | Senior Android Developer | Attractive Salary at Simplypost
    SimplypostHo Chi MinhNegotiable

Kotlin cũng có thể add vào một project có sẵn, bạn có thể vào đây “Get Started with Kotlin on Android” đọc để biết thêm.

Android Studio 3.0 được trình làng với tính năng mới là profile apps nhằm theo dõi và xác định các vấn đề liên quan tới hiệu năng, bao gồm Android Profiler tool mới (thay thế cho Android Monitor tools).

Developer chỉ cần deploy một app – tới một thiết bị hoặc emulator – và click vào Android Profiler tab để xem các hoạt động của CPU, memory và network. Mỗi performance event đều được mapped đến timeline để thể hiện các events như touches và key presses nhằm cung cấp thêm nhiều thông tin và cho phép developer nghiên cứu sâu hơn.

Ngoài ra còn có nhiều tính năng mới được xuất hiện trong phiên bản này:

——————– Thông tin cho Dev ——————–

Java 8 Language features- Trong Android Studio 3.0, team vẫn tiếp tục cải thiện tính hỗ trợ cho tính năng ngôn ngữ cho Java 8. Với javac based toolchain, giờ đây sử dụng Java 8 trong project của bạn sẽ dễ dàng hơn rất nhiều. Để project của bạn có support Java 8 hãy vào update Source và Target compatibility level lên 1.8  trong Project Structure dialog.

Layout Editor – Component tree trong  Layout Editor sẽ drag-and-drop dễ dàng hơn cùng với error panel mới.

Adaptive Icon Wizard – Với wizard mới, nó sẽ tạo ra một set các auncher icon assets và cho bạn xem một preview về icon như thế nào với  launcher screen icon masks khác nhau. Hơn nữa các VectorDrawable layers cũng được hỗ trợ.

XML Fonts & Downloadable Fonts – nếu bạn nhắm tới Android Oreo (API Level 26 và cao hơn) cho Android app thì giờ đã có thể add custom fonts & downloadable fonts sử dụng XML với Android Studio 3.0.

Android Things Support – Android Studio 3.0 còn kèm theo một set mới các templates trong New Project wizard  và New Module wizard.

IntelliJ Platform Update — Android Studio 3.0 tích hợp cả IntelliJ 2017.1, bao gồm những tính năng như Java 8 language refactoring, parameter hints, semantic highlighting, breakpoints kéo-rê được, phiên bản nâng cấp của control search, và nhiều nữa.

Android product manager Jamal Eason cũng cho biết wizard sẽ giúp developer với Android Oreo APIs. Nhờ đó mà phát triển apps với Oreo features (như Instant AppsXML Fontsdownloadable fonts, và adaptive icons) sẽ dễ dàng hơn.

Ngoài ra, Android Oreo cũng sẽ có iteration mới trong dưới dạng 8.1 developer preview.

Những tính năng của nó bao gồm tối ưu hóa cho Android Go, một phiên bản dành cho các mobile ở phân khúc lower-end với bộ nhớ thấp hơn 1GB.

Mặt khác, ngôn ngữ còn tích hợp cả Neural Networks API  mới cho phép developer cài đặt và phát triển AI trên một thiết bị mobile.

SharedMemory API cũng là một tính năng mới, cho phép creation, mapping và protection control với những shared memory ẩn danh. Bằng cách cho phép apps sắp xếp và phân chia shared memory, ta có thể truy cập nhanh hơn vào data. API được team cho biết là rất dễ sử dụng với Android Interface Definition Language (AIDL) cũng như có nhiều tính năng rất tiện lợi như xóa quyền ghi.

Các tính năng khác bao gồm cải thiện autofill — cung cấp chức năng của Autofill framework cho đến password manager và những dịch vụ khác — kể cả khả năng tinh chỉnh UI của Save dialog.

Đi kèm với Android Studio 3.0, hãng cũng khuyến khích developer update lên Android Support Library 27.0.0, bạn có thể kiếm nó trong Google’s Maven repository.

Advertisements

20 Open-Source Android tuyệt vời giúp bạn code tốt hơn (p2)


11. AnotherMonitor

(Github | Play Store | Difficulty: Intermediate)

Nếu bạn đang tìm kiếm để tìm hiểu về việc theo dõi các quy trình Android, sử dụng bộ nhớ, sử dụng CPU và các công cụ liên quan đến những điều này, thì đây là dự án hoàn hảo để bắt đầu.

12. InstaMaterial

(Github | Difficulty: Beginner)

Nếu bạn đang tìm kiếm một dự án để học hoặc phát triển kỹ năng Thiết kế Material của bạn, thì dự án này là dành cho bạn.

13. CoCoin

(Github | Difficulty: Easy)

CoCoin là một giải pháp tài chính và kế toán cá nhân trọn vẹn có tính năng ,giao diện đẹp.

14. OmniNotes

(Github | Play Store | Difficulty: Intermediate)

Nếu bạn đang tìm kiếm để xây dựng một ứng dụng Android ghi chú đầy đủ tính năng như Evernote, thì đây chỉ là dự án phù hợp để bạn bắt đầu.

15. Clip Stack

(Github | Play Store | Difficulty: Beginner)

Một ứng dụng quản lý clipboard đơn giản, sạch sẽ và đẹp cho Android. Dự án khá nhỏ, đơn giản và dễ hiểu.

16.Super Clean Master

(Github | Difficulty: Advanced)

17.Travel Mate

(Github | Difficulty: Intermediate)

Nếu bạn đang tìm kiếm để xây dựng một ứng dụng  du lịch và cần phải dựa nhiều vào vị trí và bản đồ, thì dự án này có lẽ là nơi tốt nhất để bắt đầu.

18. KISS

(Github | Play Store | Difficulty: Intermediate)

Ứng dụng trình đơn đơn giản, siêu nhanh và nhẹ dành cho Android.

19. Turbo Editor

(Github | Play Store | Difficulty: Intermediate)

Một ứng dụng soạn thảo văn bản đơn giản nhưng mạnh mẽ cho Android. Bạn cũng có thể sử dụng trình soạn thảo này để viết mã và nó cũng hỗ trợ tô màu cú pháp cho các ngôn ngữ lập trình khác nhau.

20 Open-Source Android tuyệt vời giúp bạn code tốt hơn (p1)


Cách tốt nhất để học là đọc và đó cũng đúng đối với các developer. Nếu bạn muốn trở thành một developer tốt hơn, bạn phải đọc nhiều mã hơn. Nó đơn giản như vậy.

Sách, blog, diễn đàn đều tốt đến một mức độ nhất định, nhưng không có gì có thể thay thế một số dự án mã nguồn mở đầy đủ chức năng,  nơi toàn bộ ứng dụng với tất cả các tài nguyên của nó là ngay trước mặt bạn.

All you have to do is sit back, take a cup of coffee and read some kick-ass code.

Ở đây trong bài viết này, chúng tôi mang đến một số ứng dụng Android nguồn mở tốt nhất với ​​nhiều thể loạkhác nhau để đáp ứng mọi nhu cầu học tập và phát triển của bạn.

Bạn có thể thử các ứng dụng này trực tiếp trên PlayStore để có trải nghiệm thực ,trước khi  đi sâu vào mã nguồn.

1. LeafPic

(Github | Play Store | Difficulty: Beginner)

Ứng dụng Photo and video là một trong những ứng dụng phổ biến nhất mà bạn có thể tìm thấy trên bất kỳ thiết bị Android nào. Có bao giờ tự hỏi làm thế nào họ được thực hiện? LeafPic là một trong những ứng dụng thư viện với mã nguồn mở tốt nhất mà bạn có thể dùng thử.

Nó là khá đơn giản, dễ hiểu và là hoàn toàn phù hợp với bất kỳ nhà phát triển mới bắt đầu. Một trong những điều tốt nhất tôi đã tìm thấy trong ứng dụng này là cách họ đã triển khai. Đó là điều mà nhiều nhà phát triển Android đã phải vật lộn để thực hiện đúng.

2. Simple Calendar

(Github | Play Store | Difficulty: Beginner)

Một ứng dụng lịch đơn giản và dễ sử dụng được xây dựng hoàn toàn bằng Kotlin. Nếu bạn đang tìm kiếm để tìm hiểu Kotlin, thì đây có lẽ là một trong những cách tốt nhất để bắt đầu.

3. Amaze File Manager

(Github | Play Store | Difficulty: Intermediate)

4. Easy Sound Recorder

(Github | Play Store | Difficulty: Beginner)

Một ứng dụng ghi âm thanh đơn giản, dễ sử dụng và đẹp cho Android

5. MLManager

(Github | Play Store | Difficulty: Beginner)

MLManager là trình quản lý ứng dụng đơn giản và trực tiếp cho thiết bị Android của bạn. Dự án lý tưởng nếu bạn muốn tìm hiểu cách lấy thông tin chi tiết về các ứng dụng đã cài đặt trên thiết bị của bạn, trích xuất APK từ các ứng dụng đó, gỡ cài đặt ứng dụng và nhiều hơn nữa.

6. PhotoAffix

(Github | Play Store| Difficulty: Beginner)

It is ideal for any beginner Android developer willing to learn the basics of Android development

7. MovieGuide

(Github | Difficulty: Intermediate)

The app showcases some really cool development stuffs like MVP, Uncle Bob’s Clean Architecture, gives the sweet taste of RxJava and dependency injection using Dagger 2.

8. AnExplorer

(Github | | Play Store | Difficulty: Intermediate)

Một trình quản lý tệp đơn giản, nhẹ và tối giản được thiết kế cho cả điện thoại và máy tính bảng.

9. Minimal ToDo

(Github | Play Store | Difficulty: Beginner)

Nếu bạn là người mới bắt đầu, đây là một dự án rất đơn giản nhưng tốt để bạn bắt đầu. Bạn sẽ có cơ hội để tìm hiểu hầu hết các khía cạnh cơ bản và cơ bản của phát triển Android.

10. Timber

(Github | Play Store | Difficulty: Advanced)

Timber là một trình nghe nhạc được thiết kế đẹp mắt,và đầy đủ tính năng cho Android

[Must Have Libraries] Các thư viện cần thiết trong lập trình android


GIỚI THIỆU

Có rất nhiều thư viện của bên thứ ba cho Android có những thư viện cực kỳ phổ biến và thường được sử dụng trong hầu hết các dự án Android. Mỗi thư viện đều có những mục đích khác nhau nhưng tất cả chúng đều làm cho công việc lập trình trở nên dễ chịu hơn. Các thư viện chính được liệt kê dưới đây.

TIÊU CHUẨN

Các thư viện được liệt kê dưới đây là các thư viện khá phổ biến, áp dụng rộng rãi và có lẽ nên được thiết lập trong hầu hết các ứng dụng Android:

Name Description
Retrofit A type-safe REST client for Android which intelligently maps an API into a client interface using annotations.
Glide A powerful image downloading and caching library for Android.
ButterKnife Using Java annotations, makes Android development better by simplifying common tasks.
Parceler Android Parcelable made easy through code generation
IcePick Android Instance State made easy
LeakCanary Catch memory leaks in your apps
Espresso Powerful DSL for Android integration testing
Robolectric Efficient unit testing for Android

 

NÂNG CAO

Các thư viện được liệt kê dưới đây là các thư viện bổ sung được sử dụng nhiều hơn nhưng phổ biến trong số các nhóm Android có kinh nghiệm. Lưu ý rằng các thư viện này có thể không phù hợp với ứng dụng đầu tiên của bạn. Những thư viện tiên tiến này bao gồm:

Name Description
Dagger 2 A fast dependency injector for managing objects.
RxJava Develop fully reactive components for Android.
EventBus Android event bus for easier component communication.
AndroidAnnotations Powerful annotations to reduce boilerplate code.
Retrolambda Bringing lambda block support to Android.

MÌNH ĐỂ NGUYÊN GỐC CHO MỌI NGƯỜI DỄ HIỂU, CHỨ MÌNH DỊCH GOOGLE MỆT LẮM  =)))

Keep in mind that the combination of these libraries may not always play nicely with each other. The following section highlights some of these issues.

Parceler and IcePick

Note that you cannot use IcePick at the current time to save state of Parceler objects. See this GitHub issue for more context on why they are incompatible. You will need to use explicitly Parcelable objects with IcePick. You may consider replacing Parceler with AutoParcel which works seamlessly with IcePick.

ButterKnife and Parceler

Using the Butterknife library with the Parceler library causes multiple declarations of javax.annotation.processing.Processor. In this case, you have to exclude this conflict in your app/build.gradle file:

ButterKnife and Custom Views

Often you may find that using ButterKnife or Dagger injections defined in your constructor prevent Android Studio to preview your Custom View layout. You may see an error about needing isEditMode() defined. Essentially this method is used to enable your code to short-circuit before executing a section of code that might be used for run-time but cannot be executed within the preview window.

Convenience

  • Dagger – A fast dependency injector for Android and Java. See this video intro from Square.
  • Spork – Spork is an annotation processing library to speed up development on your projects. It allows you to write less boilerplate code to make your code more readable and maintainable.
  • AutoParcel – Port of Google AutoValue for Android with Parcelable generation goodies.
  • Hugo – Easier logging within your app
  • Logger – Much cleaner and easier logcat trace messages
  • AndroidAnnotations – Framework that speeds up Android development. It takes care of the plumbing, and lets you concentrate on what’s really important. By simplifying your code, it facilitates its maintenance
  • Calligraphy – Custom fonts made easy
  • EasyFonts – Easy preloaded custom fonts in your app
  • AndroidViewAnimations – Common property animations made easy
  • AboutLibraries – Automatically generates an About this app section, with a list of used libraries
  • EasyDeviceInfo – Get device information in a super easy way
  • Sensey – Detecting gestures in a snap.
  • OAuthLibGithub – Easily add Authentication using Github API.
  • Timber – A logger with a small, extensible API which provides utility on top of Android’s normal Log class.
  • LoggingInterceptor – An OkHttp interceptor which pretty logs request and response data.

Extensions

Networking

  • Retrofit – A type-safe REST client for Android and Java which intelligently maps an API into a client interface using annotations.
  • Picasso – A powerful image downloading and caching library for Android.
  • Ion – Powerful asynchronous networking library. Download as a jar here.
  • Android Async HTTP – Asynchronous networking client for loading remote content such as JSON.
  • Volley – Google’s HTTP library that makes networking for Android apps easier and most importantly, faster.
  • OkHttp – Square’s underlying networking library with support for asynchronous requests.
  • Glide – Picasso image loading alternative endorsed by Google
  • Android Universal Image Loader – Popular alternative for image loading that can replace Picasso or Glide.
  • Fresco – An image management library from Facebook.
  • Fast Android Networking -Fast Android Networking is a powerful library for doing any type of networking in Android applications which is made on top of OkHttp Networking Layer.

ListView

  • EasyListViewAdapters – Building multi-row-type listview made much cleaner & easier.
  • GridListViewAdapters – Easily build unlimited Grid cards list like play-store. (ListView working as unlimited GridView)
  • StickyListHeaders – An android library for section headers that stick to the top of a ListView
  • PinnedListView – Pinned Section with ListView
  • ListViewAnimations – Easy way to animate ListView items (DEPRECATED)
  • Cardslib – Card UI for Lists or Grids
  • PullToRefresh-ListView – Easy to use pull-to-refresh functionality for ListViews. Download and install as a library project.
  • QuickReturn – Reveal or hide a header or footer as the list is scrolled in a direction.
  • SortableTableView – The library enables you to display your data in a table and provides numerous customization possibilities. The api was designed very android like so the usage is intuitive for experienced android developers.
  • Paginated Table – This is a table which allows dynamic paging for any list of objects. Icons can be added to columns as well as custom items such as check boxes and buttons.

RecyclerView

  • UltimateRecyclerView – Augmented RecyclerView with refreshing, loading more, animation and many other features.
  • AdvRecyclerView – Extended RecyclerView with swipe to dismiss, and draggable or expanding items.
  • android-parallax-recyclerview – An adapter which could be used to achieve a parallax effect on RecyclerView.
  • sticky-headers-recyclerview – Sticky Headers decorator for Android’s RecyclerView.
  • FastAdapter – Simplify and speed up the process of filling your RecyclerView with data
  • ItemAnimators – RecyclerView animators to animate item add/remove/add/move
  • GreedoLayout – Full aspect ratio grid LayoutManager for Android’s RecyclerView
  • ChipsLayoutManager – RecyclerView’s LayoutManager which moves item to the next line when no space left on the current. Can represent google material chips guideline or tags view.
  • RecyclerViewHelper – Provides the most common functions around recycler view like Swipe to dismiss, Drag and Drop, Divider in the ui, events for when item selected and when not selected, on-click listener for items.
  • async-expandable-list – async-expandable-list provides solutions to displaying header-sub-items structure with simple api and asynchronously loading sub-list into an expandable list.
  • Epoxy – Epoxy is an Android library for building complex screens in a RecyclerView.

Easy Navigation

UI Components

Drawing

  • MPAndroidChart – A powerful Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.
  • HoloGraphLibrary – Newer graphing library
  • EazeGraph – Another newer library with potential
  • AndroidCharts – Easy to use charts
  • AndroidGraphView – library to create flexible and nice-looking diagrams.
  • AndroidPlot – plotting library for Android
  • WilliamChart – Flexible charting library with useful motion capabilities.
  • HelloCharts – Charts/graphs library for Android with support for scaling, scrolling and animations.
  • Leonids – Simple and easy particle effects (See Tutorial)
  • Confetti – Newer particle effects library.
  • AChartEngine – This is a charting software library for Android applications

Image Processing

Scanning

Persistence

  • ActiveAndroid
  • DBFlow – A robust, powerful, and very simple ORM android database library with annotation processing.
  • greenDAO
  • SugarORM
  • RxCache – Reactive caching library for Android
  • Android-Orma – A type-safe ORM for Android as a wrapper of SQLiteDatabase
  • ORMLite
  • SQLBrite – Lightweight wrapper around SQLiteOpenHelper
  • Cupboard – Popular take on SQL wrapper
  • StorIO – Fresh take on a light SQL wrapper
  • Realm
  • NexusData
  • Hawk – Persistent secure key/value store
  • Poetry – Persist JSON directly into SQLite
  • JDXA – The KISS ORM for Android – Simple, Non-intrusive, and Flexible
  • Schematic – Generate the SQLite and ContentProvider code

Binding

Compatibility

Scrolling and Parallax

This is a list of popular scrolling and parallax libraries:

Debugging

  • Stetho – A debug bridge for Android applications which could be used for multiple purposes not limited to Network Inspection, Database Inspection and Javascript Console.
  • Android Debug Database – Android Debug Database allows you to view databases and shared preferences directly in your browser in a very simple way.
  • Bugfender – Cloud storage for your app logs, track user behaviour to find problems in your mobile apps.
  • Chuck – Chuck is a simple in-app HTTP inspector for Android OkHttp clients. Chuck intercepts and persists all HTTP requests and responses inside your application, and provides a UI for inspecting their content.
  • AnUitor – UI debug tool for Android

Resources

Check out the following resources for finding libraries:

References

https://github.com/codepath/android_guides/wiki/Must-Have-libraries

Migrate data trong CoreData (Xử lý lỗi abort())


Tại sao phải migrate data?

Tôi viết một ứng dụng cho nhân viên điều tra thị trường cửa một công ty marketing có thể cầm iPhone đi khắp nơi nhập dữ liệu. Do kết nối Internet không đảm bảo do đó, tôi sử dụng CoreData để lưu trữ dữ liệu điều tra vào ứng dụng, khi có kết nối Internet, dữ liệu sẽ được đẩy lên web server.

Mọi việc diễn ra tốt đẹp. Ứng dụng được cài đặt trên thiết bị của nhân viên điều tra thị trường bằng In-house Enterprise Distribution.
Khoảng hai tháng sau, khách hàng lại yêu cầu tôi bổ xung thêm một nhiều trường vào ứng dụng điều tra nhưng không được phép xoá bỏ dữ liệu cũ đã nhập.

Trong trường hợp nâng cấp ứng dụng và thay đổi cấu trúc model của CoreData như thế này, bắt buộc tôi phải sử cơ chế Data Migration cho phép di cư (migrate) dữ liệu cũ vào model mới của CoreData.

Khi nào có thể migrate data?

Có vài cấp độ migrate data. Cấp độ dễ nhất là “Lightweight migration”. Lightweight migration chỉ thực hiện thành công giới hạn đối với những thay đổi trong model của CoreData như sau:

  • Simple addition of a new attribute: thêm mới một attribute (thêm mới một cột)
  • Removal of an attribute: bỏ attribute ra khỏi một entity (tương đương bỏ cột)
  • A non-optional attribute becoming optional: chuyển thuộc tính bắt buộc thành không bắt buộc
  • An optional attribute becoming non-optional, and defining a default value
  • Renaming an entity or property: đổi tên entity hoặc property

Đối với trường hợp thay đổi phức tạp khiến cho Lightweight migration không thành công, ứng dụng sẽ báo lỗi “Model of CoreData is not found”.

Các bước để lightweight migrate data

Học lập trình iOS trực tuyến cơ bản
Add Model Version
Tạo một version mới kết thừa từ version cũ
Tạo một version mới kết thừa từ version cũ

Chọn một phiên bản cụ thể của CoreData model

Chọn phiên bản cụ thể của Model
Chọn phiên bản cụ thể của Model

Chỉnh sửa lại đoạn code cấu hình CoreData trong AppDelegate.m: chúng cần sửa trong hàm getter của thuộc tính persistentStoreCoordinator để bổ xung lựa chọn kiểu NSDictionary  @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES}

Với lựa chọn này: CoreData sẽ chủ động migrade dữ liệu cũ vào model mới và ánh xạ những attribute bị đổi tên.

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    ...
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                                   configuration:nil
                                                             URL:storeURL
                                                         options:@{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES}
                                                           error:&error]) {
    ...
}    
    
    return _persistentStoreCoordinator;
}

Thử nghiệm

Các bạn có thể thực hành bằng tạo ra một CoreData model gọi là version gốc, sau đó thêm dữ liệu. Tạo một phiên bản mới của model, chọn chế độ Lightweight migration rồi query dữ liệu cũ, đồng thời thêm dữ liệu mới. Nếu ứng dụng sau khi chỉnh sửa CoreData model mà không bị crash có nghĩa quá trình migration thành công.

Ví dụ mẫu

Ví dụ dự án mẫu demo tính năng Lightweight migration trong CoreData

50 Android Studio Tips, Tricks & Resources


Tập hợp các tips, tricks, shortcuts trong android

Ở bài viết này mình sẽ chia sẽ các tips, tricks, shortcuts để giúp cải thiện tốc độ phát triển ứng dụng.

Visual

  1. Material Colors theme for Android Logcat

Để thay đổi Android Studio Logcat bạn vào : Preferences (Settings on Windows / Linux machines) → Editor → Colors & Fonts → Android Logcat

Một số mã màu:

  • Assert #BA68C8
  • Debug #2196F3
  • Error #F44336
  • Info #4CAF50
  • Verbose #BBBBBB
  • Warning #FF9800

2. Ngăn ngừa Android Studio Logcat xoá log khi mà ứng dụng hiện tại bị crashes.

Bạn vào khungAndroid Monitor và chọn Edit filter configuration khi filter name thả xuống.

3. Sử dụng code style phù hợp to your IDE

Bạn vào Preferences → Code Style → Java và trongScheme thả xuống , bạn có thể chọn cho mình một style phù hợp.

Có 2 styles thông dụng:

4. Use split screen for increasing efficiency.

Để dùng tính năng này, bạn chuột phải trên tab chính của màn hình và chọn Split Vertically / Horizontally.

Bạn có thể đặt phím tắt cho thao tác này . Mở Preferences → Keycap và tìm Split Vertically. Sau đó bạn Add Keyboard Shortcut như hình.
Tôi thêm phím tắt control + alt + v cho màn hìnhvertical split ( chia theo chiều dọc)

5. Distraction Free Mode.

Bạn có thể enable tính năng này: View → Enter Distraction Free Mode

6. Use Live Templates

  • Bạn có thể sử dụng phím tắt: cmd + j (Windows / Linux: ctrl + j).

Bạn có thể sử dụng các template có sẵn như Toasts or if

Shortcuts and helpful commands

1. The best and the most helpful command is Search for command:
cmd + shift + a (Windows / Linux: ctrl + shift + a).

Let’s say you want to close current tab and you don’t know how. You just type: close and you’ll get a proper shortcut / command.

2. Choose from the last copy / pastes (manage your clipboard):
cmd + shift + v (Windows / Linux: ctrl + shift + v).
By default there are 5 last copy/paste items.

3. Enable multicursor feature: control + g (alt + j for Windows / Linux).

A detailed article about this feature is provided by Bartek Lipinski on Medium. Highly recommended!

4. Open a class: cmd + o (Windows / Linux: ctrl + n).

5. Open any file: cmd + shift + o (Windows / Linux: ctrl + shift + n).

6. Open symbol: cmd + option + o (Windows / Linux: alt + shift + n).

7. Go to implementation: cmd + option + b (Windows / Linux:
ctrl + alt + b).
Let’s say you have an interface. By clicking on the interface’s name and then clicking the Go to implementation shortcut, you will be redirected to classes which implement that interface.

8. Go to declaration: cmd + b (Windows / Linux: ctrl + b).
It allows you to quickly check and go to a declaration of a class, method or a variable.

9. Go to type declaration: control + shift + b (Windows / Linux:
ctrl + shift + b).
Let’s say you defined:

Employee employee = new Employee(“Michal”);

When your caret is on employee and you click the shortcut, you will be redirected to the Employee class.

10. Go to super: cmd + u (Windows / Linux: ctrl + u).
For instance, you override some method. When your caret in on the method’s name and you click Go to super shortcut, you will be redirected to the parent method.

11. Move between tabs: cmd + shift + [ (move left) or cmd + shift + ](move right) (Windows / Linux: alt + ← / →).

12. Move between Design / Text tabs in layout’s view:
control + shift + ← / → (Windows / Linux: alt + shift + ← / →).

13. Close a current tab: cmd + w (Windows / Linux: ctrl + shift + a).

14. Hide all windows: cmd + shift + F12 (Windows / Linux:
ctrl + shift + F12).

15. Minimize Android Studio instance: cmd + m (Windows / Linux:
ctrl + m).

16. Format your code: cmd + option + l (Windows / Linux:
ctrl + alt + l).

17. Auto-indent lines: control + option + i (Windows / Linux:
ctrl + alt + i).

18. Implement methods: control + i (Windows / Linux: ctrl + i).
Let’s say you implement an interface. Then, you can quickly import all methods provided by that interface, just by clicking this shortcut.

19. Smart code completion (filters the list of methods and variables by expected type): control + shift + space (Windows / Linux: ctrl + shift + space).

20. Find: cmd + f (Windows / Linux: ctrl + f).

21. Find and replace: cmd + r (Windows / Linux: ctrl + r).

22. Move hardcoded strings to resources: option + return (Windows / Linux: alt + enter). The shortcut must be used when a caret is on a text. Check the gif below:

If you use that shortcut globally, the IDE will do Project quick fix (show intention actions and quick fixes).

23. Build and run: control + r (Windows / Linux: shift + F10).

Plugins: Một số plugins hữu ích

  1. Key promoter — a plugin which will help you to use a keyboard more often.
  2. String Manipulation — a plugin which provides actions for text manipulation (e.g. toggling styles like camelCase, hyphen-lowercase etc., capitalize text and many more).
  3. Android Material Design Icon Generator — this plugin helps you to set Material Design icons to your Android project. After installation you can use a shortcut: cmd + shift + m to generate an icon (by default).
  4. ButterKnifeZelezny — simple plugin that allows one-click creation of Butterknife view injections.
  5. IntelliJ/Android Studio Plugin for Android Parcelable boilerplate code generation — a plugin that generates an Android Parcelable implementation based on fields in the class.
  6. ADB Idea — a plugin that helps and automates adb commands to: uninstall, kill, start, restart, clear an application and clear the application data and restart it.
  7. Genymotion plugin — this plugin allows you to create and start Genymotion virtual devices from Android Studio.
  8. Android Methods Count — a plugin that parses your Android library dependencies and shows the methods count as an handy hint.
  9. Git Flow Integration — a plugin for introducing a Git Flow branching model.
  10. Builder plugin — a plugin (from Square) that generates a static nested Builder for a class.

MultiThreading: AsyncTask trong Android


Giới thiệu

Trong ứng dụng Android có nhiều tác vụ (task) chạy song song với nhau để đảm bảo ứng dụng của chúng ta tận dụng được hết khả năng của CPU và mang  lại performence cho ứng dụng. Vậy để lập trình được nhiều tác vụ chạy song song trong ứng dụng Android như thế nào thì bài viết này sẽ cùng các bạn tìm hiểu chi tiết.

Read more of this post