这是学习慕课视频入门Android app 的学习笔记,包括源代码以及项目实现的思路
资源下载:https://download.csdn.net/download/ayangann915/10586026
接下来我们为每一个界面都添加悬浮按钮,但是第一页不显示,点击按钮跳转到设置界面。
修改activity_main.xml文件,增加悬浮按钮,将整体布局改为RelativeLayout。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.apple.start.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/mTabLayout"
app:tabTextColor="#ffffff"
app:tabSelectedTextColor="@color/colorAccent"
app:tabIndicatorColor="@color/colorAccent"
android:background="@color/colorPrimary"
app:tabMode="fixed"
app:tabGravity="fill"
/>
<android.support.v4.view.ViewPager
android:id="@+id/mViewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fab_setting"
android:src="@drawable/icon_setting"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="15dp"
android:layout_marginRight="15dp"/>
</RelativeLayout>
实例化bar并添加点击事件:
mFloatingActionButton=(FloatingActionButton)findViewById(R.id.fab_setting);
mFloatingActionButton.setOnClickListener(this);
点击事件:
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.fab_setting:
startActivity(new Intent(MainActivity.this,SettingActivity.class));
break;
}
}
viewpager滑动事件,滑动到后面的界面显示bar:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0){
mFloatingActionButton.setVisibility(View.GONE);
}else{
mFloatingActionButton.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
MainActivity总代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TabLayout mTabLayout;
private ViewPager mViewPager;
private List<String> mTitles;
private List<Fragment> mFragment;
private FloatingActionButton mFloatingActionButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
private void initData() {
mTitles=new ArrayList<>();
mTitles.add("服务管家");
mTitles.add("微信精选");
mTitles.add("美图相册");
mTitles.add("个人中心");
mFragment=new ArrayList<>();
mFragment.add(new BluterFragment());
mFragment.add(new WeChatFragment());
mFragment.add(new GirlFragment());
mFragment.add(new UserFragment());
}
private void initView(){
mTabLayout=(TabLayout)findViewById(R.id.mTabLayout);
mViewPager=(ViewPager)findViewById(R.id.mViewpager);
mFloatingActionButton=(FloatingActionButton)findViewById(R.id.fab_setting);
mFloatingActionButton.setOnClickListener(this);
//预加载
mViewPager.setOffscreenPageLimit(mFragment.size());
getSupportActionBar().setElevation(0);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0){
mFloatingActionButton.setVisibility(View.GONE);
}else{
mFloatingActionButton.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return mFragment.get(position);
}
@Override
public int getCount() {
return mFragment.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles.get(position);
}
});
mTabLayout.setupWithViewPager(mViewPager);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.fab_setting:
startActivity(new Intent(MainActivity.this,SettingActivity.class));
break;
}
}
}