This slide deck focuses on productivity of Android developer. It also helps understand some concepts in Android Studio, comparison between Android Studio and Eclipse, Android Studio plugins, Gradle, some useful tips and tools
in gutter • Easy strings externalization to strings.xml • @Nullable and @NonNull annotations for easy Null check. • Keymaps and key bindings • Different Project Structures • Design time layout attributes • Record video • High resolution screenshots • Memory monitor
Block conditionals = Ctrl + Shift + Enter • Extract to a method = Ctrl + Alt + M • Search a file = Ctrl + Shift + N • Search a class = Ctrl + N • Recently changed files = Ctrl + Shift + E • Goto a symbol = Ctrl + Alt + Shift + N • Group rename = Ctrl + Alt + mouse selection
emulator) • Easy to get started with • Based on AndroVM Open Source project • Integrates with Eclipse/Android Studio via plugins • Amazing hardware feature access • Multi-platform
Exposes REST API as a Java interface • URL parameter replacement and query parameter support • Automatic object conversion to request body(JSON default) • Multi-part requests and file uploads
// request group members List<User> list = client.groupList(98748177231, “lastName”); // resultant url // https://api.github.com/group/98748177231/users?sort=lastName
type will be executed synchronously @GET("/user/{id}/photo") Photo getUserPhoto(@Path("id") int id); // Asynchronous execution requires last parameter to be Callback object @GET("/user/{id}/photo") void getUserPhoto(@Path("id") int id, Callback<Photo> cb);
• Simple API • Handles ImageView recycling and request cancellation in an Adapter • Complex image transformations with minimal memory use • Automatic memory and disc caching
API to enable default configuration • Lower memory footprint • Smaller in size (just around 85KB) • All requests are asynchronous • Allows image transformations
and return Bitmap to callback imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { // Do whatever you want with Bitmap } });
Google • Provides features not currently provided by MediaPlayer class • Supports Dynamic Adapter Streaming over HTTP (DASH) • Smooth streaming • Persistent caching • DRM protected playback(API 18+)
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AppRater.app_launched(this); } } • Simple initialization • Enable/disable on version update using setVersionCodeCheckEnabled() • Provides Market interface to implement your own app market url.
LogsAdapter(Context context, int textViewResourceId, ArrayList<Member> members) { super(context, textViewResourceId, members); mMembers = members; } public View getView(int position, View convertView, ViewGroup parent) { Member member = mMembers.get(position); // incorrect way Member member = getItem(position); // correct way } }