Refactored welcome activity to decouple the view pager (#481)

This commit is contained in:
Vivek Maskara 2017-04-02 22:08:14 +05:30 committed by Veyndan Stuart
parent 6d080889ff
commit 0713ed9e12
2 changed files with 83 additions and 53 deletions

View file

@ -1,32 +1,19 @@
package fr.free.nrw.commons; package fr.free.nrw.commons;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.viewpagerindicator.CirclePageIndicator; import com.viewpagerindicator.CirclePageIndicator;
import butterknife.BindView;
import butterknife.ButterKnife;
import fr.free.nrw.commons.theme.BaseActivity; import fr.free.nrw.commons.theme.BaseActivity;
public class WelcomeActivity extends BaseActivity { public class WelcomeActivity extends BaseActivity {
static final int PAGE_WIKIPEDIA = 0, private WelcomePagerAdapter adapter;
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 ViewPager pager; @BindView(R.id.welcomePager) ViewPager pager;
private Button yesButton; @BindView(R.id.welcomePagerIndicator) CirclePageIndicator indicator;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -34,43 +21,14 @@ public class WelcomeActivity extends BaseActivity {
setContentView(R.layout.activity_welcome); setContentView(R.layout.activity_welcome);
getSupportActionBar().hide(); getSupportActionBar().hide();
ButterKnife.bind(this);
pager = (ViewPager)findViewById(R.id.welcomePager); setUpAdapter();
pager.setAdapter(new PagerAdapter() { }
@Override
public int getCount() {
return pageLayouts.length;
}
@Override private void setUpAdapter() {
public boolean isViewFromObject(View view, Object o) { adapter = new WelcomePagerAdapter(this);
return (view == o); pager.setAdapter(adapter);
}
@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);
indicator.setViewPager(pager); indicator.setViewPager(pager);
} }
} }

View file

@ -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();
}
}
}