头部滑动加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*******************************************************
*******************************************************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布局**************************************
**************************** OK ********************************
***************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 ********************************
相关文章推荐
- 常见面试题-概念题答案
- 插入mysql数据库中的数据有乱码
- 【NOI2005】维护数列
- Linux vi编辑器的使用
- CSS3美化表单控件
- Activity生命周期
- 算法:25匹马,5个跑道,每次只能跑5匹,用最少的次数选出最快的前3匹
- kafka入门介绍及环境搭建
- jquery 更改angularJS input 内容导致绑定失效的解决办法
- HDU-2601 Bone Collector(DP 01背包)
- 2016.6.28笔记(3)-Struts2
- tomcat的启动方法
- 在windows下使用dos按需求提取文件名
- 测试周报模板
- 测试周报模板
- centos6.5安装配置spark
- 解决Lightmap在PC上与ios和Android上表现不同的问题
- Qt布局管理
- OpenCV嵌入式图像处理(四)第一个OpenCV程序
- 流氓也玩障眼法~~