头部滑动加Fragment滑动和集合的增删小demo

来源:互联网 发布:淘宝商城三只松鼠 编辑:程序博客网 时间:2024/06/02 14:43


***********本DEMO中有可滑动的头部关联着ViewPager和Fragment的滑动效果,还有集合的增加和删除**************

***************Fragment1和Fragment2中有内容,其他4个Fragment无内容,创建后关联布局即可*************


*********************************************Fragment1.class**********************************

import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;public class Fragment1 extends Fragment {private View view;private ListView listView;String [] s=new String []{"九三简介", "九三章程", "领导成员", "主席、副主席", "常务委员", "中央委员"};@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {view = inflater.inflate(R.layout.f1, container,false);return view;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);//发现控件listView = (ListView) view.findViewById(R.id.listView);//listView适配器listView.setAdapter(new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubTextView textView = new TextView(getActivity());textView.setText(s[position]);return textView;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn s.length;}});}}


**********************************************************Fragment2.class*******************************************************
import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.view.PagerAdapter;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ListAdapter;import android.widget.TextView;public class Fragment2 extends Fragment {private View view;private GridView gridView1;private GridView gridView2;ArrayList<String> list=new ArrayList<String>();ArrayList<String> lists=new ArrayList<String>();private BaseAdapter adpater;private BaseAdapter adpaters;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {view = inflater.inflate(R.layout.f2, container, false);return view;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);list.clear();list.add("历史回眸");list.add("社员风采");list.add("KING");list.add("GAOFEI");list.add("CF");lists.clear();lists.add("社会要闻");lists.add("本社介绍");lists.add("订阅");lists.add("自身建设");gridView1 = (GridView) view.findViewById(R.id.gridView1);gridView2 = (GridView) view.findViewById(R.id.gridView2);gridView1.setAdapter(adpaters=new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubTextView textView = new TextView(getActivity());textView.setText(lists.get(position));return textView;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn lists.size();}});gridView2.setAdapter(adpater=new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubTextView textView = new TextView(getActivity());//textView.setText(t2[position]);textView.setText(list.get(position));return textView;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic int getCount() {// TODO Auto-generated method stub//return t2.length;return list.size();}});gridView2.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stublists.add(list.get(arg2));list.remove(arg2);adpater.notifyDataSetChanged();adpaters.notifyDataSetChanged();}});}}

*******************************************************MainActivity.classs***************************************************

import android.os.Bundle;import android.app.Activity;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends FragmentActivity {private MyViewPagerIndicator myViewPagerIndicator;//创建一个数组private String[] titles = { "社会要闻", "本社介绍", "订阅", "自身建设", "历史回眸", "社员风采" };//private String[] t = { "九三简介", "九三章程", "领导成员", "主席、副主席", "常务委员", "中央委员" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//发现控件myViewPagerIndicator = (MyViewPagerIndicator) findViewById(R.id.myViewPagerIndicator);ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);myViewPagerIndicator.setViewPager(viewPager);myViewPagerIndicator.addTitles(titles);        //ViewPager+Fragment适配器viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubFragment fragment=new Fragment();switch (arg0) {case 0:fragment=new Fragment0();break;case 1:fragment=new Fragment1();break;case 2:fragment=new Fragment2();break;case 3:fragment=new Fragment3();break;case 4:fragment=new Fragment4();break;case 5:fragment=new Fragment5();break;default:break;}return fragment;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 6;}});}}


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

import java.util.ArrayList;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 implementsOnClickListener {private LinearLayout linearLayout;private String[] titles;ArrayList<View> viewList = new ArrayList<View>();private ViewPager viewPager;public MyViewPagerIndicator(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);initView();}public MyViewPagerIndicator(Context context, AttributeSet attrs) {super(context, attrs);initView();}public MyViewPagerIndicator(Context context) {super(context);initView();}public void setViewPager(ViewPager viewPager) {this.viewPager = viewPager;viewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {setCurrentItem(position);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}});}private void initView() {// 创建线性布局linearLayout = new LinearLayout(getContext());this.addView(linearLayout);}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.pager_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);//创建paramsLinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);linearLayout.addView(view, params);}}@Overridepublic void onClick(View v) {setCurrentItem(v.getId());}//setCurrentItem方法private void setCurrentItem(int position) {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);}}}}

*************************************main布局************************************

<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.bwie.test.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>

***************************f1布局****************************

<?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>

***************************f2布局***************************************

<?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:orientation="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:text="已订阅栏目" />    <GridView        android:id="@+id/gridView1"        android:layout_width="match_parent"        android:layout_height="100dp"        android:layout_alignParentLeft="true"        android:layout_below="@+id/textView1"        android:layout_marginTop="26dp"        android:numColumns="4" >    </GridView>    <TextView        android:id="@+id/textView2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/gridView1"        android:layout_centerHorizontal="true"        android:layout_marginTop="54dp"        android:text="更多频道" />    <GridView        android:id="@+id/gridView2"        android:layout_width="match_parent"        android:layout_height="100dp"        android:layout_alignParentLeft="true"        android:layout_below="@+id/textView2"        android:numColumns="4" >    </GridView></RelativeLayout>


*****************************************pager_item布局**************************************
<?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
原创粉丝点击