您的位置:首页 > 其它

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

2016-06-28 18:15 399 查看
***********本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 []{"九三简介", "九三章程", "领导成员", "主席、副主席", "常务委员", "中央委员"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.f1, 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适配器
listView.setAdapter(new BaseAdapter() {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView textView = new TextView(getActivity());
textView.setText(s[position]);
return textView;
}

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

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

@Override
public int getCount() {
// TODO Auto-generated method stub
return 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;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.f2, container, false);
return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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() {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView textView = new TextView(getActivity());
textView.setText(lists.get(position));

return textView;
}

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

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

@Override
public int getCount() {
// TODO Auto-generated method stub
return lists.size();
}
});

gridView2.setAdapter(adpater=new BaseAdapter() {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView textView = new TextView(getActivity());
//				textView.setText(t2[position]);
textView.setText(list.get(position));
return textView;
}

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

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

@Override
public int getCount() {
// TODO Auto-generated method stub
//				return t2.length;
return list.size();
}
});
gridView2.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
lists.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 = { "九三简介", "九三章程", "领导成员", "主席、副主席", "常务委员", "中央委员" };

@Override
protected 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()) {

@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
Fragment 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;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return 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 implements
OnClickListener {

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() {

@Override
public void onPageSelected(int position) {
setCurrentItem(position);
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override
public 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);
//创建params
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
linearLayout.addView(view, params);
}
}

@Override
public 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  ********************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: