2323package com .gcssloop .diycode .activity ;
2424
2525import android .support .design .widget .NavigationView ;
26- import android .support .design .widget .Snackbar ;
2726import android .support .design .widget .TabLayout ;
2827import android .support .v4 .app .Fragment ;
2928import android .support .v4 .app .FragmentPagerAdapter ;
3231import android .support .v4 .widget .DrawerLayout ;
3332import android .support .v7 .app .ActionBarDrawerToggle ;
3433import android .support .v7 .widget .Toolbar ;
34+ import android .view .GestureDetector ;
3535import android .view .Menu ;
3636import android .view .MenuItem ;
37+ import android .view .MotionEvent ;
3738import android .view .View ;
3839import android .widget .ImageView ;
3940import android .widget .TextView ;
5960import org .greenrobot .eventbus .ThreadMode ;
6061
6162public class MainActivity extends BaseActivity
62- implements NavigationView .OnNavigationItemSelectedListener {
63+ implements NavigationView .OnNavigationItemSelectedListener , View . OnClickListener {
6364 private DataCache mCache ;
6465 private Config mConfig ;
6566 private int mCurrentPosition = 0 ;
@@ -86,7 +87,7 @@ public void initViews(ViewHolder holder, View root) {
8687 private void initViewPager (ViewHolder holder ) {
8788 ViewPager mViewPager = holder .get (R .id .view_pager );
8889 TabLayout mTabLayout = holder .get (R .id .tab_layout );
89- mViewPager .setOffscreenPageLimit (1 ); // 防止滑动到第三个页面时,第一个页面被销毁
90+ mViewPager .setOffscreenPageLimit (3 ); // 防止滑动到第三个页面时,第一个页面被销毁
9091
9192 mFragment1 = TopicListFragment .newInstance ();
9293 mFragment2 = NewsListFragment .newInstance ();
@@ -170,13 +171,26 @@ private void initMenu(ViewHolder holder) {
170171 NavigationView navigationView = (NavigationView ) findViewById (R .id .nav_view );
171172 navigationView .setNavigationItemSelectedListener (this );
172173
173- holder .setOnClickListener (new View .OnClickListener () {
174+ // 双击 666
175+ final GestureDetector detector = new GestureDetector (this , new GestureDetector .SimpleOnGestureListener (){
174176 @ Override
175- public void onClick ( View v ) {
176- Snackbar . make ( v , "Diycode" , Snackbar . LENGTH_LONG )
177- . setAction ( "Action" , null ). show ( );
177+ public boolean onDoubleTap ( MotionEvent e ) {
178+ quickToTop (); // 快速返回头部
179+ return super . onDoubleTap ( e );
178180 }
179- }, R .id .fab );
181+ });
182+
183+ toolbar .setOnTouchListener (new View .OnTouchListener () {
184+ @ Override
185+ public boolean onTouch (View v , MotionEvent event ) {
186+ detector .onTouchEvent (event );
187+ return false ;
188+ }
189+ });
190+
191+ toolbar .setOnClickListener (this );
192+
193+ holder .setOnClickListener (this , R .id .fab );
180194
181195 loadMenuData ();
182196 }
@@ -265,22 +279,25 @@ public boolean onOptionsItemSelected(MenuItem item) {
265279 openActivity (NotificationActivity .class );
266280 }
267281 return true ;
268- } else if (id == R .id .action_quick_to_top ) {
269- switch (mCurrentPosition ) {
270- case 0 :
271- mFragment1 .quickToTop ();
272- break ;
273- case 1 :
274- mFragment2 .quickToTop ();
275- case 2 :
276- mFragment3 .quickToTop ();
277-
278- }
279282 }
280-
281283 return super .onOptionsItemSelected (item );
282284 }
283285
286+ // 快速返回顶部
287+ private void quickToTop () {
288+ switch (mCurrentPosition ) {
289+ case 0 :
290+ mFragment1 .quickToTop ();
291+ break ;
292+ case 1 :
293+ mFragment2 .quickToTop ();
294+ break ;
295+ case 2 :
296+ mFragment3 .quickToTop ();
297+ break ;
298+ }
299+ }
300+
284301 @ Override
285302 public boolean onNavigationItemSelected (MenuItem item ) {
286303 int id = item .getItemId ();
@@ -314,4 +331,17 @@ protected void onDestroy() {
314331 EventBus .getDefault ().unregister (this );
315332 mConfig .saveMainViewPagerPosition (mCurrentPosition );
316333 }
334+
335+
336+ @ Override
337+ public void onClick (View v ) {
338+ switch (v .getId ()){
339+ case R .id .toolbar :
340+ toastShort ("双击标题栏快速返回顶部" );
341+ break ;
342+ case R .id .fab :
343+ quickToTop ();
344+ break ;
345+ }
346+ }
317347}
0 commit comments