Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.69 KB | None | 0 0
  1. package com.app.walper;
  2.  
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.support.annotation.DrawableRes;
  6. import android.support.annotation.NonNull;
  7. import android.support.design.widget.BottomSheetBehavior;
  8. import android.support.design.widget.FloatingActionButton;
  9. import android.support.v4.view.MenuItemCompat;
  10. import android.support.v4.view.ViewPager;
  11. import android.support.v4.widget.NestedScrollView;
  12. import android.support.v4.widget.SwipeRefreshLayout;
  13. import android.support.v7.app.AppCompatActivity;
  14. import android.support.v7.view.ContextThemeWrapper;
  15. import android.support.v7.widget.LinearLayoutManager;
  16. import android.support.v7.widget.RecyclerView;
  17. import android.support.v7.widget.Toolbar;
  18. import android.util.Log;
  19. import android.view.Menu;
  20. import android.view.MenuItem;
  21. import android.view.View;
  22. import android.widget.Button;
  23. import android.widget.ImageView;
  24. import android.widget.LinearLayout;
  25. import android.widget.TextView;
  26. import android.widget.Toast;
  27.  
  28. import com.app.walper.adapter.AdapterFeaturedCategory;
  29. import com.app.walper.adapter.AdapterFeaturedWallpaper;
  30. import com.app.walper.connection.API;
  31. import com.app.walper.connection.RestAdapter;
  32. import com.app.walper.connection.response.ResponseHome;
  33. import com.app.walper.data.AppConfig;
  34. import com.app.walper.data.Constant;
  35. import com.app.walper.data.GDPR;
  36. import com.app.walper.data.SharedPref;
  37. import com.app.walper.data.ThisApplication;
  38. import com.app.walper.model.Category;
  39. import com.app.walper.model.SearchFilter;
  40. import com.app.walper.model.Tag;
  41. import com.app.walper.model.Type;
  42. import com.app.walper.model.Wallpaper;
  43. import com.app.walper.room.AppDatabase;
  44. import com.app.walper.room.DAO;
  45. import com.app.walper.utils.NetworkCheck;
  46. import com.app.walper.utils.Tools;
  47. import com.facebook.shimmer.ShimmerFrameLayout;
  48. import com.google.ads.mediation.admob.AdMobAdapter;
  49. import com.google.android.flexbox.FlexboxLayout;
  50. import com.google.android.gms.ads.AdListener;
  51. import com.google.android.gms.ads.AdRequest;
  52. import com.google.android.gms.ads.AdSize;
  53. import com.google.android.gms.ads.AdView;
  54. import com.google.android.gms.ads.InterstitialAd;
  55.  
  56. import java.util.Arrays;
  57. import java.util.HashSet;
  58.  
  59. import retrofit2.Call;
  60. import retrofit2.Callback;
  61. import retrofit2.Response;
  62.  
  63. public class ActivityMain extends AppCompatActivity {
  64.  
  65. private Call<ResponseHome> callbackCall = null;
  66.  
  67. private View parent_view, lyt_main_content;
  68. private SwipeRefreshLayout swipe_refresh;
  69. private FlexboxLayout tags_flex_box;
  70. private ShimmerFrameLayout shimmer_layout;
  71. private AdapterFeaturedCategory adapterCategory;
  72. private AdapterFeaturedWallpaper adapterFeatured, adapterPopular, adapterRated;
  73. private AdapterFeaturedWallpaper adapterRecent, adapterShuffle;
  74. private ViewPager view_pager_featured, view_pager_popular, view_pager_rated;
  75. private ViewPager view_pager_recent, view_pager_shuffle;
  76. private FloatingActionButton fab;
  77. private boolean is_menu_show = false;
  78.  
  79. private BottomSheetBehavior btmSheetBehavior;
  80. private DAO dao;
  81. private InterstitialAd mInterstitialAd;
  82. private AdView mAdView;
  83. private SharedPref sharedPref;
  84.  
  85. private View notif_badge;
  86. private int notification_count = -1;
  87.  
  88. @Override
  89. protected void onCreate(Bundle savedInstanceState) {
  90. super.onCreate(savedInstanceState);
  91. setContentView(R.layout.activity_main);
  92. dao = AppDatabase.getDb(this).getDAO();
  93. sharedPref = new SharedPref(this);
  94.  
  95. initToolbar();
  96. initComponent();
  97. requestAction();
  98. prepareAds();
  99.  
  100. Tools.RTLMode(getWindow());
  101. ThisApplication.getInstance().saveCustomLogEvent("OPEN_MAIN");
  102. }
  103.  
  104. private void initToolbar() {
  105. Toolbar toolbar = findViewById(R.id.toolbar);
  106. setSupportActionBar(toolbar);
  107. getSupportActionBar().setTitle(null);
  108. Tools.setSystemBarColor(this);
  109. }
  110.  
  111. private void initComponent() {
  112. fab = findViewById(R.id.fab);
  113. parent_view = findViewById(R.id.lyt_parent);
  114. swipe_refresh = findViewById(R.id.swipe_refresh);
  115. shimmer_layout = findViewById(R.id.shimmer_home);
  116. lyt_main_content = findViewById(R.id.lyt_home_content);
  117. tags_flex_box = findViewById(R.id.tags_flex_box);
  118.  
  119. NestedScrollView nested_content = (NestedScrollView) findViewById(R.id.nested_scrollview);
  120. nested_content.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
  121. @Override
  122. public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
  123. if (scrollY < oldScrollY) { // up
  124. animateFab(false);
  125. }
  126. if (scrollY > oldScrollY) { // down
  127. animateFab(true);
  128. }
  129. }
  130. });
  131.  
  132. // on swipe
  133. swipe_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
  134. @Override
  135. public void onRefresh() {
  136. requestAction();
  137. }
  138. });
  139.  
  140. final int padding = Tools.getPaddingCard(getResources().getDimensionPixelOffset(R.dimen.item_width_featured));
  141. final int padding_small = Tools.getPaddingCard(getResources().getDimensionPixelOffset(R.dimen.item_width_small));
  142. view_pager_featured = findViewById(R.id.view_pager_featured);
  143. adapterFeatured = new AdapterFeaturedWallpaper(this, false);
  144. view_pager_featured.setAdapter(adapterFeatured);
  145. view_pager_featured.setOffscreenPageLimit(4);
  146. view_pager_featured.setPadding(padding, 0, padding, 0);
  147. view_pager_featured.setPageTransformer(false, new ViewPager.PageTransformer() {
  148. @Override
  149. public void transformPage(View page, float position) {
  150. page.setTranslationX(-(padding - Tools.dpToPx(getApplicationContext(), 12)));
  151. }
  152. });
  153. adapterFeatured.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
  154. @Override
  155. public void onItemClick(View view, Wallpaper obj) {
  156. ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
  157. }
  158. });
  159.  
  160. adapterCategory = new AdapterFeaturedCategory(this);
  161. RecyclerView recycler_category = findViewById(R.id.recycler_category);
  162. recycler_category.setLayoutManager(new LinearLayoutManager(this));
  163. recycler_category.setHasFixedSize(true);
  164. recycler_category.setNestedScrollingEnabled(false);
  165. recycler_category.setAdapter(adapterCategory);
  166. adapterCategory.setOnItemClickListener(new AdapterFeaturedCategory.OnItemClickListener() {
  167. @Override
  168. public void onItemClick(View view, Category obj, int position) {
  169. SearchFilter sf = new SearchFilter(obj);
  170. ActivitySearch.navigate(ActivityMain.this, sf, getString(R.string.hint_category) + obj.name);
  171. }
  172. });
  173.  
  174. view_pager_popular = findViewById(R.id.view_pager_popular);
  175. adapterPopular = new AdapterFeaturedWallpaper(this, true);
  176. view_pager_popular.setAdapter(adapterPopular);
  177. view_pager_popular.setOffscreenPageLimit(4);
  178. view_pager_popular.setPadding(padding_small, 0, padding_small, 0);
  179. view_pager_popular.setPageTransformer(false, new ViewPager.PageTransformer() {
  180. @Override
  181. public void transformPage(View page, float position) {
  182. page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
  183. }
  184. });
  185. adapterPopular.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
  186. @Override
  187. public void onItemClick(View view, Wallpaper obj) {
  188. ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
  189. }
  190. });
  191.  
  192. view_pager_rated = findViewById(R.id.view_pager_rated);
  193. adapterRated = new AdapterFeaturedWallpaper(this, false);
  194. view_pager_rated.setAdapter(adapterRated);
  195. view_pager_rated.setOffscreenPageLimit(4);
  196. view_pager_rated.setPadding(padding_small, 0, padding_small, 0);
  197. view_pager_rated.setPageTransformer(false, new ViewPager.PageTransformer() {
  198. @Override
  199. public void transformPage(View page, float position) {
  200. page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
  201. }
  202. });
  203. adapterRated.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
  204. @Override
  205. public void onItemClick(View view, Wallpaper obj) {
  206. ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
  207. }
  208. });
  209.  
  210. view_pager_recent = findViewById(R.id.view_pager_recent);
  211. adapterRecent = new AdapterFeaturedWallpaper(this, false);
  212. view_pager_recent.setAdapter(adapterRecent);
  213. view_pager_recent.setOffscreenPageLimit(4);
  214. view_pager_recent.setPadding(padding_small, 0, padding_small, 0);
  215. view_pager_recent.setPageTransformer(false, new ViewPager.PageTransformer() {
  216. @Override
  217. public void transformPage(View page, float position) {
  218. page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
  219. }
  220. });
  221. adapterRecent.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
  222. @Override
  223. public void onItemClick(View view, Wallpaper obj) {
  224. ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
  225. }
  226. });
  227.  
  228. view_pager_shuffle = findViewById(R.id.view_pager_shuffle);
  229. adapterShuffle = new AdapterFeaturedWallpaper(this, false);
  230. view_pager_shuffle.setAdapter(adapterShuffle);
  231. view_pager_shuffle.setOffscreenPageLimit(4);
  232. view_pager_shuffle.setPadding(padding_small, 0, padding_small, 0);
  233. view_pager_shuffle.setPageTransformer(false, new ViewPager.PageTransformer() {
  234. @Override
  235. public void transformPage(View page, float position) {
  236. page.setTranslationX(-(padding_small - Tools.dpToPx(getApplicationContext(), 12)));
  237. }
  238. });
  239. adapterShuffle.setOnItemClickListener(new AdapterFeaturedWallpaper.OnItemClickListener() {
  240. @Override
  241. public void onItemClick(View view, Wallpaper obj) {
  242. ActivityWallpaperDetails.navigate(ActivityMain.this, obj.id, false);
  243. }
  244. });
  245.  
  246. fab.setOnClickListener(new View.OnClickListener() {
  247. @Override
  248. public void onClick(View v) {
  249. int state = BottomSheetBehavior.STATE_EXPANDED;
  250. if (is_menu_show) {
  251. state = BottomSheetBehavior.STATE_COLLAPSED;
  252. }
  253. btmSheetBehavior.setState(state);
  254. showInterstitial();
  255. }
  256. });
  257.  
  258. LinearLayout llBottomSheet = (LinearLayout) findViewById(R.id.bottom_sheet);
  259. btmSheetBehavior = BottomSheetBehavior.from(llBottomSheet);
  260. btmSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
  261. btmSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
  262. @Override
  263. public void onStateChanged(@NonNull View bottomSheet, int newState) {
  264. is_menu_show = newState == BottomSheetBehavior.STATE_EXPANDED;
  265. fab.setImageResource(is_menu_show ? R.drawable.ic_close : R.drawable.ic_menu);
  266. }
  267.  
  268. @Override
  269. public void onSlide(@NonNull View bottomSheet, float slideOffset) {
  270.  
  271. }
  272. });
  273. }
  274.  
  275. public void onShortcutClick(View view) {
  276. int id = view.getId();
  277. switch (id) {
  278. case R.id.shortcut_featured:
  279. ActivityTab.navigate(this, Type.FEATURED);
  280. break;
  281. case R.id.shortcut_popular:
  282. ActivityTab.navigate(this, Type.POPULAR);
  283. break;
  284. case R.id.shortcut_rated:
  285. ActivityTab.navigate(this, Type.RATED);
  286. break;
  287. case R.id.shortcut_recent:
  288. ActivityTab.navigate(this, Type.RECENT);
  289. break;
  290. case R.id.shortcut_shuffle:
  291. ActivityTab.navigate(this, Type.SHUFFLE);
  292. break;
  293. }
  294. showInterstitial();
  295. }
  296.  
  297. public void onMoreClick(View view) {
  298. int id = view.getId();
  299. switch (id) {
  300. case R.id.btn_more_featured:
  301. ActivityTab.navigate(this, Type.FEATURED);
  302. break;
  303. case R.id.btn_more_popular:
  304. ActivityTab.navigate(this, Type.POPULAR);
  305. break;
  306. case R.id.btn_more_rated:
  307. ActivityTab.navigate(this, Type.RATED);
  308. break;
  309. case R.id.btn_more_recent:
  310. ActivityTab.navigate(this, Type.RECENT);
  311. break;
  312. case R.id.btn_more_shuffle:
  313. ActivityTab.navigate(this, Type.SHUFFLE);
  314. break;
  315. case R.id.btn_more_category:
  316. ActivityCategory.navigate(this);
  317. break;
  318. case R.id.btn_more_tags:
  319. ActivityTags.navigate(this);
  320. break;
  321. }
  322. }
  323.  
  324. private void displayHomeData(ResponseHome resp) {
  325. lyt_main_content.setVisibility(View.VISIBLE);
  326. adapterFeatured.setItems(resp.featured);
  327. adapterCategory.setItems(resp.category);
  328. adapterPopular.setItems(resp.popular);
  329. adapterRated.setItems(resp.rated);
  330. adapterRecent.setItems(resp.recent);
  331. adapterShuffle.setItems(resp.shuffle);
  332.  
  333. view_pager_featured.setAdapter(adapterFeatured);
  334. view_pager_popular.setAdapter(adapterPopular);
  335. view_pager_rated.setAdapter(adapterRated);
  336. view_pager_recent.setAdapter(adapterRecent);
  337. view_pager_shuffle.setAdapter(adapterShuffle);
  338.  
  339. tags_flex_box.removeAllViews();
  340. for (final Tag t : resp.tag) {
  341. int buttonStyle = R.style.Widget_AppCompat_Button_Borderless;
  342. Button btn = new Button(new ContextThemeWrapper(this, buttonStyle), null, buttonStyle);
  343. Tools.stylingTagButton(this, btn, t);
  344. btn.setOnClickListener(new View.OnClickListener() {
  345. @Override
  346. public void onClick(View v) {
  347. Tag obj = (Tag) v.getTag();
  348. SearchFilter sf = new SearchFilter(new HashSet<>(Arrays.asList(obj)));
  349. ActivitySearch.navigate(ActivityMain.this, sf, getString(R.string.hint_tag) + obj.name);
  350. }
  351. });
  352. tags_flex_box.addView(btn);
  353. }
  354.  
  355. // save featured category to application class
  356. ThisApplication.getInstance().setFeaturedCategory(resp.category);
  357.  
  358. // save featured tag to application class
  359. ThisApplication.getInstance().setFeaturedTags(resp.tag);
  360. }
  361.  
  362. private void requestAction() {
  363. showFailedView(false, "", R.drawable.img_failed);
  364. swipeProgress(true);
  365. new Handler().postDelayed(new Runnable() {
  366. @Override
  367. public void run() {
  368. requestHomeAPI();
  369. }
  370. }, 1000);
  371. }
  372.  
  373. private void requestHomeAPI() {
  374. API api = RestAdapter.createAPI();
  375. callbackCall = api.getHome();
  376. callbackCall.enqueue(new Callback<ResponseHome>() {
  377. @Override
  378. public void onResponse(Call<ResponseHome> call, Response<ResponseHome> response) {
  379. ResponseHome resp = response.body();
  380. if (resp != null && resp.status.equals("success")) {
  381. displayHomeData(resp);
  382. swipeProgress(false);
  383. } else {
  384. onFailRequest();
  385. }
  386. }
  387.  
  388. @Override
  389. public void onFailure(Call<ResponseHome> call, Throwable t) {
  390. Log.e("onFailure", t.getMessage());
  391. if (!call.isCanceled()) onFailRequest();
  392. }
  393. });
  394. }
  395.  
  396. private void onFailRequest() {
  397. swipeProgress(false);
  398. if (NetworkCheck.isConnect(this)) {
  399. showFailedView(true, getString(R.string.failed_text), R.drawable.img_failed);
  400. } else {
  401. showFailedView(true, getString(R.string.no_internet_text), R.drawable.img_no_internet);
  402. }
  403. }
  404.  
  405. private void showFailedView(boolean show, String message, @DrawableRes int icon) {
  406. View lyt_failed = findViewById(R.id.lyt_failed);
  407. ((ImageView) findViewById(R.id.failed_icon)).setImageResource(icon);
  408. ((TextView) findViewById(R.id.failed_message)).setText(message);
  409. if (show) {
  410. lyt_failed.setVisibility(View.VISIBLE);
  411. hideSheetMenu();
  412. } else {
  413. lyt_failed.setVisibility(View.GONE);
  414. }
  415. (findViewById(R.id.failed_retry)).setOnClickListener(new View.OnClickListener() {
  416. @Override
  417. public void onClick(View view) {
  418. requestAction();
  419. }
  420. });
  421. }
  422.  
  423. private void hideSheetMenu() {
  424. if (is_menu_show) btmSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
  425. }
  426.  
  427. private void swipeProgress(final boolean show) {
  428. if (!show) {
  429. swipe_refresh.setRefreshing(show);
  430. shimmer_layout.setVisibility(View.GONE);
  431. shimmer_layout.stopShimmer();
  432. return;
  433. }
  434. hideSheetMenu();
  435. shimmer_layout.setVisibility(View.VISIBLE);
  436. shimmer_layout.startShimmer();
  437. lyt_main_content.setVisibility(View.INVISIBLE);
  438. swipe_refresh.post(new Runnable() {
  439. @Override
  440. public void run() {
  441. swipe_refresh.setRefreshing(show);
  442. }
  443. });
  444. }
  445.  
  446. boolean isFabHide = false;
  447.  
  448. private void animateFab(final boolean hide) {
  449. if (isFabHide && hide || !isFabHide && !hide) return;
  450. isFabHide = hide;
  451. if (isFabHide) hideSheetMenu();
  452. int moveY = hide ? (2 * fab.getHeight()) : 0;
  453. fab.animate().translationY(moveY).setStartDelay(100).setDuration(300).start();
  454. }
  455.  
  456. public void homeMenuClick(View view) {
  457. int id = view.getId();
  458. switch (id) {
  459. case R.id.lyt_search:
  460. ActivitySearch.navigate(this, null, null);
  461. break;
  462. case R.id.lyt_notification:
  463. ActivityNotification.navigate(ActivityMain.this);
  464. break;
  465. case R.id.lyt_download:
  466. ActivityDownload.navigate(this);
  467. break;
  468. case R.id.lyt_favorite:
  469. ActivityFavorite.navigate(this);
  470. break;
  471. case R.id.lyt_tags:
  472. ActivityTags.navigate(this);
  473. break;
  474. case R.id.lyt_category:
  475. ActivityCategory.navigate(this);
  476. break;
  477. case R.id.lyt_setting:
  478. ActivitySettings.navigate(this);
  479. break;
  480. case R.id.lyt_more_app:
  481. Tools.openInAppBrowser(this, Constant.MORE_APP_URL, false);
  482. break;
  483. case R.id.lyt_about:
  484. Tools.showDialogAbout(this);
  485. break;
  486. }
  487. showInterstitial();
  488. }
  489.  
  490. @Override
  491. public boolean onCreateOptionsMenu(Menu menu) {
  492. getMenuInflater().inflate(R.menu.menu_activity_main, menu);
  493. Tools.changeMenuIconColor(menu, getResources().getColor(R.color.colorAccent));
  494.  
  495. final MenuItem menuItem = menu.findItem(R.id.action_notification);
  496. View actionView = MenuItemCompat.getActionView(menuItem);
  497. notif_badge = actionView.findViewById(R.id.notif_badge);
  498. setupBadge();
  499. actionView.setOnClickListener(new View.OnClickListener() {
  500. @Override
  501. public void onClick(View v) {
  502. onOptionsItemSelected(menuItem);
  503. }
  504. });
  505.  
  506. return true;
  507. }
  508.  
  509. private void setupBadge() {
  510. if (notif_badge == null) return;
  511. if (notification_count == 0) {
  512. notif_badge.setVisibility(View.GONE);
  513. } else {
  514. notif_badge.setVisibility(View.VISIBLE);
  515. }
  516.  
  517. }
  518.  
  519. @Override
  520. public boolean onOptionsItemSelected(MenuItem item) {
  521. int item_id = item.getItemId();
  522. if (item_id == R.id.action_search) {
  523. ActivitySearch.navigate(ActivityMain.this, null, null);
  524. } else if (item_id == R.id.action_notification) {
  525. ActivityNotification.navigate(ActivityMain.this);
  526. }
  527. return super.onOptionsItemSelected(item);
  528. }
  529.  
  530. static boolean active = false;
  531.  
  532. @Override
  533. protected void onResume() {
  534. super.onResume();
  535. int new_notif_count = dao.getNotificationUnreadCount();
  536. if (new_notif_count != notification_count) {
  537. notification_count = new_notif_count;
  538. invalidateOptionsMenu();
  539. }
  540. }
  541.  
  542. private void prepareAds() {
  543. // init GDPR
  544. if (AppConfig.ENABLE_GDPR) GDPR.updateConsentStatus(this);
  545. if (!AppConfig.ADS_MAIN_PAGE || !NetworkCheck.isConnect(getApplicationContext())) return;
  546.  
  547. // banner
  548. LinearLayout ad_container = findViewById(R.id.ad_container);
  549. mAdView = new AdView(this);
  550. mAdView.setAdSize(AdSize.BANNER);
  551. mAdView.setAdUnitId(sharedPref.getBannerUnitId());
  552. ad_container.addView(mAdView);
  553. AdRequest adRequest = new AdRequest.Builder()
  554. .addNetworkExtrasBundle(AdMobAdapter.class, GDPR.getBundleAd(this)).build();
  555. mAdView.loadAd(adRequest);
  556.  
  557. // interstitial
  558. mInterstitialAd = new InterstitialAd(getApplicationContext());
  559. mInterstitialAd.setAdUnitId(sharedPref.getInterstitialUnitId());
  560. mInterstitialAd.loadAd(new AdRequest.Builder()
  561. .addNetworkExtrasBundle(AdMobAdapter.class, GDPR.getBundleAd(this)).build());
  562. mInterstitialAd.setAdListener(new AdListener() {
  563. @Override
  564. public void onAdClosed() {
  565. // delay for next ads
  566. new Handler().postDelayed(new Runnable() {
  567. @Override
  568. public void run() {
  569. prepareAds();
  570. }
  571. }, 1000 * AppConfig.ADS_INTER_MAIN_INTERVAL);
  572. super.onAdClosed();
  573. }
  574. });
  575. }
  576.  
  577. /* show ads */
  578. public void showInterstitial() {
  579. // Show the ad if it's ready
  580. if (AppConfig.ADS_MAIN_PAGE && mInterstitialAd != null && mInterstitialAd.isLoaded()) {
  581. mInterstitialAd.show();
  582. }
  583. }
  584.  
  585. @Override
  586. public void onPause() {
  587. super.onPause();
  588. }
  589.  
  590. @Override
  591. public void onStart() {
  592. super.onStart();
  593. active = true;
  594. }
  595.  
  596. @Override
  597. protected void onDestroy() {
  598. super.onDestroy();
  599. active = false;
  600. }
  601.  
  602. private long exitTime = 0;
  603.  
  604. public void doExitApp() {
  605. if ((System.currentTimeMillis() - exitTime) > 2000) {
  606. Toast.makeText(this, R.string.press_again_exit_app, Toast.LENGTH_SHORT).show();
  607. exitTime = System.currentTimeMillis();
  608. } else {
  609. finish();
  610. }
  611. }
  612.  
  613. @Override
  614. public void onBackPressed() {
  615. doExitApp();
  616. }
  617. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement