微信精选_SlidingMenu_头部滑动


************************开始啦,首先记得配置相应的权限,和导入相应的包***************************

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

******************************************dimens.xml中*******************************************************

   <dimen name="shadow_width">5dp</dimen>
    <dimen name="slidingmenu_offset">100dp</dimen>

***********************************************MainActivity.class**********************************************

public class MainActivity extends FragmentActivity {

	private String[] tabs;
	private ImageView title_iv;
	private TextView sd_title_tv;
	 private MyViewPagerIndicator myViewPagerIndicator;  
	    private String[] titles = { "第1页", "第2页", "第3页", "第4页", "第5页", "第6页","第7页","第8页","第9页",     
	            "第10页"};  
	   
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//去头部的方法之一
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		//写一个方法
		initSlidingMenu();
		 myViewPagerIndicator = (MyViewPagerIndicator) findViewById(R.id.myViewPagerIndicator);  
	        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);  
	        myViewPagerIndicator.setViewPager(viewPager);  
	  
	        myViewPagerIndicator.addTitles(titles);  
	  
	        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
				
				@Override
				public int getCount() {
					// TODO Auto-generated method stub
					return titles.length;
				}
				
				@Override
				public Fragment getItem(int arg0) {
					// TODO Auto-generated method stub
					//写一个BaseFragment类,并在BaseFragment类中写一个方法供MainActivity调用
					return BaseFragment.getInstance(titles[arg0]);
				}
			});

	}

	private void initSlidingMenu() {
		// TODO Auto-generated method stub
		// 初始化slidingmenu对象
				SlidingMenu menu = new SlidingMenu(MainActivity.this);
				// 设置侧滑方向为左侧侧滑
				menu.setMode(SlidingMenu.LEFT);

				/*
				 * 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
				 * SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
				 * 不响应触摸事件
				 */

				menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

				// 设置阴影宽度
				menu.setShadowWidthRes(R.dimen.shadow_width);
				// 设置阴影的图片
				menu.setShadowDrawable(R.drawable.ic_launcher);
				// 设置slidingmenu的拉伸出来其他剩余界面大小==内容显示页对应的dp大小
				menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
				// 设置滑动时的渐变程度
				menu.setFadeDegree(0.35f);
				// 使SlidingMenu附加在Activity右边
				// SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
				// SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
				menu.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_WINDOW);
				// 设置sliding管理的布局
				menu.setMenu(R.layout.left_slidingmenu);
				// 在slidingmenu关联布局中查询控件

				sd_title_tv = (TextView) menu.findViewById(R.id.sd_title_tv);

				ListView lv = (ListView) menu.findViewById(R.id.sd_lv);
				tabs = new String[] { "我的首页", "男士游戏", "女士游戏", "我的收藏", "我的评论", "我的书友",
						"设置" };
				lv.setAdapter(new BaseAdapter() {

					public View getView(int position, View convertView, ViewGroup parent) {
						View view = View.inflate(MainActivity.this,
								android.R.layout.simple_list_item_1, null);
						TextView tv = (TextView) view.findViewById(android.R.id.text1);
						tv.setText(tabs[position]);
						return view;
					}

					public long getItemId(int position) {
						// TODO Auto-generated method stub
						return 0;
					}

					public Object getItem(int position) {
						// TODO Auto-generated method stub
						return null;
					}

					public int getCount() {
						// TODO Auto-generated method stub
						return tabs.length;
					}
				});
				title_iv = (ImageView) menu.findViewById(R.id.sd_title_iv);
	}
}

***********************************************activity_layout布局***************************************

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical" >  
  
    <com.example.day28_19rkweixin_slidingmenu.MyViewPagerIndicator  
        android:id="@+id/myViewPagerIndicator"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content" />  
  
    <android.support.v4.view.ViewPager  
        android:id="@+id/viewPager"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent" >  
    </android.support.v4.view.ViewPager>  
  
</LinearLayout>  



***********************************************BaseFragment.class*************************************************

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;

import com.example.day28_19rkweixin_slidingmenu.WeiChatInfo.MyList;
import com.google.gson.Gson;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;

public class BaseFragment extends Fragment {
	
	private View view;
	protected static final int SUCEESS = 0;
	private ListView listView;
	private int index = 1;
	// 定义一个集合
	private ArrayList<MyList> myList = new ArrayList<WeiChatInfo.MyList>();
	Handler handler = new Handler() {
		private MyBaseAdapter myBaseAdapter;

		public void handleMessage(android.os.Message msg) {
			if (msg.what == SUCEESS) {
				progressDialog.dismiss();
				WeiChatInfo chatInfo = (WeiChatInfo) msg.obj;
				// 展示到listView上边 数据成功
				if (chatInfo.error_code == 0) {
					myList.addAll(chatInfo.result.list);
					if (myBaseAdapter == null) {
						myBaseAdapter = new MyBaseAdapter(getActivity(), myList);
						listView.setAdapter(myBaseAdapter);
					} else {
						myBaseAdapter.notifyDataSetChanged();
					}
				}
			}
		};
	};
	private ProgressDialog progressDialog;
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		view = inflater.inflate(R.layout.f0, container,false);
		return view;
	}
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
		
		listView = (ListView) view.findViewById(R.id.listView);
		listView.setOnScrollListener(new OnScrollListener() {

			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				int lastVisiblePosition = view.getLastVisiblePosition();
				if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
						&& lastVisiblePosition == myList.size() - 1) {
					// 加载数据
					index++;
					getData();
					
				}
			}

			@Override
			public void onScroll(AbsListView view, int firstVisibleItem,
					int visibleItemCount, int totalItemCount) {

			}
		});

		getData();
		
		
	}
	protected void getData() {
		// TODO Auto-generated method stub
		progressDialog = new ProgressDialog(getActivity());
		progressDialog.setTitle("伦家正在努力加载...");
		progressDialog.show();
		new Thread() {
			public void run() {
				try {
					// http://v.juhe.cn/weixin/query?key=您申请的KEY
					// 0917c812f187b92e025c9b7c2d4e59b5 pno
					String path = "http://v.juhe.cn/weixin/query?key=654d512d807e422acc4e46a8e41af709&pno="
							+ index;
					URL url = new URL(path);
					HttpURLConnection openConnection = (HttpURLConnection) url
							.openConnection();
					openConnection.setConnectTimeout(5000);
					openConnection.setReadTimeout(5000);
					int responseCode = openConnection.getResponseCode();
					if (responseCode == 200) {
						InputStream inputStream = openConnection
								.getInputStream();
						String parseSteam = StreamUtils.parseStream(inputStream);
						Gson gson = new Gson();
						WeiChatInfo weiChatInfo = gson.fromJson(parseSteam,
								WeiChatInfo.class);
						// 展示到listView上
						handler.obtainMessage(SUCEESS, weiChatInfo)
								.sendToTarget();
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			};
		}.start();
	}
	//写一个静态的方法供MainActivity调用
	public static BaseFragment getInstance(String category) {
		
		BaseFragment baseFragment = new BaseFragment();
		Bundle bundle = new Bundle();
		bundle.putString("category", category);
		baseFragment.setArguments(bundle);
		return baseFragment;

	}
}

**********************************************f0布局***********************************************

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>


*******************************************MyBaseAdapter.class*****************************************

import com.example.day28_19rkweixin_slidingmenu.WeiChatInfo.MyList;
import com.lidroid.xutils.BitmapUtils;

import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyBaseAdapter extends BaseAdapter {
	private Context context;
	private ArrayList<MyList> list;

	public MyBaseAdapter(Context context, ArrayList<MyList> list) {
		this.context = context;
		this.list = list;
	}

	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int arg0) {
		return null;
	}

	@Override
	public long getItemId(int arg0) {
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup viewGroup) {
		View view = View.inflate(context, R.layout.list_item, null);
		ImageView iv_image = (ImageView) view.findViewById(R.id.iv_image);
		TextView tv_title = (TextView) view.findViewById(R.id.tv_title);
		tv_title.setText(list.get(position).title);
		// 实例化bitmapUtils
		BitmapUtils bitmapUtils = new BitmapUtils(context);
		// 将图片地址请求的图片展示到控件上
		bitmapUtils.display(iv_image, list.get(position).firstImg);
		return view;
	}

}



*************************************list_item布局**************************************

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

************************************************MyViewPagerIndicator.class****************************************

import android.annotation.SuppressLint;
import android.content.Context;  
import android.graphics.Color;  
import android.support.v4.view.ViewPager;  
import android.support.v4.view.ViewPager.OnPageChangeListener;  
import android.util.AttributeSet;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.HorizontalScrollView;  
import android.widget.LinearLayout;  
import android.widget.TextView;  
  
public class MyViewPagerIndicator extends HorizontalScrollView implements OnClickListener{  
  
    private LinearLayout linearLayout;  
    private String[] titles;  
    private ViewPager viewPager;  
    ArrayList<View> viewList = new ArrayList<View>();  
  
    @SuppressLint("NewApi")
	public MyViewPagerIndicator(Context context, AttributeSet attrs,  
            int defStyleAttr, int defStyleRes) {  
        super(context, attrs, defStyleAttr, defStyleRes);  
        // TODO Auto-generated constructor stub  
    }  
  
    public MyViewPagerIndicator(Context context, AttributeSet attrs,  
            int defStyle) {  
        super(context, attrs, defStyle);  
        // TODO Auto-generated constructor stub  
        initView();  
    }  
  
    private void initView() {  
        // TODO Auto-generated method stub  
        // 创建线性布局  
                linearLayout = new LinearLayout(getContext());  
                this.addView(linearLayout);  
    }  
  
    public MyViewPagerIndicator(Context context, AttributeSet attrs) {  
        super(context, attrs);  
        // TODO Auto-generated constructor stub  
        initView();  
    }  
  
    public MyViewPagerIndicator(Context context) {  
        super(context);  
        // TODO Auto-generated constructor stub  
        initView();  
    }  
    public void setViewPager(ViewPager viewPager) {  
        this.viewPager = viewPager;  
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {  
  
            @Override  
            public void onPageSelected(int position) {  
                setCurrentItem(position);  
            }  
  
            @Override  
            public void onPageScrolled(int arg0, float arg1, int arg2) {  
  
            }  
  
            @Override  
            public void onPageScrollStateChanged(int arg0) {  
  
            }  
        });  
    }  
    public void addTitles(String[] titles) {  
        this.titles = titles;  
        viewList.clear();  
        for (int i = 0; i < titles.length; i++) {  
            View view = View.inflate(getContext(), R.layout.titles_item, null);  
            TextView tv_titles = (TextView) view.findViewById(R.id.tv_tab);  
            TextView tv_line = (TextView) view.findViewById(R.id.tv_line);  
            viewList.add(view);  
            tv_titles.setText(titles[i]);  
            if (i == 0) {  
                tv_titles.setTextColor(Color.RED);  
                tv_line.setVisibility(View.VISIBLE);  
            } else {  
                tv_titles.setTextColor(Color.BLACK);  
                tv_line.setVisibility(View.GONE);  
            }  
            view.setId(i);  
            view.setOnClickListener(this);  
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(  
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
            linearLayout.addView(view, params);  
        }  
        }  
  
    @Override  
    public void onClick(View v) {  
        // TODO Auto-generated method stub  
        setCurrentItem(v.getId());  
    }  
  
    private void setCurrentItem(int position) {  
        // TODO Auto-generated method stub  
        this.setScrollBarStyle(HorizontalScrollView.GONE);  
        int width = linearLayout.getChildAt(position).getWidth();  
        this.scrollTo(width * position, 0);  
  
        for (int i = 0; i < titles.length; i++) {  
            View view = viewList.get(i);  
            TextView tv_titles = (TextView) view.findViewById(R.id.tv_tab);  
            TextView tv_line = (TextView) view.findViewById(R.id.tv_line);  
            if (position == i) {  
                // 设置传递过来的viewpager的当前页  
                viewPager.setCurrentItem(i);  
                tv_titles.setTextColor(Color.RED);  
                tv_line.setVisibility(View.VISIBLE);  
            } else {  
                tv_titles.setTextColor(Color.BLACK);  
                tv_line.setVisibility(View.GONE);  
            }  
        }  
    }  
  
}  

*******************************************StreamUtils工具类*********************************************

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class StreamUtils {

	public static String parseStream(InputStream inputStream){
		try {
			ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
			byte [] b=new byte[1024];
			int len=0;
			while((len=inputStream.read(b))!=-1){
				arrayOutputStream.write(b, 0, len);
			}
			return arrayOutputStream.toString("utf-8");
		} catch (Exception e) {
			// TODO: handle exception
		}
		return null;
	}

}

************************************微信精选Bean*******************************************

public class WeiChatInfo {

	public int error_code;
	public String reason;
	public WeiChatResult result;

	public class WeiChatResult {
		public int pno;
		public int ps;
		public int totalPage;
		public ArrayList<MyList> list;

	}
	public class MyList{
		public String firstImg;
		public String id;
		public String mark;
		public String title;
		public String source;
		public String url;
	}
}

*************************************left_slidingmenu.xml布局**********************************************

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/k0"
     >

	<TextView
	    android:id="@+id/sd_title_tv"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_alignParentLeft="true"
	    android:layout_alignParentTop="true"
	    android:layout_marginLeft="116dp"
	    android:layout_marginTop="60dp"
	    android:textColor="#0000ff"
	    android:text="$小武$" />

	<ImageView
	    android:id="@+id/sd_title_iv"
	    android:layout_width="50dp"
	    android:layout_height="50dp"
	    android:layout_alignBottom="@id/sd_title_tv"
	    android:layout_alignParentLeft="true"
	    android:layout_marginLeft="45dp"
	    android:background="@drawable/ae" />
	<ListView
	    android:id="@+id/sd_lv"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:divider="#ccc"
	    android:dividerHeight="1dp"
	    android:layout_below="@id/sd_title_iv"
	    android:layout_marginLeft="45dp"
	    ></ListView>
</RelativeLayout>


*****************************************titles_items.xml***头部布局**********************************************

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:orientation="vertical" >  
  
    <TextView  
        android:id="@+id/tv_tab"  
        android:layout_width="wrap_content"  
        android:padding="10dp"  
        android:layout_height="wrap_content"  
        android:textSize="20sp"  
        android:text="哈哈哈哈" />  
  
    <TextView  
        android:id="@+id/tv_line"  
        android:layout_width="match_parent"  
        android:layout_height="10dp"  
        android:background="#ff0000" />  
  
</LinearLayout>  

*******************************************OK*************************************************




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值