package
com
.
example
.
g160628_11_02
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.FragmentActivity
;
import
android.support.v4.app.FragmentManager
;
import
android.support.v4.app.FragmentStatePagerAdapter
;
import
android.support.v4.view.ViewPager
;
import
android.view.View
;
import
android.view.View.OnClickListener
;
import
android.view.ViewGroup
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
MainActivity
extends
FragmentActivity
implements
OnClickListener
{
/**
* 四个导航
*/
private
LinearLayout
lintonOne
;
private
LinearLayout
lintonTwo
;
private
LinearLayout
lintonThree
;
private
LinearLayout
lintonFour
;
/**
* 作为页面容器的ViewPager
*/
private
ViewPager
mViewPager
;
/**
* 页面集合
*/
private
List
<
Fragment
>
fragmentList
;
/**
* 四个Fragment(页面)
*/
private
WeiXinFragment
oneFragment
;
private
ContactsFragment
twoFragment
;
private
FindFragment
threeFragment
;
private
MyFragment
fourFragment
;
//当前选中的项
private
int
currenttab
=-
1
;
private
TextView
tvweixin
;
private
TextView
tvcontact
;
private
TextView
tvfind
;
private
TextView
tvmy
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_main
);
lintonOne
=
(
LinearLayout
)
findViewById
(
R
.
id
.
lin_one
);
lintonTwo
=(
LinearLayout
)
findViewById
(
R
.
id
.
lin_two
);
lintonThree
=(
LinearLayout
)
findViewById
(
R
.
id
.
lin_three
);
lintonFour
=(
LinearLayout
)
findViewById
(
R
.
id
.
lin_four
);
tvweixin
=
(
TextView
)
findViewById
(
R
.
id
.
tv_weixin
);
tvcontact
=
(
TextView
)
findViewById
(
R
.
id
.
tv_contact
);
tvfind
=
(
TextView
)
findViewById
(
R
.
id
.
tv_find
);
tvmy
=
(
TextView
)
findViewById
(
R
.
id
.
tv_my
);
lintonOne
.
setOnClickListener
(
this
);
lintonTwo
.
setOnClickListener
(
this
);
lintonThree
.
setOnClickListener
(
this
);
lintonFour
.
setOnClickListener
(
this
);
mViewPager
=(
ViewPager
)
findViewById
(
R
.
id
.
viewpager
);
fragmentList
=
new
ArrayList
<
Fragment
>();
oneFragment
=
new
WeiXinFragment
();
twoFragment
=
new
ContactsFragment
();
threeFragment
=
new
FindFragment
();
fourFragment
=
new
MyFragment
();
fragmentList
.
add
(
oneFragment
);
fragmentList
.
add
(
twoFragment
);
fragmentList
.
add
(
threeFragment
);
fragmentList
.
add
(
fourFragment
);
mViewPager
.
setAdapter
(
new
MyFrageStatePagerAdapter
(
getSupportFragmentManager
()));
tvweixin
.
setTextColor
(
Color
.
RED
);
}
/**
* 定义自己的ViewPager适配器。
* 也可以使用FragmentPagerAdapter。关于这两者之间的区别,可以自己去搜一下。
*/
class
MyFrageStatePagerAdapter
extends
FragmentStatePagerAdapter
{
public
MyFrageStatePagerAdapter
(
FragmentManager
fm
)
{
super
(
fm
);
}
@Override
public
Fragment
getItem
(
int
position
)
{
return
fragmentList
.
get
(
position
);
}
@Override
public
int
getCount
()
{
return
fragmentList
.
size
();
}
/**
* 每次更新完成ViewPager的内容后,调用该接口,此处复写主要是为了让导航按钮上层的覆盖层能够动态的移动
*/
@Override
public
void
finishUpdate
(
ViewGroup
container
)
{
super
.
finishUpdate
(
container
);
//这句话要放在最前面,否则会报错
//获取当前的视图是位于ViewGroup的第几个位置,用来更新对应的覆盖层所在的位置
int
currentItem
=
mViewPager
.
getCurrentItem
();
if
(
currentItem
==
currenttab
)
{
return
;
}
// imageMove(mViewPager.getCurrentItem());
currenttab
=
mViewPager
.
getCurrentItem
();
if
(
currenttab
==
0
){
tvweixin
.
setTextColor
(
Color
.
RED
);
}
else
{
tvweixin
.
setTextColor
(
Color
.
BLACK
);
}
if
(
currenttab
==
1
){
tvcontact
.
setTextColor
(
Color
.
RED
);
}
else
{
tvcontact
.
setTextColor
(
Color
.
BLACK
);
}
if
(
currenttab
==
2
){
tvfind
.
setTextColor
(
Color
.
RED
);
}
else
{
tvfind
.
setTextColor
(
Color
.
BLACK
);
}
if
(
currenttab
==
3
){
tvmy
.
setTextColor
(
Color
.
RED
);
}
else
{
tvmy
.
setTextColor
(
Color
.
BLACK
);
}
}
}
@Override
public
void
onClick
(
View
v
)
{
switch
(
v
.
getId
())
{
case
R
.
id
.
lin_one
:
changeView
(
0
);
break
;
case
R
.
id
.
lin_two
:
changeView
(
1
);
break
;
case
R
.
id
.
lin_three
:
changeView
(
2
);
break
;
case
R
.
id
.
lin_four
:
changeView
(
3
);
break
;
default
:
break
;
}
}
//手动设置ViewPager要显示的视图
private
void
changeView
(
int
desTab
)
{
mViewPager
.
setCurrentItem
(
desTab
,
true
);
}
}