设为首页 |收藏本站
返回 发新帖回复

951

主题

0

好友

3010万

积分

管理员

Rank: 9Rank: 9Rank: 9

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

发表于 2015-6-4 16:25:10 |显示全部楼层

现在侧滑菜单使用很多,大都是通过SlidingMenu实现。现在也可以通过DrawerLayout

创建抽屉布局<32喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48YnIgLz48L3A+PHA+ZnJhbWVudF9jb250ZW50LnhtbDwvcD48cD48L3A+PHByZSBjbGFzcz0="brush:java;">activity_main.xml


  <!-- The main content view -->

    <frameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </frameLayout>

    <!-- The navigation view -->

    <listview android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#ffffcc" android:choicemode="singleChoice" android:divider="@android:color/transparent" android:dividerheight="0dp">
    </listview>

</android.support.v4.widget.drawerlayout>

然后新建一个类继承Fragment类

/**
* ContentFragment.java
* 版权所有(C) 2015
* 创建者:cuiran 2015-1-3 下午3:25:44
*/
package com.cayden.drawerlayoutdemo;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
* TODO
* @author cuiran
* @version 1.0.0
*/
public class ContentFragment extends Fragment {

    private TextView textView;
     
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_content, container, false);
        textView = (TextView) view.findViewById(R.id.textView);
         
        String text = getArguments().getString("text");
        textView.setText(text);
         
        return view;
    }
     
}

完成Activity代码

package com.cayden.drawerlayoutdemo;

import java.util.ArrayList;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class MainActivity extends Activity implements OnItemClickListener {

    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ArrayList<string> menuLists;
    private ArrayAdapter<string> adapter;
    private ActionBarDrawerToggle mDrawerToggle;
    private String mTitle;

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

        mTitle = (String) getTitle();

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);
        menuLists = new ArrayList<string>();
        for (int i = 0; i < 5; i++)
            menuLists.add("菜单0" + i);
        adapter = new ArrayAdapter<string>(this,
                android.R.layout.simple_list_item_1, menuLists);
        mDrawerList.setAdapter(adapter);
        mDrawerList.setOnItemClickListener(this);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                R.drawable.ic_drawer, R.string.drawer_open,
                R.string.drawer_close) {
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActionBar().setTitle("请选择");
                invalidateOptionsMenu(); // Call onPrepareOptionsMenu()
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);
         
        //开启ActionBar上APP ICON的功能
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //将ActionBar上的图标与Drawer结合起来
        if (mDrawerToggle.onOptionsItemSelected(item)){
            return true;
        }
        switch (item.getItemId()) {
        case R.id.action_websearch:
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            Uri uri = Uri.parse("http://www.baidu.com");
            intent.setData(uri);
            startActivity(intent);
            break;
        }
        return super.onOptionsItemSelected(item);
    }
     
    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        //需要将ActionDrawerToggle与DrawerLayout的状态同步
        //将ActionBarDrawerToggle中的drawer图标,设置为ActionBar中的Home-Button的Icon
        mDrawerToggle.syncState();
    }
     
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
     
     
     
     
     
     
     

    @Override
    public void onItemClick(AdapterView<!--?--> arg0, View arg1, int position,
            long arg3) {
        // 动态插入一个Fragment到FrameLayout当中
        Fragment contentFragment = new ContentFragment();
        Bundle args = new Bundle();
        args.putString("text", menuLists.get(position));
        contentFragment.setArguments(args);

        FragmentManager fm = getFragmentManager();
        fm.beginTransaction().replace(R.id.content_frame, contentFragment)
                .commit();

        mDrawerLayout.closeDrawer(mDrawerList);
    }

}
</string></string></string></string>

回复

使用道具 举报

0

主题

0

好友

871

积分

高级会员

Rank: 4

发表于 2015-8-8 19:56:40 |显示全部楼层
好帖要顶,楼主的头像还是不错滴
回复

使用道具 举报

0

主题

0

好友

15

积分

新手上路

Rank: 1

发表于 2015-8-18 16:03:49 |显示全部楼层
初来乍到认真学习
回复

使用道具 举报

0

主题

0

好友

32

积分

新手上路

Rank: 1

发表于 2015-8-22 22:29:14 |显示全部楼层
这个是安卓自带的吧,我用过,挺方便的,
回复

使用道具 举报

返回 发新帖 回复
您需要登录后才可以回帖 登录 | 立即注册

Powered by androidym! X2.5© 2001-2012 Comsenz Inc.( 交换友情链接:qq 87232433 )  
回顶部