zoukankan      html  css  js  c++  java
  • 第二次迭代感想

    这次我认领的任务是主界面功能的实现,这个项目相对前一个认领项目稍稍有些难度,所以花的时间和精力业更多了,而且有些地方跟本组同学发生了思想上擦出了火花,但是最后我们讨论并解决了。

    这是这次我任务的java代码:

    public class MainActivity extends ActionBarActivity implements View.OnClickListener{

    private TextView txt_waimai;
    private TextView txt_find;
    private TextView txt_order;
    private FrameLayout ly_content;

    private HomeFragment homeFragment;
    private FindFragment findFragment;
    private OrderFragment orderFragment;
    private android.app.FragmentManager fManager ;

    private Toolbar toolbar;
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToggle;
    private ListView lvLeftMenu;
    private String[] lvs = {"账户信息", "我的余额", "我的收藏", "服务中心", "系统设置"};//可以放入String中,在拿取出来
    private ArrayAdapter arrayAdapter;

    private ActionBar actionBar ;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    fManager = getFragmentManager();
    bindViews();
    txt_waimai.performClick(); //模拟一次点击,既进去后选择第一项


    findViews(); //获取控件
    toolbar.setTitle("Foodie");//设置Toolbar标题
    toolbar.setTitleTextColor(Color.parseColor("#FFFFFF")); //设置标题颜色
    // actionBar= getActionBar();
    setSupportActionBar(toolbar) ;//支持ActionBar


    //创建返回键,并实现打开关/闭监听
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar,
    R.string.open_drawer, R.string.close_drawer) {
    @Override
    public void onDrawerOpened(View drawerView) {
    super.onDrawerOpened(drawerView);
    }
    @Override
    public void onDrawerClosed(View drawerView) {
    super.onDrawerClosed(drawerView);
    }
    };
    mDrawerToggle.syncState();
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    //设置菜单列表,写一个listView布局将其优化
    arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, lvs);
    lvLeftMenu.setAdapter(arrayAdapter);

    lvLeftMenu.setOnItemClickListener(new DrawerItemClickListener());

    // setStatusBar();//设置沉浸式状态栏,5.0.1系统有点Bug

    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
    switch (item.getItemId()){
    case R.id.action_search:
    startActivity(new Intent(getApplicationContext(), Searchctivity.class));
    break;
    case R.id.toolBar_btn_login:
    startActivity(new Intent(getApplicationContext(),LoginActivity.class));
    break;
    }
    return false;
    }
    });

    }

    //将ActionBar添加进来
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = new MenuInflater(this) ;
    inflater.inflate(R.menu.activity_main,menu);
    return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    if (item.isCheckable()){
    item.setChecked(true);
    }
    return super.onOptionsItemSelected(item);
    }

    //UI组件初始化与事件绑定
    private void bindViews() {
    txt_waimai = (TextView) findViewById(R.id.txt_waimai);
    txt_find = (TextView) findViewById(R.id.txt_find);
    txt_order = (TextView) findViewById(R.id.txt_order);

    ly_content = (FrameLayout) findViewById(R.id.ly_content);

    txt_waimai.setOnClickListener(this);
    txt_find.setOnClickListener(this);
    txt_order.setOnClickListener(this);
    }


    //重置所有文本的选中状态
    private void setSelected(){
    txt_waimai.setSelected(false);
    txt_find.setSelected(false);
    txt_order.setSelected(false);
    }

    //隐藏所有Fragment
    private void hideAllFragment(FragmentTransaction fragmentTransaction){
    if(homeFragment != null)fragmentTransaction.hide(homeFragment);
    if(findFragment != null)fragmentTransaction.hide(findFragment);
    if(orderFragment != null)fragmentTransaction.hide(orderFragment);
    }

    @Override
    public void onClick(View v) {
    FragmentTransaction fTransaction = fManager.beginTransaction();
    hideAllFragment(fTransaction);
    switch (v.getId()){
    case R.id.txt_waimai:
    setSelected();
    txt_waimai.setSelected(true);
    if(homeFragment == null){
    homeFragment = new HomeFragment();
    fTransaction.add(R.id.ly_content,homeFragment);
    }else{
    fTransaction.show(homeFragment);
    }
    break;
    case R.id.txt_find:
    setSelected();
    txt_find.setSelected(true);
    if(findFragment == null){
    findFragment = new FindFragment();
    fTransaction.add(R.id.ly_content,findFragment);
    }else{
    fTransaction.show(findFragment);
    }
    break;
    case R.id.txt_order:
    setSelected();
    txt_order.setSelected(true);
    if(orderFragment == null){
    orderFragment = new OrderFragment();
    fTransaction.add(R.id.ly_content,orderFragment);
    }else{
    fTransaction.show(orderFragment);
    }
    break;
    }
    fTransaction.commit();
    }

    /**
    * ListView上的Item点击事件
    *
    */
    private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    selectItem(position);
    }
    }

    /**
    * 切换Item点击显示的页面
    *
    * @param position
    */
    private void selectItem(int position) {
    switch (position){
    case 0:
    startActivity(new Intent(this,AccountActivity.class));
    break;
    case 1:

    break;
    case 2:

    break;
    case 3:

    break;
    case 4:
    startActivity(new Intent(this,SettingActivity.class));
    break;
    default:
    break;
    }
    }

    /**
    * 获取控件
    */
    private void findViews() {
    toolbar = (Toolbar) findViewById(R.id.tl_custom);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.dl_left);
    lvLeftMenu = (ListView) findViewById(R.id.lv_left_menu);
    }


    /**
    * 设置沉浸式状态栏,需4.4版本以上
    */
    // protected void setStatusBar() {
    // StatusBarUtil.setColor(this, getResources().getColor(R.color.colorPrimary));
    // StatusBarUtil.setColorForDrawerLayout(this, (DrawerLayout) findViewById(R.id.dl_left), getResources()
    // .getColor(R.color.colorPrimary));
    // }

    /**
    * 双击退出,根据时间来判断
    */
    long waitTime = 2000;
    long touchTime = 0;
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {
    long currentTime = System.currentTimeMillis();
    if((currentTime-touchTime)>=waitTime) {
    //让Toast的显示时间和等待时间相同
    Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
    touchTime = currentTime;
    }else {
    System.exit(0);//会跳屏,关闭时会出现黑屏,需要优化,不能用finish()
    }
    return true;
    }
    return super.onKeyDown(keyCode, event);
    }
    }
  • 相关阅读:
    Linux小技巧1:如何关闭Root用户SSH登陆
    PXE DHCP获取IP与传统DHCP获取IP地址的区别
    记录一次Tomcat内存泄露原因的追溯
    ZTE交换路由设备配置的备份与恢复
    启动oracle的步骤
    打开dbca,创建oracle数据库
    【转】ITPUB成员常去的几个站
    【mysql】常用命令总结
    【SQL Server】Count(*) vs Count(1) 区别
    表的设计和主键选择
  • 原文地址:https://www.cnblogs.com/huangxi1234/p/6832635.html
Copyright © 2011-2022 走看看