package com.wb.sc.mk.main; import java.util.ArrayList; import java.util.List; import net.simonvt.menudrawer.MenuDrawer; import net.simonvt.menudrawer.Position; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnDismissListener; import android.content.Intent.ShortcutIconResource; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; import android.content.res.Configuration; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.umeng.message.IUmengRegisterCallback; import com.umeng.message.IUmengUnregisterCallback; import com.umeng.message.PushAgent; import com.umeng.update.UmengUpdateAgent; import com.wb.sc.R; import com.wb.sc.activity.base.BaseActivity; import com.wb.sc.adapter.LeftMenuAdapter; import com.wb.sc.bean.Item; import com.wb.sc.mk.personal.MyComplaintActivity; import com.wb.sc.mk.personal.MyExpressActivity; import com.wb.sc.mk.personal.MyPostActivity; import com.wb.sc.mk.personal.MyRepairActivity; import com.wb.sc.mk.personal.PersonalInfoActivity; import com.wb.sc.mk.personal.RegisterInviteActivity; import com.wb.sc.mk.personal.SettingActivity; import com.wb.sc.util.Constans; import com.wb.sc.util.PreferencesUtils; import com.wb.sc.widget.CustomDialog; import com.wb.sc.widget.CustomDialog.DialogFinish; public class MainActivity extends BaseActivity implements OnClickListener, LeftMenuAdapter.MenuListener { private Class fragments[] = {HomeFragment.class, FindFragment.class, PostFragment.class, ButlerFragment.class, PersonalFragment.class,}; private ViewGroup homeVg; private ViewGroup discoverVg; private ViewGroup postVg; private ViewGroup stewardVg; private ViewGroup centerVg; private List<View> menuViewList; private ViewPager contentVp; private MenuAdapter menuAdapter; private Fragment[] instanceFragments; protected MenuDrawer mMenuDrawer; protected LeftMenuAdapter mAdapter; protected ListView mList; private int mActivePosition = 0; private static final String STATE_ACTIVE_POSITION = "net.simonvt.menudrawer.samples.LeftDrawerSample.activePosition"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); initMenuDraw(savedInstanceState); createShortcut(); getIntentData(); initView(); setUmeng(); } public void getIntentData() { } public void createShortcut () { boolean isCancel = PreferencesUtils.getBoolean(this, Constans.CANCEL_SHORT_CUT_REMIND); if (!hasShortCut() && isCancel) { CustomDialog dialog = new CustomDialog(this, R.style.mystyle, R.layout.shortcut_dialog, new DialogFinish(){ @Override public void getFinish() { addShortcut(); }}); dialog.show(); dialog.setOnDismissListener(new OnDismissListener() { //临时处理 @Override public void onDismiss(DialogInterface arg0) { PreferencesUtils.putBoolean(MainActivity.this, Constans.CANCEL_SHORT_CUT_REMIND, true); } }); } } public void initMenuDraw(Bundle inState) { if (inState != null) { mActivePosition = inState.getInt(STATE_ACTIVE_POSITION); } mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.Type.BEHIND, Position.START, MenuDrawer.MENU_DRAG_CONTENT); List<Object> items = new ArrayList<Object>(); items.add(new Item("Item 1", R.drawable.ic_launcher)); items.add(new Item("Item 2", R.drawable.ic_launcher)); // items.add(new Category("Cat 1")); items.add(new Item("Item 3", R.drawable.ic_launcher)); items.add(new Item("Item 4", R.drawable.ic_launcher)); // items.add(new Category("Cat 2")); items.add(new Item("Item 5", R.drawable.ic_launcher)); items.add(new Item("Item 6", R.drawable.ic_launcher)); // items.add(new Category("Cat 3")); items.add(new Item("Item 7", R.drawable.ic_launcher)); items.add(new Item("Item 8", R.drawable.ic_launcher)); // items.add(new Category("Cat 4")); items.add(new Item("Item 9", R.drawable.ic_launcher)); items.add(new Item("Item 10", R.drawable.ic_launcher)); mList = new ListView(this); mAdapter = new LeftMenuAdapter(this, items); mAdapter.setListener(this); mAdapter.setActivePosition(mActivePosition); mList.setAdapter(mAdapter); mList.setOnItemClickListener(mItemClickListener); mMenuDrawer.setMenuView(mList); mMenuDrawer.setContentView(R.layout.activity_main); mMenuDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN); mMenuDrawer.setSlideDrawable(R.drawable.ic_drawer); mMenuDrawer.setDrawerIndicatorEnabled(true); } private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mActivePosition = position; mMenuDrawer.setActiveView(view, position); mAdapter.setActivePosition(position); // onMenuItemClicked(position, (Item) mAdapter.getItem(position)); } }; public void initView() { menuViewList = new ArrayList<View>(); homeVg = (ViewGroup) findViewById(R.id.home); homeVg.setOnClickListener(this); menuViewList.add(homeVg); discoverVg = (ViewGroup) findViewById(R.id.discover); discoverVg.setOnClickListener(this); menuViewList.add(discoverVg); postVg = (ViewGroup) findViewById(R.id.post); postVg.setOnClickListener(this); menuViewList.add(postVg); stewardVg = (ViewGroup) findViewById(R.id.steward); stewardVg.setOnClickListener(this); menuViewList.add(stewardVg); centerVg = (ViewGroup) findViewById(R.id.center); centerVg.setOnClickListener(this); menuViewList.add(centerVg); setBottomState(homeVg); instanceFragments = new Fragment[fragments.length]; contentVp = (ViewPager) findViewById(R.id.content_pager); menuAdapter = new MenuAdapter(getSupportFragmentManager()); contentVp.setAdapter(menuAdapter); contentVp.setOffscreenPageLimit(1); contentVp.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { setBottomState(menuViewList.get(position)); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } private void setUmeng() { // 检测更新 UmengUpdateAgent.update(this); UmengUpdateAgent.setUpdateAutoPopup(true); // 开启消息推送 PushAgent mPushAgent = PushAgent.getInstance(this); if(!mPushAgent.isEnabled()) { mPushAgent.enable(mRegisterCallback); } } public IUmengRegisterCallback mRegisterCallback = new IUmengRegisterCallback() { @Override public void onRegistered(String registrationId) { } }; public IUmengUnregisterCallback mUnregisterCallback = new IUmengUnregisterCallback() { @Override public void onUnregistered(String registrationId) { } }; @Override public void onClick(View v) { switch(v.getId()) { case R.id.home: setBottomState(homeVg); contentVp.setCurrentItem(0); break; case R.id.discover: setBottomState(discoverVg); contentVp.setCurrentItem(1); break; case R.id.post: setBottomState(postVg); contentVp.setCurrentItem(2); break; case R.id.steward: setBottomState(stewardVg); contentVp.setCurrentItem(3); break; case R.id.center: setBottomState(centerVg); contentVp.setCurrentItem(4); break; } } private void setBottomState(View v) { for(View view : menuViewList) { view.setSelected(false); } v.setSelected(true); } // public void replaceFragment(Fragment fragment, boolean toBack) { // FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); // ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); // ft.replace(R.id.realtabcontent, fragment); // if(toBack) { // ft.addToBackStack(""); // } // ft.commit(); // } class MenuAdapter extends FragmentPagerAdapter { public MenuAdapter(android.support.v4.app.FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fg = null; try { fg = (Fragment) Class.forName(fragments[position].getName()).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } instanceFragments[position] = fg; return fg; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // instanceFragments[position] = null; super.destroyItem(container, position, object); } @Override public int getCount() { return fragments.length; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { int position = contentVp.getCurrentItem(); Fragment fragment = instanceFragments[position]; if(fragment != null) { fragment.onActivityResult(requestCode, requestCode, data); } } public void personalInfo(View view) { Intent intent = new Intent(this, PersonalInfoActivity.class); startActivity(intent); } public void myComplaint(View view) { Intent intent = new Intent(this, MyComplaintActivity.class); startActivity(intent); } public void myRepair(View view) { Intent intent = new Intent(this, MyRepairActivity.class); startActivity(intent); } public void myForum(View view) { Intent intent = new Intent(this, MyPostActivity.class); startActivity(intent); } public void myExpress(View view) { Intent intent = new Intent(this, MyExpressActivity.class); startActivity(intent); } public void setting(View view) { Intent intent = new Intent(this, SettingActivity.class); startActivity(intent); } public void registerInvite(View view) { Intent intent = new Intent(this, RegisterInviteActivity.class); startActivity(intent); } /** * 处理在拍照时屏幕翻转的问题 */ public void onConfigurationChanged(Configuration newConfig) { if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { Configuration o = newConfig; o.orientation = Configuration.ORIENTATION_PORTRAIT; newConfig.setTo(o); } super.onConfigurationChanged(newConfig); } @Override public void onActiveViewChanged(View v) { // TODO Auto-generated method stub } /***************************陈侣说取消启动页快捷方式只提示一次*********************************************/ public boolean hasShortCut() { Uri uri = null; String spermi = getAuthorityFromPermission(this,"READ_SETTINGS"); if(getSystemVersion() < 8){ uri = Uri.parse("content://"+spermi+"/favorites?notify=true"); }else{ uri = Uri.parse("content://"+spermi+"/favorites?notify=true"); } final ContentResolver cr = getContentResolver(); Cursor cursor = cr.query(uri,new String[] {"title","iconResource" },"title=?", new String[] {getString(R.string.app_name)}, null); if (cursor != null&& cursor.getCount() > 0) { cursor.close(); return true; }else { return false; } } public String getAuthorityFromPermission(Context context, String permission){ if (permission == null) return null; List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS); if (packs != null) { for (PackageInfo pack : packs) { ProviderInfo[] providers = pack.providers; if (providers != null) { for (ProviderInfo provider : providers) { if (provider.readPermission != null) { if ((provider.readPermission).contains(permission)){ return provider.authority; } } } } } } return null; } public int getSystemVersion(){ return android.os.Build.VERSION.SDK_INT; } private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); shortcut.putExtra("duplicate", false); //不允许重复创建 Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); shortcutIntent.setClassName(this, this.getClass().getName()); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); //快捷方式的图标 ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); sendBroadcast(shortcut); } }