diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 1517293..7cba9ab 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index 4846704..7263164 100644 Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ diff --git a/app/build.gradle b/app/build.gradle index 5649f9b..114d9bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -93,6 +93,7 @@ dependencies { implementation 'q.rorbin:badgeview:1.1.0' implementation 'com.braintreepayments.api:braintree:2.22.0' implementation 'org.jsoup:jsoup:1.11.1' + implementation 'me.relex:circleindicator:1.3.2' implementation('com.braintreepayments.api:drop-in:3.7.1') { exclude group: 'com.braintreepayments.api', module: 'braintree' } diff --git a/app/src/main/java/ch/pizzaleu/android/activity/SplashActivity.java b/app/src/main/java/ch/pizzaleu/android/activity/SplashActivity.java index 3e2783c..fe452f0 100644 --- a/app/src/main/java/ch/pizzaleu/android/activity/SplashActivity.java +++ b/app/src/main/java/ch/pizzaleu/android/activity/SplashActivity.java @@ -5,10 +5,8 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Handler; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import android.support.v4.view.ViewPager; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; import com.afollestad.materialdialogs.MaterialDialog; @@ -24,7 +22,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import ch.pizzaleu.android.R; -import ch.pizzaleu.android.adapter.recycler.CampaignBannerRecyclerAdapter; +import ch.pizzaleu.android.adapter.pager.CampaignBannerPagerAdapter; import ch.pizzaleu.android.api.ApiConstants; import ch.pizzaleu.android.api.ApiEndPoints; import ch.pizzaleu.android.api.ApiErrorUtils; @@ -41,21 +39,23 @@ import ch.pizzaleu.android.model.CampaignBannerModel; import ch.pizzaleu.android.model.CategoryModel; import ch.pizzaleu.android.model.StoreModel; import ch.pizzaleu.android.model.cart.CartInfoModel; +import me.relex.circleindicator.CircleIndicator; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class SplashActivity extends BaseActivity { - @BindView(R.id.campaignBannerRecyclerView) RecyclerView campaignBannerRecyclerView; @BindView(R.id.postCodeTextView) TextView postCodeTextView; + @BindView(R.id.campaignsViewPager) ViewPager campaignsViewPager; + @BindView(R.id.viewPagerIndicator) CircleIndicator viewPagerIndicator; @BindString(R.string.alert_invalid_post_code) String choosePostCodeAlert; private ArrayList storeList = new ArrayList<>(); private ArrayList campaignBannerList = new ArrayList<>(); private StoreModel selectedStoreModel; - private CampaignBannerRecyclerAdapter campaignBannerRecyclerAdapter; + private CampaignBannerPagerAdapter campaignBannerPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -63,7 +63,6 @@ public class SplashActivity extends BaseActivity { setContentView(R.layout.activity_splash); ButterKnife.bind(this); //DisplayHelper.changeStatusColor(); - initCampaignBannerRecyclerView(); if(NetworkHelper.isNetworkAvailable()){ registerNotificationTag(); getStoreList(); @@ -73,11 +72,11 @@ public class SplashActivity extends BaseActivity { } } - private void initCampaignBannerRecyclerView(){ - campaignBannerRecyclerAdapter = new CampaignBannerRecyclerAdapter(campaignBannerList); - campaignBannerRecyclerView.setAdapter(campaignBannerRecyclerAdapter); - LinearLayoutManager layoutManager = new LinearLayoutManager(BaseActivity.currentActivity); - campaignBannerRecyclerView.setLayoutManager(layoutManager); + private void initCampaignViewPager(){ + campaignBannerPagerAdapter = new CampaignBannerPagerAdapter(getSupportFragmentManager(), campaignBannerList); + campaignsViewPager.setAdapter(campaignBannerPagerAdapter); + viewPagerIndicator.setViewPager(campaignsViewPager); + viewPagerIndicator.setVisibility(View.VISIBLE); } @OnClick({R.id.choosePostCodeLayout, R.id.choosePostCodeButton}) @@ -144,7 +143,7 @@ public class SplashActivity extends BaseActivity { campaignBannerList.clear(); campaignBannerList.addAll(response.body().getData()); sortCampaignBannerList(); - campaignBannerRecyclerAdapter.notifyDataSetChanged(); + initCampaignViewPager(); } else { ApiErrorUtils.parseError(response); diff --git a/app/src/main/java/ch/pizzaleu/android/adapter/pager/CampaignBannerPagerAdapter.java b/app/src/main/java/ch/pizzaleu/android/adapter/pager/CampaignBannerPagerAdapter.java new file mode 100644 index 0000000..7866df3 --- /dev/null +++ b/app/src/main/java/ch/pizzaleu/android/adapter/pager/CampaignBannerPagerAdapter.java @@ -0,0 +1,31 @@ +package ch.pizzaleu.android.adapter.pager; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; + +import java.util.ArrayList; + +import ch.pizzaleu.android.fragment.CampaignBannerFragment; +import ch.pizzaleu.android.model.CampaignBannerModel; + +public class CampaignBannerPagerAdapter extends FragmentPagerAdapter { + + private ArrayList campaignBannerList = new ArrayList<>(); + + public CampaignBannerPagerAdapter(FragmentManager fm, + ArrayList campaignBannerList) { + super(fm); + this.campaignBannerList = campaignBannerList; + } + + @Override + public Fragment getItem(int position) { + return CampaignBannerFragment.newInstance(campaignBannerList.get(position)); + } + + @Override + public int getCount() { + return campaignBannerList.size(); + } +} \ No newline at end of file diff --git a/app/src/main/java/ch/pizzaleu/android/adapter/recycler/CampaignBannerRecyclerAdapter.java b/app/src/main/java/ch/pizzaleu/android/adapter/recycler/CampaignBannerRecyclerAdapter.java deleted file mode 100644 index 72632a4..0000000 --- a/app/src/main/java/ch/pizzaleu/android/adapter/recycler/CampaignBannerRecyclerAdapter.java +++ /dev/null @@ -1,107 +0,0 @@ -package ch.pizzaleu.android.adapter.recycler; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.ButterKnife; -import ch.pizzaleu.android.R; -import ch.pizzaleu.android.helper.ImageLoadHelper; -import ch.pizzaleu.android.model.CampaignBannerModel; - -public class CampaignBannerRecyclerAdapter extends RecyclerView.Adapter{ - - private final int HOLDER_CAMPAIGN_BANNER = 0; - private final int HOLDER_SPACE = 1; - - private ArrayList bannerList = new ArrayList<>(); - - public static class CampaignBannerHolder extends RecyclerView.ViewHolder { - - @BindView(R.id.campaignBannerImageView) - ImageView campaignBannerImageView; - - public CampaignBannerHolder(final View view) { - super(view); - ButterKnife.bind(this, view); - } - } - - public static class SpaceViewHolder extends RecyclerView.ViewHolder{ - public SpaceViewHolder(final View view) { - super(view); - } - } - - @Override - public int getItemViewType(int position) { - - if(position == bannerList.size()) - return HOLDER_SPACE; - - return HOLDER_CAMPAIGN_BANNER; - } - - public CampaignBannerRecyclerAdapter(ArrayList bannerList){ - this.bannerList = bannerList; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { - - RecyclerView.ViewHolder viewHolder; - View view; - LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); - - switch (viewType){ - - case HOLDER_SPACE: - view = inflater.inflate(R.layout.row_space, viewGroup, false); - viewHolder = new SpaceViewHolder(view); - break; - - // HOLDER_CAMPAIGN_BANNER - default: - view = inflater.inflate(R.layout.row_campaign_banner, viewGroup, false); - viewHolder = new CampaignBannerHolder(view); - break; - } - - return viewHolder; - } - - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { - switch (holder.getItemViewType()){ - case HOLDER_CAMPAIGN_BANNER : - CampaignBannerHolder campaignBannerHolder = (CampaignBannerHolder) holder; - ImageLoadHelper.loadImage(campaignBannerHolder.campaignBannerImageView, bannerList.get(position).getImageUrl()); - //ImageLoadHelper.loadImage(campaignBannerHolder.campaignBannerImageView, getSampleImageUrl(position)); - break; - - case HOLDER_SPACE : - SpaceViewHolder spaceViewHolder = (SpaceViewHolder) holder; - break; - } - } - - @Override - public int getItemCount() { - return bannerList.size() + 1 ; - } - - private String getSampleImageUrl(int position){ - if(position % 2 == 0){ - return "http://pizzaleu.ddns.net/pizza/images/angebot3.png"; - } - else { - return "http://pizzaleu.ddns.net/pizza/images/Pizza_Leu-Pizzapass.png"; - } - } -} \ No newline at end of file diff --git a/app/src/main/java/ch/pizzaleu/android/fragment/CampaignBannerFragment.java b/app/src/main/java/ch/pizzaleu/android/fragment/CampaignBannerFragment.java new file mode 100644 index 0000000..631bd6c --- /dev/null +++ b/app/src/main/java/ch/pizzaleu/android/fragment/CampaignBannerFragment.java @@ -0,0 +1,53 @@ +package ch.pizzaleu.android.fragment; + +import android.os.Bundle; +import android.support.v7.widget.AppCompatImageView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import butterknife.BindView; +import butterknife.ButterKnife; +import ch.pizzaleu.android.R; +import ch.pizzaleu.android.helper.ImageLoadHelper; +import ch.pizzaleu.android.model.CampaignBannerModel; + +public class CampaignBannerFragment extends BaseFragment { + + @BindView(R.id.campaignBannerImageView) AppCompatImageView campaignBannerImageView; + + public static final String FRAGMENT_NAME = "campaignFragment"; + private CampaignBannerModel campaignBannerModel; + + public CampaignBannerFragment() {} + + public static CampaignBannerFragment newInstance(CampaignBannerModel campaignBannerModel) { + Bundle args = new Bundle(); + args.putSerializable("campaignBannerModel", campaignBannerModel); + CampaignBannerFragment fragment = new CampaignBannerFragment(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_campaign_banner, container, false); + ButterKnife.bind(this, view); + getDataFromArguments(); + initViews(); + return view; + } + + private void getDataFromArguments(){ + campaignBannerModel = (CampaignBannerModel) getArguments().getSerializable("campaignBannerModel"); + } + + private void initViews(){ + ImageLoadHelper.loadImage(campaignBannerImageView, campaignBannerModel.getImageUrl()); + } +} diff --git a/app/src/main/java/ch/pizzaleu/android/model/CampaignBannerModel.java b/app/src/main/java/ch/pizzaleu/android/model/CampaignBannerModel.java index 7b2f35c..16a0364 100644 --- a/app/src/main/java/ch/pizzaleu/android/model/CampaignBannerModel.java +++ b/app/src/main/java/ch/pizzaleu/android/model/CampaignBannerModel.java @@ -3,7 +3,9 @@ package ch.pizzaleu.android.model; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; -public class CampaignBannerModel { +import java.io.Serializable; + +public class CampaignBannerModel implements Serializable { @Expose @SerializedName("title") diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index 13b00e8..143a535 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -1,6 +1,6 @@ - + android:scaleType="fitXY" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> - + android:layout_height="48dp" + android:layout_marginTop="16dp" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" + android:background="@drawable/background_button_add_cart" + app:layout_constraintTop_toBottomOf="@id/pizzappSplashLogoImageView" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> - - - - - - - - -