package com.example.qingyangdemo; import java.util.List; import com.example.qingyangdemo.adapter.DiskAdapter; import com.example.qingyangdemo.base.AppException; import com.example.qingyangdemo.base.AppManager; import com.example.qingyangdemo.base.BaseActivity; import com.example.qingyangdemo.bean.Disk; import com.example.qingyangdemo.common.UIHelper; import com.example.qingyangdemo.common.UpdateManager; import com.example.qingyangdemo.fragment.CenterFragment; import com.example.qingyangdemo.net.SocketClient; import com.example.qingyangdemo.ui.CustomDialog; import android.app.Fragment; import android.app.FragmentManager; import android.content.res.Configuration; import android.graphics.drawable.BitmapDrawable; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout.DrawerListener; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends BaseActivity implements OnClickListener { private onKeyDownListener keyDownListener; // 抽屉布局 private DrawerLayout mDrawerLayout; // 抽屉list private ListView mDrawerList; private LinearLayout left_drawer_LinearLayout; private LinearLayout open_llt; // 菜单按钮 private ImageButton fragment_menu; private DiskAdapter diskAdapter; private String title[] = { "用户登陆", "注销登陆", "系统设置", "控制鼠标", "电脑关机", "退出程序" }; private PopupWindow popupWindow; private View view; private List<Disk> diskList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (application.isTablet()) { view = View.inflate(this, R.layout.main_activity_tablet, null); } else { view = View.inflate(this, R.layout.main_activity, null); } setContentView(view); // 网络连接判断 if (!application.isNetworkConnected()) { UIHelper.ToastMessage(this, R.string.network_not_connected); finish(); } else { if (application.isCheckUp()) { UpdateManager.getUpdateManager().checkAppUpdate(this, false); } } application.initLoginInfo(); if (!application.isTablet()) { initPortpaitView(); } initView(); searchViewData(); } /** * 查询view的数据 */ public void searchViewData() { putAsyncTask(new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { try { diskList = SocketClient.getDiskInfo(application); } catch (AppException e) { return false; } return true; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (result) { diskAdapter.setList(diskList); diskAdapter.notifyDataSetChanged(); if (diskAdapter.getSelectedPosition() == -1) { diskAdapter.setSelectedPosition(0); selectItem(0); } } else { UIHelper.ToastMessage(MainActivity.this, R.string.msg_search_error); } } }); } @Override public void onConfigurationChanged(Configuration newConfig) { // 横竖屏拦截,我测试总是不好使。不拦截了 竖屏就一直竖屏, 横屏就一直横屏 // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); if (application.isLandscape()) { Log.v(AppException.LOG_TAG, "现在是横屏状态"); } else { Log.v(AppException.LOG_TAG, "现在是竖屏状态"); } } /** * 初始化视图 * * @param view */ public void initView() { fragment_menu = (ImageButton) findViewById(R.id.fragment_menu); fragment_menu.setOnClickListener(this); mDrawerList = (ListView) findViewById(R.id.left_drawer); diskAdapter = new DiskAdapter(this); mDrawerList.setAdapter(diskAdapter); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); } /** * 初始化竖向视图 * * @param view * @return */ public View initPortpaitView() { mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // 遮盖主要内容的阴影 mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); left_drawer_LinearLayout = (LinearLayout) view .findViewById(R.id.left_drawer_LinearLayout); open_llt = (LinearLayout) findViewById(R.id.open_llt); open_llt.setOnClickListener(this); mDrawerLayout.setDrawerListener(new MyDrawerListener()); return view; } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { diskAdapter.setSelectedPosition(position); selectItem(position); } } private void selectItem(int position) { Bundle args = new Bundle(); args.putString(CenterFragment.DISK_PATH, diskAdapter.getList().get(position).getPath()); Fragment fragment = new CenterFragment(); fragment.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.content_frame, fragment).commit(); mDrawerList.setItemChecked(position, true); if (!application.isTablet()) { mDrawerLayout.closeDrawer(left_drawer_LinearLayout); } } /** * 抽屉监听 */ private class MyDrawerListener implements DrawerListener { @Override public void onDrawerClosed(View arg0) { // TODO Auto-generated method stub } @Override public void onDrawerOpened(View arg0) { // TODO Auto-generated method stub } @Override public void onDrawerSlide(View arg0, float arg1) { // TODO Auto-generated method stub } @Override public void onDrawerStateChanged(int arg0) { // TODO Auto-generated method stub } }; @Override public void onClick(View v) { switch (v.getId()) { // 打开/关闭抽屉 case R.id.open_llt: if (mDrawerLayout.isDrawerOpen(left_drawer_LinearLayout)) { mDrawerLayout.closeDrawer(left_drawer_LinearLayout); } else { mDrawerLayout.openDrawer(Gravity.LEFT); } break; // 菜单按钮 case R.id.fragment_menu: int x = 0; int y = 0; if (!application.isTablet()) { x = screenWidth - v.getRight() + 20; y = v.getBottom() + 60; } else { x = screenWidth - v.getRight() + 10; y = v.getBottom() + 10; } showPopMenu(x, y); break; } } /** * 显示菜单 * * @param x * @param y */ public void showPopMenu(int x, int y) { LinearLayout layout = (LinearLayout) LayoutInflater.from( MainActivity.this).inflate(R.layout.pop_menu, null); ListView listView = (ListView) layout.findViewById(R.id.menu_list); listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.pop_menu_item, R.id.tv_text, title)); popupWindow = new PopupWindow(MainActivity.this); popupWindow.setBackgroundDrawable(new BitmapDrawable()); if (application.isTablet()) { popupWindow.setWidth(screenWidth / 4); } else { popupWindow.setWidth(screenWidth / 3); } popupWindow.setHeight(LayoutParams.WRAP_CONTENT); popupWindow.setOutsideTouchable(true); popupWindow.setFocusable(true); popupWindow.setContentView(layout); // 需要指定Gravity,默认情况是center popupWindow.showAtLocation(view, Gravity.RIGHT | Gravity.TOP, x, y); listView.setOnItemClickListener(new MenuItemClick()); } /** * 菜单每项点击事件 * * @author R21 * */ private class MenuItemClick implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: UIHelper.showLoginDialog(MainActivity.this); break; case 1: final CustomDialog dialog = new CustomDialog(MainActivity.this, getCurrentFocus()); dialog.setTitle("提示"); dialog.setMessage("确定注销登录?"); dialog.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.show(); break; case 2: startActivity(SettingActivity.class); break; case 3: startActivity(ControlMouseActivity.class); break; case 4: startActivity(PowerOffActivity.class); break; case 5: final CustomDialog outdialog = new CustomDialog( MainActivity.this, getCurrentFocus()); outdialog.setTitle("提示"); outdialog.setMessage("确定退出?"); outdialog.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(View v) { outdialog.dismiss(); AppManager.getAppManager().AppExit(MainActivity.this); } }); outdialog.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(View v) { outdialog.dismiss(); } }); outdialog.show(); break; } popupWindow.dismiss(); popupWindow = null; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { keyDownListener.fragmentKeyDown(keyCode, event); return false; } return super.onKeyDown(keyCode, event); } @Override public void onAttachFragment(Fragment fragment) { keyDownListener = (onKeyDownListener) fragment; super.onAttachFragment(fragment); } /** * fragment keyDown回调 * * @author 赵庆洋 * */ public interface onKeyDownListener { public void fragmentKeyDown(int keyCode, KeyEvent event); } }