ViewPager和View组合 实现页面的切换
//--------------主页面-------------------------------
package com.bw.test;
import java.util.ArrayList;
import java.util.List;
import com.bw.test.adapter.MyViewPagerAdapter;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private ViewPager vp;
private List<View> views=new ArrayList<View>();
private TextView tv_textview1;
private TextView tv_textview2;
private TextView tv_textview3;
private TextView tv_textview4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到button按钮控件
tv_textview1 = (TextView) findViewById(R.id.tv_textview1);
tv_textview2 = (TextView) findViewById(R.id.tv_textview2);
tv_textview3 = (TextView) findViewById(R.id.tv_textview3);
tv_textview4 = (TextView) findViewById(R.id.tv_textview4);
//找到ViewPager控件
vp = (ViewPager) findViewById(R.id.vp);
//设置ViewPager的适配器
MyViewPagerAdapter adapter=new MyViewPagerAdapter(views, this);
vp.setAdapter(adapter);
//初始化view
initView();
//设置ViewPager滑动监听
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
switch (arg0) {
case 0:
//设置textview的背景颜色
tv_textview1.setBackgroundColor(Color.RED);
tv_textview2.setBackgroundColor(Color.WHITE);
tv_textview3.setBackgroundColor(Color.WHITE);
tv_textview4.setBackgroundColor(Color.WHITE);
break;
case 1:
tv_textview1.setBackgroundColor(Color.WHITE);
tv_textview2.setBackgroundColor(Color.RED);
tv_textview3.setBackgroundColor(Color.WHITE);
tv_textview4.setBackgroundColor(Color.WHITE);
break;
case 2:
tv_textview1.setBackgroundColor(Color.WHITE);
tv_textview2.setBackgroundColor(Color.WHITE);
tv_textview3.setBackgroundColor(Color.RED);
tv_textview4.setBackgroundColor(Color.WHITE);
break;
case 3:
tv_textview1.setBackgroundColor(Color.WHITE);
tv_textview2.setBackgroundColor(Color.WHITE);
tv_textview3.setBackgroundColor(Color.WHITE);
tv_textview4.setBackgroundColor(Color.RED);
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
//设置监听
tv_textview1.setOnClickListener(this);
tv_textview2.setOnClickListener(this);
tv_textview3.setOnClickListener(this);
tv_textview4.setOnClickListener(this);
//设置默认页面
tv_textview1.setBackgroundColor(Color.RED);
vp.setCurrentItem(0);
}
//初始化view
private void initView() {
//创建view布局
View view1=View.inflate(this, R.layout.view1, null);
View view2=View.inflate(this, R.layout.view2, null);
View view3=View.inflate(this, R.layout.view3, null);
View view4=View.inflate(this, R.layout.view4, null);
//把view布局添加到集合
views.add(view1);
views.add(view2);
views.add(view3);
views.add(view4);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_textview1:
vp.setCurrentItem(0);
break;
case R.id.tv_textview2:
vp.setCurrentItem(1);
break;
case R.id.tv_textview3:
vp.setCurrentItem(2);
break;
case R.id.tv_textview4:
vp.setCurrentItem(3);
break;
default:
break;
}
}
}
//=============主布局文件 main.xml===========================
<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"
>
<android.support.v4.view.ViewPager
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/vp"></android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="40dp"
android:text="首页"
android:gravity="center"
android:id="@+id/tv_textview1"/>
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="40dp"
android:text="详情"
android:gravity="center"
android:id="@+id/tv_textview2"/>
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="40dp"
android:text="购物车"
android:gravity="center"
android:id="@+id/tv_textview3"/>
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="40dp"
android:text="我的"
android:gravity="center"
android:id="@+id/tv_textview4"/>
</LinearLayout>
</LinearLayout>
//============创建一个MyViewPagerAdapter,继承PagerAdapter并实现里面的方法=========================
package com.bw.test.adapter;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
//创建一个MyViewPagerAdapter,继承PagerAdapter并实现里面的方法
public class MyViewPagerAdapter extends PagerAdapter{
private List<View> views;
private Context context;
//有参构造
public MyViewPagerAdapter(List<View> views, Context context) {
super();
this.views = views;
this.context = context;
}
//获得长度
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
//展示的view
@Override
public Object instantiateItem(ViewGroup container, int position) {
//获得展示的view
View view=views.get(position);
//添加到容器
container.addView(view);
//返回显示的view
return view;
}
//销毁view
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//从容器中移除view
container.removeView((View) object);
}
}
//============创建 view1.xml 布局文件 这里我只给了一个背景颜色==========================
<?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"
android:background="#ff00ff">
</LinearLayout>
//=======创建 view2 .xml 布局文件 这里我只给了一个背景颜色===========================
<?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"
android:background="#ffff00" >
</LinearLayout>
//=====创建 view3.XML 布局文件 这里我只给了一个背景颜色===================
<?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"
android:background="#0000ff" >
</LinearLayout>
//=========创建 view4.XML 布局文件 这里我只给了一个背景颜色=================
<?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"
android:background="#00ffff" >
</LinearLayout>
//=======完了,做完之后就是页面的切换========
ViewPager和View组合 实现页面的切换的更多相关文章
- ViewPager+Fragment实现页面的切换
新知识,新摘要: 效果图:framgent导入包都是v4包下,谨慎导入错误! 首先设置viewPager布局: <?xml version="1.0" encoding=&q ...
- 转:Android ViewPager多页面滑动切换以及动画效果
一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了 ...
- Android ViewPager多页面滑动切换以及动画效果
一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...
- Android——ViewPager多页面滑动切换以及动画效果
一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...
- Android开发之利用ViewPager实现页面的切换(仿微信、QQ)
这里利用ViewPager实现页面的滑动,下面直接上代码: 1.首先写一个Activity,然后将要滑动的Fragment镶嵌到写好的Activity中. Activity的布局文件:activity ...
- ViewPager和View的事件响应规则
案例背景: 当我们实现viewpager的自动切换界面操作的时候,如果需要增加点击图片viewpager停止自动切换,松开手指viewpager自动切换又继续执行的逻辑,正常思维下实现代码如下所示: ...
- VC/Wince 实现仿Win8 Metro风格界面2——页面滑动切换(附效果图)
前几天开始写仿Win8 Metro界面文章,部分网友觉得不错,感谢各位的意见.本来今天一直在折腾Android VLC播放器,没时间写.不过明天休息,所以今天就抽时间先写一下. 言归正传,我们都知道W ...
- selenium多个标签页的切换(弹出新页面的切换)
1_windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver.window_handles #获取全部页面句柄 for ...
- 20ViewPager demo1,2:接收ViewPager展示View的使用
Demo1 MainActivity .JAVA package com.qf.day20_viewpager_demo1; import java.util.ArrayList; import ja ...
随机推荐
- javascript 中的console.log的作用
主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是: 他能看到结构话的东西,如果是alert,淡出一个对象就是[object object],但是co ...
- Gentoo挂载ntfs的NTFS分区
内核需要开启的选项 File systems ---> <*> FUSE (Filesystem in Userspace) support 使用NTFS-3G NTFS-3G是一个 ...
- GetLastError() 返回值含义
[0]-操作成功完成.[1]-功能错误.[2]-系统找不到指定的文件.[3]-系统找不到指定的路径.[4]-系统无法打开文件.[5]-拒绝访问.[6]-句柄无效.[7]-存储控制块被损坏.[8]-存储 ...
- java 内部类(摘抄自网络)
Java内部类 1.内部类分为成员内部类.静态嵌套类.方法内部类.匿名内部类. 几种内部类的共性: A.内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类 ...
- NOIP2012-普及组复赛-第一题-质因数分解
题目描述 Description 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入输出格式 Input/output 输入格式:输入只有一行,包含一个正整数n.输出格式:输出只 ...
- ubuntu下安装UltraEdit
在windows下常年使用UltraEdit来查看log,现在突然切换到ubuntu下,系统自带的Text Editor相当不适应:只有自己安装了. 首先,需要下载安装包,可以去:http://www ...
- erlang进程与操作系统线程
erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程.而是基于erlang运行时系统的一个进程.那么erlang的多进程是如 ...
- automaticallyAdjustsScrollViewInsets (iOS)
[摘要:@当我们正在一个UIViewController中同时建立2个tableView的时间,若是把它们的frame中的Y坐标设置为一样,您大概会发明它们的地位并出有到达您念要的效果.比方第一tab ...
- UIAlertAction 弹出对话框9.0后有点变化
ios 9.0后再用以前的UIAlertAction 已经不行了 被弃用了 改用这种方法了 UIAlertController *alertController = [UIAlertControlle ...
- DataTable Javascript Link not working on 2nd page
$(document).ready(function () { var otable = $('#tbl-resources').dataTable( { bJQueryUI: false, bFil ...