(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| // Copyright 2012 Square, Inc. | |
| package com.squareup.widgets; | |
| import android.content.Context; | |
| import android.content.res.TypedArray; | |
| import android.util.AttributeSet; | |
| import android.widget.ImageView; | |
| /** Maintains an aspect ratio based on either width or height. Disabled by default. */ | |
| public class AspectRatioImageView extends ImageView { |
| public class AnimatedActivity extends Activity | |
| { | |
| @Override | |
| protected void onCreate(Bundle savedInstanceState) | |
| { | |
| super.onCreate(savedInstanceState); | |
| //opening transition animations | |
| overridePendingTransition(R.anim.activity_open_translate,R.anim.activity_close_scale); | |
| } |
| import java.io.UnsupportedEncodingException; | |
| import java.util.Map; | |
| import org.simpleframework.xml.Serializer; | |
| import org.simpleframework.xml.core.Persister; | |
| import com.android.volley.AuthFailureError; | |
| import com.android.volley.NetworkResponse; | |
| import com.android.volley.ParseError; | |
| import com.android.volley.Request; |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| import android.support.v7.widget.LinearLayoutManager; | |
| import android.support.v7.widget.RecyclerView; | |
| public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener { | |
| public static String TAG = EndlessRecyclerOnScrollListener.class.getSimpleName(); | |
| private int previousTotal = 0; // The total number of items in the dataset after the last load | |
| private boolean loading = true; // True if we are still waiting for the last set of data to load. | |
| private int visibleThreshold = 5; // The minimum amount of items to have below your current scroll position before loading more. | |
| int firstVisibleItem, visibleItemCount, totalItemCount; |
| public class CustomFragmentsPresenter : MvxFragmentsPresenter | |
| { | |
| public interface IMvxFragmentHostEx : IMvxFragmentHost | |
| { | |
| void Close(IMvxViewModel viewModel); | |
| void ChangePresentation (MvxPresentationHint hint); | |
| } | |
| private IMvxNavigationSerializer _serializer; |
| public class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ | |
| //our items | |
| List<Generic> items = new Arraylist<>(); | |
| //headers | |
| List<View> headers = new ArrayList<>(); | |
| //footers | |
| List<View> footers = new ArrayList<>(); | |
| public static final int TYPE_HEADER = 111; | |
| public static final int TYPE_FOOTER = 222; |
| // Enable component-scanning and auto-configuration with @SpringBootApplication Annotation | |
| // It combines @Configuration + @ComponentScan + @EnableAutoConfiguration | |
| @SpringBootApplication | |
| public class FooApplication { | |
| public static void main(String[] args) { | |
| // Bootstrap the application | |
| SpringApplication.run(FooApplication.class, args); | |
| } | |
| } |
Picking the right architecture = Picking the right battles + Managing trade-offs