From 0713ed9e12c3e535a887337164da7b5dc60541b2 Mon Sep 17 00:00:00 2001 From: Vivek Maskara Date: Sun, 2 Apr 2017 22:08:14 +0530 Subject: [PATCH] Refactored welcome activity to decouple the view pager (#481) --- .../fr/free/nrw/commons/WelcomeActivity.java | 64 +++-------------- .../free/nrw/commons/WelcomePagerAdapter.java | 72 +++++++++++++++++++ 2 files changed, 83 insertions(+), 53 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java diff --git a/app/src/main/java/fr/free/nrw/commons/WelcomeActivity.java b/app/src/main/java/fr/free/nrw/commons/WelcomeActivity.java index 2345126a0..30c8baf84 100644 --- a/app/src/main/java/fr/free/nrw/commons/WelcomeActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/WelcomeActivity.java @@ -1,32 +1,19 @@ package fr.free.nrw.commons; import android.os.Bundle; -import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; import com.viewpagerindicator.CirclePageIndicator; +import butterknife.BindView; +import butterknife.ButterKnife; import fr.free.nrw.commons.theme.BaseActivity; public class WelcomeActivity extends BaseActivity { - static final int PAGE_WIKIPEDIA = 0, - PAGE_DO_UPLOAD = 1, - PAGE_DONT_UPLOAD = 2, - PAGE_IMAGE_DETAILS = 3, - PAGE_FINAL = 4; - static final int[] pageLayouts = new int[] { - R.layout.welcome_wikipedia, - R.layout.welcome_do_upload, - R.layout.welcome_dont_upload, - R.layout.welcome_image_details, - R.layout.welcome_final - }; + private WelcomePagerAdapter adapter; - private ViewPager pager; - private Button yesButton; + @BindView(R.id.welcomePager) ViewPager pager; + @BindView(R.id.welcomePagerIndicator) CirclePageIndicator indicator; @Override public void onCreate(Bundle savedInstanceState) { @@ -34,43 +21,14 @@ public class WelcomeActivity extends BaseActivity { setContentView(R.layout.activity_welcome); getSupportActionBar().hide(); + ButterKnife.bind(this); - pager = (ViewPager)findViewById(R.id.welcomePager); - pager.setAdapter(new PagerAdapter() { - @Override - public int getCount() { - return pageLayouts.length; - } + setUpAdapter(); + } - @Override - public boolean isViewFromObject(View view, Object o) { - return (view == o); - } - - @Override - public Object instantiateItem(ViewGroup container, int position) { - View view = getLayoutInflater().inflate(pageLayouts[position], null); - container.addView(view); - if (position == PAGE_FINAL) { - yesButton = (Button)view.findViewById(R.id.welcomeYesButton); - yesButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - finish(); - } - }); - } - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, Object obj) { - yesButton = null; - container.removeView((View)obj); - } - }); - - CirclePageIndicator indicator = (CirclePageIndicator)findViewById(R.id.welcomePagerIndicator); + private void setUpAdapter() { + adapter = new WelcomePagerAdapter(this); + pager.setAdapter(adapter); indicator.setViewPager(pager); } } diff --git a/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java b/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java new file mode 100644 index 000000000..6da880694 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java @@ -0,0 +1,72 @@ +package fr.free.nrw.commons; + +import android.app.Activity; +import android.content.Context; +import android.support.v4.view.PagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import butterknife.ButterKnife; +import butterknife.OnClick; + +public class WelcomePagerAdapter extends PagerAdapter { + + private Context context; + + private static final int PAGE_FINAL = 4; + + static final int[] PAGE_LAYOUTS = new int[]{ + R.layout.welcome_wikipedia, + R.layout.welcome_do_upload, + R.layout.welcome_dont_upload, + R.layout.welcome_image_details, + R.layout.welcome_final + }; + + public WelcomePagerAdapter(Context context) { + this.context = context; + } + + @Override + public int getCount() { + return PAGE_LAYOUTS.length; + } + + @Override + public boolean isViewFromObject(View view, Object object) { + return (view == object); + } + + @Override + public Object instantiateItem(ViewGroup container, int position) { + LayoutInflater inflater = LayoutInflater.from(context); + ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false); + + if (position == PAGE_FINAL) { + ViewHolder holder = new ViewHolder(layout, context); + layout.setTag(holder); + } + container.addView(layout); + return layout; + } + + @Override + public void destroyItem(ViewGroup container, int position, Object obj) { + container.removeView((View) obj); + } + + public static class ViewHolder { + private Context context; + + public ViewHolder(View view, Context context) { + ButterKnife.bind(this, view); + this.context = context; + } + + @OnClick(R.id.welcomeYesButton) + void onClicked() { + ((Activity) context).finish(); + } + } +}