package com.wm.remusic.activity; import android.app.Activity; import android.app.ActivityManager; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; import com.bilibili.magicasakura.utils.ThemeUtils; import com.wm.remusic.R; import com.wm.remusic.adapter.MenuItemAdapter; import com.wm.remusic.dialog.CardPickerDialog; import com.wm.remusic.fragment.BitSetFragment; import com.wm.remusic.fragment.MainFragment; import com.wm.remusic.fragment.TimingFragment; import com.wm.remusic.fragmentnet.TabNetPagerFragment; import com.wm.remusic.handler.HandlerUtil; import com.wm.remusic.service.MusicPlayer; import com.wm.remusic.uitl.ThemeHelper; import com.wm.remusic.widget.CustomViewPager; import com.wm.remusic.widget.SplashScreen; import java.util.ArrayList; import java.util.List; public class MainActivity extends BaseActivity implements CardPickerDialog.ClickListener { private ActionBar ab; private ImageView barnet, barmusic, barfriends, search; private ArrayList<ImageView> tabs = new ArrayList<>(); private DrawerLayout drawerLayout; private ListView mLvLeftMenu; private long time = 0; private SplashScreen splashScreen; public void onCreate(Bundle savedInstanceState) { splashScreen = new SplashScreen(this); splashScreen.show(R.drawable.art_login_bg, SplashScreen.SLIDE_LEFT); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().setBackgroundDrawableResource(R.color.background_material_light_1); barnet = (ImageView) findViewById(R.id.bar_net); barmusic = (ImageView) findViewById(R.id.bar_music); barfriends = (ImageView) findViewById(R.id.bar_friends); search = (ImageView) findViewById(R.id.bar_search); barmusic = (ImageView) findViewById(R.id.bar_music); drawerLayout = (DrawerLayout) findViewById(R.id.fd); mLvLeftMenu = (ListView) findViewById(R.id.id_lv_left_menu); setToolBar(); setViewPager(); setUpDrawer(); HandlerUtil.getInstance(this).postDelayed(new Runnable() { @Override public void run() { splashScreen.removeSplashScreen(); } }, 3000); } private void setToolBar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ab = getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); ab.setHomeAsUpIndicator(R.drawable.ic_menu); ab.setTitle(""); } private void setViewPager() { tabs.add(barnet); tabs.add(barmusic); final CustomViewPager customViewPager = (CustomViewPager) findViewById(R.id.main_viewpager); final MainFragment mainFragment = new MainFragment(); final TabNetPagerFragment tabNetPagerFragment = new TabNetPagerFragment(); CustomViewPagerAdapter customViewPagerAdapter = new CustomViewPagerAdapter(getSupportFragmentManager()); customViewPagerAdapter.addFragment(tabNetPagerFragment); customViewPagerAdapter.addFragment(mainFragment); customViewPager.setAdapter(customViewPagerAdapter); customViewPager.setCurrentItem(1); barmusic.setSelected(true); customViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switchTabs(position); } @Override public void onPageScrollStateChanged(int state) { } }); barnet.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { customViewPager.setCurrentItem(0); } }); barmusic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { customViewPager.setCurrentItem(1); } }); search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Intent intent = new Intent(MainActivity.this, NetSearchWordsActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); MainActivity.this.startActivity(intent); } }); } private void setUpDrawer() { LayoutInflater inflater = LayoutInflater.from(this); mLvLeftMenu.addHeaderView(inflater.inflate(R.layout.nav_header_main, mLvLeftMenu, false)); mLvLeftMenu.setAdapter(new MenuItemAdapter(this)); mLvLeftMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 1: drawerLayout.closeDrawers(); break; case 2: CardPickerDialog dialog = new CardPickerDialog(); dialog.setClickListener(MainActivity.this); dialog.show(getSupportFragmentManager(), "theme"); drawerLayout.closeDrawers(); break; case 3: TimingFragment fragment3 = new TimingFragment(); fragment3.show(getSupportFragmentManager(), "timing"); drawerLayout.closeDrawers(); break; case 4: BitSetFragment bfragment = new BitSetFragment(); bfragment.show(getSupportFragmentManager(), "bitset"); drawerLayout.closeDrawers(); break; case 5: if (MusicPlayer.isPlaying()) { MusicPlayer.playOrPause(); } unbindService(); finish(); drawerLayout.closeDrawers(); } } }); } private void switchTabs(int position) { for (int i = 0; i < tabs.size(); i++) { if (position == i) { tabs.get(i).setSelected(true); } else { tabs.get(i).setSelected(false); } } } @Override public void onConfirm(int currentTheme) { if (ThemeHelper.getTheme(MainActivity.this) != currentTheme) { ThemeHelper.setTheme(MainActivity.this, currentTheme); ThemeUtils.refreshUI(MainActivity.this, new ThemeUtils.ExtraRefreshable() { @Override public void refreshGlobal(Activity activity) { //for global setting, just do once if (Build.VERSION.SDK_INT >= 21) { final MainActivity context = MainActivity.this; ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(null, null, ThemeUtils.getThemeAttrColor(context, android.R.attr.colorPrimary)); setTaskDescription(taskDescription); getWindow().setStatusBarColor(ThemeUtils.getColorById(context, R.color.theme_color_primary)); } } @Override public void refreshSpecificView(View view) { } } ); } changeTheme(); } static class CustomViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragments = new ArrayList<>(); public CustomViewPagerAdapter(FragmentManager fm) { super(fm); } public void addFragment(Fragment fragment) { mFragments.add(fragment); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // handle item selection switch (item.getItemId()) { case android.R.id.home: //Menu icon drawerLayout.openDrawer(Gravity.LEFT); return true; default: return super.onOptionsItemSelected(item); } } @Override protected void onDestroy() { super.onDestroy(); splashScreen.removeSplashScreen(); } /** * 双击返回桌面 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if ((System.currentTimeMillis() - time > 1000)) { Toast.makeText(this, "再按一次返回桌面", Toast.LENGTH_SHORT).show(); time = System.currentTimeMillis(); } else { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } return true; } else { return super.onKeyDown(keyCode, event); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); List<Fragment> fragments = getSupportFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { if (fragment != null) { fragment.onRequestPermissionsResult(requestCode,permissions,grantResults); } } } } @Override public void onBackPressed() { super.onBackPressed(); // moveTaskToBack(true); // System.exit(0); // finish(); } }