Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.app.walper;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.annotation.DrawableRes;
- import android.support.annotation.NonNull;
- import android.support.design.widget.BottomSheetBehavior;
- import android.support.design.widget.FloatingActionButton;
- import android.support.v4.view.MenuItemCompat;
- import android.support.v4.view.ViewPager;
- import android.support.v4.widget.NestedScrollView;
- import android.support.v4.widget.SwipeRefreshLayout;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.view.ContextThemeWrapper;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.support.v7.widget.Toolbar;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.app.walper.adapter.AdapterFeaturedCategory;
- import com.app.walper.adapter.AdapterFeaturedWallpaper;
- import com.app.walper.connection.API;
- import com.app.walper.connection.RestAdapter;
- import com.app.walper.connection.response.ResponseHome;
- import com.app.walper.data.AppConfig;
- import com.app.walper.data.Constant;
- import com.app.walper.data.GDPR;
- import com.app.walper.data.SharedPref;
- import com.app.walper.data.ThisApplication;
- import com.app.walper.model.Category;
- import com.app.walper.model.SearchFilter;
- import com.app.walper.model.Tag;
- import com.app.walper.model.Type;
- import com.app.walper.model.Wallpaper;
- import com.app.walper.room.AppDatabase;
- import com.app.walper.room.DAO;
- import com.app.walper.utils.NetworkCheck;
- import com.app.walper.utils.Tools;
- import com.facebook.shimmer.ShimmerFrameLayout;
- import com.google.ads.mediation.admob.AdMobAdapter;
- import com.google.android.flexbox.FlexboxLayout;
- import com.google.android.gms.ads.AdListener;
- import com.google.android.gms.ads.AdRequest;
- import com.google.android.gms.ads.AdSize;
- import com.google.android.gms.ads.AdView;
- import com.google.android.gms.ads.InterstitialAd;
- import java.util.Arrays;
- import java.util.HashSet;
- import retrofit2.Call;
- import retrofit2.Callback;
- import retrofit2.Response;
- public class ActivityMain extends AppCompatActivity {
- private Call<ResponseHome> callbackCall = null;
- private View parent_view, lyt_main_content;
- private SwipeRefreshLayout swipe_refresh;
- private FlexboxLayout tags_flex_box;
- private ShimmerFrameLayout shimmer_layout;
- private AdapterFeaturedCategory adapterCategory;
- private AdapterFeaturedWallpaper adapterFeatured, adapterPopular, adapterRated;
- private AdapterFeaturedWallpaper adapterRecent, adapterShuffle;
- private ViewPager view_pager_featured, view_pager_popular, view_pager_rated;
- private ViewPager view_pager_recent, view_pager_shuffle;
- private FloatingActionButton fab;
- private boolean is_menu_show = false;
- private BottomSheetBehavior btmSheetBehavior;
- private DAO dao;
- private InterstitialAd mInterstitialAd;
- private AdView mAdView;
- private SharedPref sharedPref;
- private View notif_badge;
- private int notification_count = -1;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- dao = AppDatabase.getDb(this).getDAO();
- sharedPref = new SharedPref(this);
- initToolbar();
- initComponent();
- requestAction();
- prepareAds();
- Tools.RTLMode(getWindow());
- ThisApplication.getInstance().saveCustomLogEvent("OPEN_MAIN");
- }
- private void initToolbar() {
- Toolbar toolbar = findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- getSupportActionBar().setTitle(null);
- Tools.setSystemBarColor(this);
- }
- private void initComponent() {
- fab = findViewById(R.id.fab);
- parent_view = findViewById(R.id.lyt_parent);
- swipe_refresh = findViewById(R.id.swipe_refresh);
- shimmer_layout = findViewById(R.id.shimmer_home);
- lyt_main_content = findViewById(R.id.lyt_home_content);
- tags_flex_box = findViewById(R.id.tags_flex_box);
- NestedScrollView nested_content = (NestedScrollView) findViewById(R.id.nested_scrollview);
- nested_content.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
- @Override
- public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
- if (scrollY < oldScrollY) { // up
- animateFab(false);
- }
- if (scrollY > oldScrollY) { // down
- animateFab(true);
- }
- }
- });
- // on swipe
- swipe_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- requestAction();
- }
- });
- final int padding = Tools.getPaddingCard(getResources().getDimensionPixelOffset(R.dimen.item_width_featured));
- final int padding_small = Tools.getPaddingCard(getResources().getDimensionPixelOffset(R.dimen.item_width_small));
- view_pager_featured = findViewById(R.id.view_pager_featured);
- adapterFeatured = new AdapterFeaturedWallpaper(this, false);
- view_pager_featured.setAdapter(adapterFeatured);
- view_pager_featured.setOffscreenPageLimit(4);
- view_pager_featured.setPadding(padding, 0, padding, 0);
- view_pager_featured.setPageTransformer(false, new ViewPager.PageTransformer() {
- @Override
- public void transformPage(View page, float position) {
- page.setTranslationX(-(padding - Tools.dpToPx(getApplicationContext(), 12)));
- }
- });
- adapterFeatured.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
- @Override
- public void onItemClick(View view, Wallpaper obj) {
- ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
- }
- });
- adapterCategory = new AdapterFeaturedCategory(this);
- RecyclerView recycler_category = findViewById(R.id.recycler_category);
- recycler_category.setLayoutManager(new LinearLayoutManager(this));
- recycler_category.setHasFixedSize(true);
- recycler_category.setNestedScrollingEnabled(false);
- recycler_category.setAdapter(adapterCategory);
- adapterCategory.setOnItemClickListener(new AdapterFeaturedCategory.OnItemClickListener() {
- @Override
- public void onItemClick(View view, Category obj, int position) {
- SearchFilter sf = new SearchFilter(obj);
- ActivitySearch.navigate(ActivityMain.this, sf, getString(R.string.hint_category) + obj.name);
- }
- });
- view_pager_popular = findViewById(R.id.view_pager_popular);
- adapterPopular = new AdapterFeaturedWallpaper(this, true);
- view_pager_popular.setAdapter(adapterPopular);
- view_pager_popular.setOffscreenPageLimit(4);
- view_pager_popular.setPadding(padding_small, 0, padding_small, 0);
- view_pager_popular.setPageTransformer(false, new ViewPager.PageTransformer() {
- @Override
- public void transformPage(View page, float position) {
- page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
- }
- });
- adapterPopular.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
- @Override
- public void onItemClick(View view, Wallpaper obj) {
- ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
- }
- });
- view_pager_rated = findViewById(R.id.view_pager_rated);
- adapterRated = new AdapterFeaturedWallpaper(this, false);
- view_pager_rated.setAdapter(adapterRated);
- view_pager_rated.setOffscreenPageLimit(4);
- view_pager_rated.setPadding(padding_small, 0, padding_small, 0);
- view_pager_rated.setPageTransformer(false, new ViewPager.PageTransformer() {
- @Override
- public void transformPage(View page, float position) {
- page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
- }
- });
- adapterRated.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
- @Override
- public void onItemClick(View view, Wallpaper obj) {
- ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
- }
- });
- view_pager_recent = findViewById(R.id.view_pager_recent);
- adapterRecent = new AdapterFeaturedWallpaper(this, false);
- view_pager_recent.setAdapter(adapterRecent);
- view_pager_recent.setOffscreenPageLimit(4);
- view_pager_recent.setPadding(padding_small, 0, padding_small, 0);
- view_pager_recent.setPageTransformer(false, new ViewPager.PageTransformer() {
- @Override
- public void transformPage(View page, float position) {
- page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
- }
- });
- adapterRecent.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
- @Override
- public void onItemClick(View view, Wallpaper obj) {
- ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
- }
- });
- view_pager_shuffle = findViewById(R.id.view_pager_shuffle);
- adapterShuffle = new AdapterFeaturedWallpaper(this, false);
- view_pager_shuffle.setAdapter(adapterShuffle);
- view_pager_shuffle.setOffscreenPageLimit(4);
- view_pager_shuffle.setPadding(padding_small, 0, padding_small, 0);
- view_pager_shuffle.setPageTransformer(false, new ViewPager.PageTransformer() {
- @Override
- public void transformPage(View page, float position) {
- page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
- }
- });
- adapterShuffle.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
- @Override
- public void onItemClick(View view, Wallpaper obj) {
- ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
- }
- });
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- int state = BottomSheetBehavior.STATE_EXPANDED;
- if (is_menu_show) {
- state = BottomSheetBehavior.STATE_COLLAPSED;
- }
- btmSheetBehavior.setState(state);
- showInterstitial();
- }
- });
- LinearLayout llBottomSheet = (LinearLayout) findViewById(R.id.bottom_sheet);
- btmSheetBehavior = BottomSheetBehavior.from(llBottomSheet);
- btmSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
- btmSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
- @Override
- public void onStateChanged(@NonNull View bottomSheet, int newState) {
- is_menu_show = newState == BottomSheetBehavior.STATE_EXPANDED;
- fab.setImageResource(is_menu_show ? R.drawable.ic_close : R.drawable.ic_menu);
- }
- @Override
- public void onSlide(@NonNull View bottomSheet, float slideOffset) {
- }
- });
- }
- public void onShortcutClick(View view) {
- int id = view.getId();
- switch (id) {
- case R.id.shortcut_featured:
- ActivityTab.navigate(this, Type.FEATURED);
- break;
- case R.id.shortcut_popular:
- ActivityTab.navigate(this, Type.POPULAR);
- break;
- case R.id.shortcut_rated:
- ActivityTab.navigate(this, Type.RATED);
- break;
- case R.id.shortcut_recent:
- ActivityTab.navigate(this, Type.RECENT);
- break;
- case R.id.shortcut_shuffle:
- ActivityTab.navigate(this, Type.SHUFFLE);
- break;
- }
- showInterstitial();
- }
- public void onMoreClick(View view) {
- int id = view.getId();
- switch (id) {
- case R.id.btn_more_featured:
- ActivityTab.navigate(this, Type.FEATURED);
- break;
- case R.id.btn_more_popular:
- ActivityTab.navigate(this, Type.POPULAR);
- break;
- case R.id.btn_more_rated:
- ActivityTab.navigate(this, Type.RATED);
- break;
- case R.id.btn_more_recent:
- ActivityTab.navigate(this, Type.RECENT);
- break;
- case R.id.btn_more_shuffle:
- ActivityTab.navigate(this, Type.SHUFFLE);
- break;
- case R.id.btn_more_category:
- ActivityCategory.navigate(this);
- break;
- case R.id.btn_more_tags:
- ActivityTags.navigate(this);
- break;
- }
- }
- private void displayHomeData(ResponseHome resp) {
- lyt_main_content.setVisibility(View.VISIBLE);
- adapterFeatured.setItems(resp.featured);
- adapterCategory.setItems(resp.category);
- adapterPopular.setItems(resp.popular);
- adapterRated.setItems(resp.rated);
- adapterRecent.setItems(resp.recent);
- adapterShuffle.setItems(resp.shuffle);
- view_pager_featured.setAdapter(adapterFeatured);
- view_pager_popular.setAdapter(adapterPopular);
- view_pager_rated.setAdapter(adapterRated);
- view_pager_recent.setAdapter(adapterRecent);
- view_pager_shuffle.setAdapter(adapterShuffle);
- tags_flex_box.removeAllViews();
- for (final Tag t : resp.tag) {
- int buttonStyle = R.style.Widget_AppCompat_Button_Borderless;
- Button btn = new Button(new ContextThemeWrapper(this, buttonStyle), null, buttonStyle);
- Tools.stylingTagButton(this, btn, t);
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Tag obj = (Tag) v.getTag();
- SearchFilter sf = new SearchFilter(new HashSet<>(Arrays.asList(obj)));
- ActivitySearch.navigate(ActivityMain.this, sf, getString(R.string.hint_tag) + obj.name);
- }
- });
- tags_flex_box.addView(btn);
- }
- // save featured category to application class
- ThisApplication.getInstance().setFeaturedCategory(resp.category);
- // save featured tag to application class
- ThisApplication.getInstance().setFeaturedTags(resp.tag);
- }
- private void requestAction() {
- showFailedView(false, "", R.drawable.img_failed);
- swipeProgress(true);
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- requestHomeAPI();
- }
- }, 1000);
- }
- private void requestHomeAPI() {
- API api = RestAdapter.createAPI();
- callbackCall = api.getHome();
- callbackCall.enqueue(new Callback<ResponseHome>() {
- @Override
- public void onResponse(Call<ResponseHome> call, Response<ResponseHome> response) {
- ResponseHome resp = response.body();
- if (resp != null && resp.status.equals("success")) {
- displayHomeData(resp);
- swipeProgress(false);
- } else {
- onFailRequest();
- }
- }
- @Override
- public void onFailure(Call<ResponseHome> call, Throwable t) {
- Log.e("onFailure", t.getMessage());
- if (!call.isCanceled()) onFailRequest();
- }
- });
- }
- private void onFailRequest() {
- swipeProgress(false);
- if (NetworkCheck.isConnect(this)) {
- showFailedView(true, getString(R.string.failed_text), R.drawable.img_failed);
- } else {
- showFailedView(true, getString(R.string.no_internet_text), R.drawable.img_no_internet);
- }
- }
- private void showFailedView(boolean show, String message, @DrawableRes int icon) {
- View lyt_failed = findViewById(R.id.lyt_failed);
- ((ImageView) findViewById(R.id.failed_icon)).setImageResource(icon);
- ((TextView) findViewById(R.id.failed_message)).setText(message);
- if (show) {
- lyt_failed.setVisibility(View.VISIBLE);
- hideSheetMenu();
- } else {
- lyt_failed.setVisibility(View.GONE);
- }
- (findViewById(R.id.failed_retry)).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- requestAction();
- }
- });
- }
- private void hideSheetMenu() {
- if (is_menu_show) btmSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
- }
- private void swipeProgress(final boolean show) {
- if (!show) {
- swipe_refresh.setRefreshing(show);
- shimmer_layout.setVisibility(View.GONE);
- shimmer_layout.stopShimmer();
- return;
- }
- hideSheetMenu();
- shimmer_layout.setVisibility(View.VISIBLE);
- shimmer_layout.startShimmer();
- lyt_main_content.setVisibility(View.INVISIBLE);
- swipe_refresh.post(new Runnable() {
- @Override
- public void run() {
- swipe_refresh.setRefreshing(show);
- }
- });
- }
- boolean isFabHide = false;
- private void animateFab(final boolean hide) {
- if (isFabHide && hide || !isFabHide && !hide) return;
- isFabHide = hide;
- if (isFabHide) hideSheetMenu();
- int moveY = hide ? (2 * fab.getHeight()) : 0;
- fab.animate().translationY(moveY).setStartDelay(100).setDuration(300).start();
- }
- public void homeMenuClick(View view) {
- int id = view.getId();
- switch (id) {
- case R.id.lyt_search:
- ActivitySearch.navigate(this, null, null);
- break;
- case R.id.lyt_notification:
- ActivityNotification.navigate(ActivityMain.this);
- break;
- case R.id.lyt_download:
- ActivityDownload.navigate(this);
- break;
- case R.id.lyt_favorite:
- ActivityFavorite.navigate(this);
- break;
- case R.id.lyt_tags:
- ActivityTags.navigate(this);
- break;
- case R.id.lyt_category:
- ActivityCategory.navigate(this);
- break;
- case R.id.lyt_setting:
- ActivitySettings.navigate(this);
- break;
- case R.id.lyt_more_app:
- Tools.openInAppBrowser(this, Constant.MORE_APP_URL, false);
- break;
- case R.id.lyt_about:
- Tools.showDialogAbout(this);
- break;
- }
- showInterstitial();
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_activity_main, menu);
- Tools.changeMenuIconColor(menu, getResources().getColor(R.color.colorAccent));
- final MenuItem menuItem = menu.findItem(R.id.action_notification);
- View actionView = MenuItemCompat.getActionView(menuItem);
- notif_badge = actionView.findViewById(R.id.notif_badge);
- setupBadge();
- actionView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onOptionsItemSelected(menuItem);
- }
- });
- return true;
- }
- private void setupBadge() {
- if (notif_badge == null) return;
- if (notification_count == 0) {
- notif_badge.setVisibility(View.GONE);
- } else {
- notif_badge.setVisibility(View.VISIBLE);
- }
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int item_id = item.getItemId();
- if (item_id == R.id.action_search) {
- ActivitySearch.navigate(ActivityMain.this, null, null);
- } else if (item_id == R.id.action_notification) {
- ActivityNotification.navigate(ActivityMain.this);
- }
- return super.onOptionsItemSelected(item);
- }
- static boolean active = false;
- @Override
- protected void onResume() {
- super.onResume();
- int new_notif_count = dao.getNotificationUnreadCount();
- if (new_notif_count != notification_count) {
- notification_count = new_notif_count;
- invalidateOptionsMenu();
- }
- }
- private void prepareAds() {
- // init GDPR
- if (AppConfig.ENABLE_GDPR) GDPR.updateConsentStatus(this);
- if (!AppConfig.ADS_MAIN_PAGE || !NetworkCheck.isConnect(getApplicationContext())) return;
- // banner
- LinearLayout ad_container = findViewById(R.id.ad_container);
- mAdView = new AdView(this);
- mAdView.setAdSize(AdSize.BANNER);
- mAdView.setAdUnitId(sharedPref.getBannerUnitId());
- ad_container.addView(mAdView);
- AdRequest adRequest = new AdRequest.Builder()
- .addNetworkExtrasBundle(AdMobAdapter.class, GDPR.getBundleAd(this)).build();
- mAdView.loadAd(adRequest);
- // interstitial
- mInterstitialAd = new InterstitialAd(getApplicationContext());
- mInterstitialAd.setAdUnitId(sharedPref.getInterstitialUnitId());
- mInterstitialAd.loadAd(new AdRequest.Builder()
- .addNetworkExtrasBundle(AdMobAdapter.class, GDPR.getBundleAd(this)).build());
- mInterstitialAd.setAdListener(new AdListener() {
- @Override
- public void onAdClosed() {
- // delay for next ads
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- prepareAds();
- }
- }, 1000 * AppConfig.ADS_INTER_MAIN_INTERVAL);
- super.onAdClosed();
- }
- });
- }
- /* show ads */
- public void showInterstitial() {
- // Show the ad if it's ready
- if (AppConfig.ADS_MAIN_PAGE && mInterstitialAd != null && mInterstitialAd.isLoaded()) {
- mInterstitialAd.show();
- }
- }
- @Override
- public void onPause() {
- super.onPause();
- }
- @Override
- public void onStart() {
- super.onStart();
- active = true;
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- active = false;
- }
- private long exitTime = 0;
- public void doExitApp() {
- if ((System.currentTimeMillis() - exitTime) > 2000) {
- Toast.makeText(this, R.string.press_again_exit_app, Toast.LENGTH_SHORT).show();
- exitTime = System.currentTimeMillis();
- } else {
- finish();
- }
- }
- @Override
- public void onBackPressed() {
- doExitApp();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement