package com.pets.center; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.ActionBar.TabListener; import android.app.FragmentTransaction; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import android.widget.Toast; import com.example.actionbar.R; import com.pets.activity.LoginActivity; import com.pets.activity.SettingsActivity; import com.pets.ui.ProgressMenuItem; import com.pets.util.DialogCallBack; import com.pets.util.DialogUtils; public class MainActivity extends FragmentActivity { private static List<Fragment> tabs; private ViewPager pager; private ActionBar bar; private PetViewPagerAdapter adapter; // 刷新菜单栏 private ProgressMenuItem progressMenuItem; /** * 主界面公共部分,点击后刷新页面信息 */ private ProgressMenuItem.ProgressCallback progressCallback = new ProgressMenuItem.ProgressCallback() { @Override public void onRefleshClick() { Fragment fragment = adapter.getItem(bar .getSelectedNavigationIndex()); if (fragment instanceof OnRefleshListener) { OnRefleshListener listener = (OnRefleshListener) fragment; listener.onReflesh(progressMenuItem); listener.setHandler(progressMenuItem.getHandler()); } } }; private OnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener() { public void onPageSelected(int position) { getActionBar().setSelectedNavigationItem(position); }; }; /** * 点击返回键退出确认 */ private DialogCallBack exitConfim = new DialogCallBack() { @Override public void cancel() { } @Override public void confirm() { MainActivity.this.finish(); } }; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.pets_main); pager = (ViewPager) findViewById(R.id.pager); tabs = new ArrayList<Fragment>(3); tabs.add(new PetDailyShareFragment()); tabs.add(new PostFragment()); tabs.add(new PostFragment()); // 初始化actionbar this.initActionBar(true, ActionBar.NAVIGATION_MODE_TABS); this.initTabs(getResources().getStringArray(R.array.main_pager_str)); // 初始化viewPager adapter = new PetViewPagerAdapter(getSupportFragmentManager(), tabs); this.initPager(adapter); } private void initPager(PagerAdapter adapter) { pager.setOnPageChangeListener(pageChangeListener); pager.setAdapter(adapter); } protected void initActionBar(boolean homeAsUp, int mode) { bar = getActionBar(); // bar.setDisplayHomeAsUpEnabled(homeAsUp); bar.setNavigationMode(mode); } /** * 移动可选菜单栏 */ public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.pet_config, menu); progressMenuItem = (ProgressMenuItem) menu.findItem( R.id.config_progress).getActionView(); progressMenuItem.setProgressCallback(progressCallback); MenuItem item = menu.findItem(R.id.news); item.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { NotificationCompat.Builder mBuilder = new NotificationCompat.Builder( MainActivity.this).setSmallIcon(R.drawable.cai) .setContentTitle("系统信息").setContentText("你的账号在其他地方登录了"); mBuilder.setProgress(100, 40, true); Intent resultIntent = new Intent(MainActivity.this, MainActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder .create(MainActivity.this); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(resultPendingIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // mId allows you to update the notification later on. mNotificationManager.notify(1, mBuilder.build()); return true; } }); setIconEnable(menu, true); return super.onCreateOptionsMenu(menu); } // enable为true时,菜单添加图标有效,enable为false时无效。4.0系统默认无效 private void setIconEnable(Menu menu, boolean enable) { try { Class<?> clazz = Class .forName("com.android.internal.view.menu.MenuBuilder"); Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class); m.setAccessible(true); // MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征) m.invoke(menu, enable); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { Intent intent = null; switch (item.getItemId()) { case R.id.personCenter: return true; case R.id.systemConfig: intent = new Intent(this, SettingsActivity.class); startActivity(intent); return true; case R.id.userlogin: intent = new Intent(this, LoginActivity.class); startActivity(intent); return true; case R.id.newDailyShare: // intent = new Intent(Intent.ACTION_GET_CONTENT); // intent.setType("image/*");// 文件类型 // Intent wrapperIntent = Intent.createChooser(intent, "打开方式"); // startActivityForResult(wrapperIntent, 0); intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File out = new File(Environment.getExternalStorageDirectory(), "camera.jpg"); Uri uri = Uri.fromFile(out); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, 0); // intent = new Intent(this, ComeraActivity.class); // startActivity(intent); return true; } // View view = findViewById(item.getItemId()); // // PopupMenu menu = new PopupMenu(getApplicationContext(), view); // Menu menus = menu.getMenu(); // // MenuItem personCenter = menus.add(R.string.personCenter); // personCenter.setTitle("个人中心"); // Intent centerIntent = new Intent(this, SystemConfigActivity.class); // centerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // personCenter.setIntent(centerIntent); // personCenter.setIcon(R.drawable.gnome_preferences_system); // // MenuItem config = menus.add(R.string.petConfig); // config.setIcon(R.drawable.gnome_preferences_system); // config.setTitle("系统设置"); // config.setIntent(new Intent(this, SystemConfigActivity.class)); // // menu.show(); return super.onOptionsItemSelected(item); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { Uri url = intent.getData(); Toast.makeText(this, "获取到的文件位置:" + url.toString(), Toast.LENGTH_LONG) .show(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { DialogUtils.showDialog(this, "系统提示", "确认退出?", exitConfim); return false; } return super.onKeyUp(keyCode, event); } /** * 初始化标签,并设置监听器与文本信息 * * @param tabs * @param texts */ private void initTabs(String[] texts) { TabListener listen = new TabListener() { @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { pager.setCurrentItem(tab.getPosition()); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } }; for (String text : texts) { Tab tab = bar.newTab(); tab.setTabListener(listen); tab.setText(text); bar.addTab(tab); } } }