Android小程序-Walker侧滑菜单页面(五)

目标效果:

Android小程序-Walker侧滑菜单页面(五)_第1张图片 Android小程序-Walker侧滑菜单页面(五)_第2张图片

在上一个的导航基础上,导航过后进入了主页面,手指向右滑动或者点击左上角的菜单图标,可以显示菜单侧栏,点击某一项可以吐司信息。


素材包:点击打开链接


1.素材包中有个SlideMenu.java页面,新建包并保存该包中。


2.新建leftmenu.xml页面,用于存储侧滑菜单的控件信息。

leftmenu.xml页面:




    
    
	


3.activity_main,xml页面包含侧滑菜单的控件。
activity_main.xml页面:

 

    
        
        
        
        
        
            
            
        
    



4.string.xml页面定义数组保存菜单中的列表信息。
string.xml页面:




    登录
    Settings
    Hello world!
    忘记密码
    请输入用户名
    请输入密码
    登录
    注册
    RegisterActivity
    LoginActivity
    账号
    昵称
    密码
    座右铭(不多于8个字)
    邮箱(**@**.com)
    城市
    步长(cm)
    身高(cm)
    体重(kg)
    希望运动量(步/日)
    终于填完资料了,马上点击注册吧!
    注册
    WelcomeActivity
    GuidActivity
    GiudeActivity

    
        用户登录
        运动测试
        个人信息
        行程记录
        天气查询
        健康栏目
        软件设置
        
    


5.新建Item.java页面,实例ListView中的自定义项目。
Item.java页面:
package com.example.login;

public class Item {
	private int id;
	private String name;
	
	public Item(int id,String name){
		this.id=id;
		this.name=name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}


6.新建menulist_itme.xml页面,用于存储侧滑菜单的自定义控件。
menulist_item.xml页面:



    
    

	
    



7.新建itemAdapter.java页面,用于配置控件和数据源。
itemAdapter.java页面:
package com.example.login;

import java.util.List;

import com.example.login.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class itemAdapter extends ArrayAdapter {    // 适配器,泛型表示想要适配的数据类型

	private int resourceId;

	public itemAdapter(Context context, int textViewResourceId,
			List objects) {                         // 第一个参数是上下文环境,第二个参数是每一项的子布局,第三个参数是数据
		super(context, textViewResourceId, objects);
		resourceId = textViewResourceId;                   //获取子布局
	}

	@Override         //getView方法在每个子项被滚动到屏幕内的时候都会被调用,每次都将布局重新加载一边
	public View getView(int position, View convertView, ViewGroup parent) {//第一个参数表示位置,第二个参数表示缓存布局,第三个表示绑定的view对象
		View view;
		ViewHolder viewHolder;                  //实例ViewHolder,当程序第一次运行,保存获取到的控件,提高效率
		if(convertView==null){  
			viewHolder=new ViewHolder();
			view = LayoutInflater.from(getContext()).inflate(//convertView为空代表布局没有被加载过,即getView方法没有被调用过,需要创建
					resourceId, null);          // 得到子布局,非固定的,和子布局id有关
			viewHolder.ivImage = (ImageView) view.findViewById(R.id.ivImage);//获取控件,只需要调用一遍,调用过后保存在ViewHolder中
			viewHolder.tvName = (TextView) view.findViewById(R.id.tvName);   //获取控件
			view.setTag(viewHolder);
		}else{
			view=convertView;           //convertView不为空代表布局被加载过,只需要将convertView的值取出即可
			viewHolder=(ViewHolder) view.getTag();
		}
		
		Item item = getItem(position);//实例指定位置的水果
		
		viewHolder.ivImage.setImageResource(item.getId());//获得指定位置水果的id
		viewHolder.tvName.setText(item.getName());        //获得指定位置水果的名字
		return view;

	}
} 
class ViewHolder{      //当布局加载过后,保存获取到的控件信息。
	ImageView ivImage;
	TextView tvName;
}


8.编写MainActivity.java页面,处理滑动事件。
MainActivity.java页面:
package com.example.login;

import java.util.ArrayList;
import java.util.List;

import com.example.walkersimulate.util.SlideMenu;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private SlideMenu slideMenu;
	private ImageView ivSwitchSlideMenu;

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

		initMenuList();
		slideMenu = (SlideMenu) findViewById(R.id.slideMenu);
		ivSwitchSlideMenu = (ImageView) findViewById(R.id.switch_slidemenu);
		ivSwitchSlideMenu.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View view) {
				if (slideMenu.isMainScreenShowing()) {// 判断滑动菜单是否已打开,如果未打开
					slideMenu.openMenu(); // 打开滑动菜单
				} else {
					slideMenu.closeMenu();// 关闭滑动菜单
				}
			}
		});
	}

	private void initMenuList() {
		/*设置数据源(图片和文本信息)*/
		int[] icons = { R.drawable.icons_menu_login,
				R.drawable.icons_menu_sport, R.drawable.icons_menu_inform,
				R.drawable.icons_menu_history, R.drawable.icons_menu_weather,
				R.drawable.icons_menu_health, R.drawable.icons_menu_setting };
		final String[] introductons = getResources().getStringArray(
				R.array.menulist);
		/*实例列表*/
		List items = new ArrayList();
		/*向列表中添加图片和对应的文本信息*/
		for (int i = 0; i < icons.length; i++) {
			items.add(new Item(icons[i], introductons[i]));
		}
		ListView lvMenuList = (ListView) findViewById(R.id.lvMenuList);
		/*创建适配器*/
		itemAdapter adapter = new itemAdapter(this, R.layout.menulist_item,
				items);
		/*配置适配器*/
		lvMenuList.setAdapter(adapter);
		/*列表某一项的点击事件*/
		lvMenuList.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView adapterView, View view,
					int position, long id) {
				Toast.makeText(MainActivity.this,
						"你点击了" + introductons[position], Toast.LENGTH_SHORT)
						.show();

			}
		});
	}
}


9.values中新建colors.xml页面,存储各种颜色。
colors.xml页面:



    #333
    #000
    #ffffff
 
    #fffff0
 
    #ffffe0
 
    #ffff00
 
    #fffafa
 
    #fffaf0
 
    #fffacd
 
    #fff8dc
 
    #fff5ee
 
    #fff0f5
 
    #ffefd5
 
    #ffebcd
 
    #ffe4e1
 
    #ffe4c4
 
    #ffe4b5
 
    #ffdead
 
    #ffdab9
 
    #ffd700
 
    #ffc0cb
 
    #ffb6c1
 
    #ffa500
 
    #ffa07a
 
    #ff8c00
 
    #ff7f50
 
    #ff69b4
 
    #ff6347
 
    #ff4500
 
    #ff1493
 
    #ff00ff
 
    #ff00ff
 
    #ff0000
 
    #fdf5e6
 
    #fafad2
 
    #faf0e6
 
    #faebd7
 
    #fa8072
 
    #f8f8ff
 
    #f5fffa
 
    #f5f5f5
 
    #f5f5dc
 
    #f5deb3
 
    #f4a460
 
    #f0ffff
 
    #f0fff0
 
    #f0f8ff
 
    #f0e68c
 
    #f08080
 
    #eee8aa
 
    #ee82ee
 
    #e9967a
 
    #e6e6fa
 
    #e0ffff
 
    #deb887
 
    #dda0dd
 
    #dcdcdc
 
    #dc143c
 
    #db7093
 
    #daa520
 
    #da70d6
 
    #d8bfd8
 
    #d3d3d3
 
    #d3d3d3
 
    #d2b48c
 
    #d2691e
 
    #cd853f
 
    #cd5c5c
 
    #c71585
 
    #c0c0c0
 
    #bdb76b
 
    #bc8f8f
 
    #ba55d3
 
    #b8860b
 
    #b22222
 
    #b0e0e6
 
    #b0c4de
 
    #afeeee
 
    #adff2f
 
    #add8e6
 
    #a9a9a9
 
    #a9a9a9
 
    #a52a2a
 
    #a0522d
 
    #9932cc
 
    #98fb98
 
    #9400d3
 
    #9370db
 
    #90ee90
 
    #8fbc8f
 
    #8b4513
 
    #8b008b
 
    #8b0000
 
    #8a2be2
 
    #87cefa
 
    #87ceeb
 
    #808080
 
    #808080
 
    #808000
 
    #800080
 
    #800000
 
    #7fffd4
 
    #7fff00
 
    #7cfc00
 
    #7b68ee
 
    #778899
 
    #778899
 
    #708090
 
    #708090
 
    #6b8e23
 
    #6a5acd
 
    #696969
 
    #696969
 
    #66cdaa
 
    #6495ed
 
    #5f9ea0
 
    #556b2f
 
    #4b0082
 
    #48d1cc
 
    #483d8b
 
    #4682b4
 
    #4169e1
 
    #40e0d0
 
    #3cb371
 
    #32cd32
 
    #2f4f4f
 
    #2f4f4f
 
    #2e8b57
 
    #228b22
 
    #20b2aa
 
    #1e90ff
 
    #191970
 
    #00ffff
 
    #00ffff
 
    #00ff7f
 
    #00ff00
 
    #00fa9a
 
    #00ced1
 
    #00bfff
 
    #008b8b
 
    #008080
 
    #008000
 
    #006400
 
    #0000ff
 
    #0000cd
 
    #00008b
 
    #000080
 
    #000000
 
    #00000000
 
    #1b000000
    #F7F9F8
    #F7F7F7
    #05000000
 



10.程序运行就可以显示滑动菜单的功能了。


参考代码: 点击打开链接



你可能感兴趣的:(Android项目)