底部导航栏突出

今天看了一个ios上网易云音乐设置皮肤后底部导航栏的图片就会多出导航栏,我觉得这个比较好看,所以就做了一个虽然没有图片,不多说先看图你就明白了

上图是这个项目的展示,显示部分为viewpage,底部其实就是布局,一个LinearLayout,里面有五个图片

不多说上马!

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="bottom"
    android:clipChildren="false"
    android:gravity="bottom"
    android:orientation="vertical" >

   <!--<FrameLayout-->
       <!--android:id="@+id/fragment_ll"-->
       <!--android:layout_width="match_parent"-->
       <!--android:layout_height="match_parent">-->

   <!--</FrameLayout>-->
    <android.support.v4.view.ViewPager
        android:id="@+id/vPager"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_weight="1.0"
        android:background="@color/white"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100px"
        android:layout_gravity="bottom"
        android:background="#234221"
        android:gravity="bottom" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView5"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />
    </LinearLayout>

</LinearLayout>
先写一个布局,特殊的地方就在于
    android:clipChildren="false"

在添加了一个这个android:clipChildren

意思:是否限制子View在其范围内我们将其值设置为false后那么当子控件的高度高于父控件时也会完全显示,而不会被压缩

以下是Activity类:

 

package com.bc.jy.capital.myapplicationsssss.activity;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.Toast;

import com.bc.jy.capital.myapplicationsssss.R;
import com.bc.jy.capital.myapplicationsssss.fragment.MainFragment;
import com.bc.jy.capital.myapplicationsssss.fragment.MainFragment1;
import com.bc.jy.capital.myapplicationsssss.fragment.MainFragment2;
import com.bc.jy.capital.myapplicationsssss.fragment.MainFragment3;
import com.bc.jy.capital.myapplicationsssss.fragment.MainFragment4;

import java.util.ArrayList;

import butterknife.ButterKnife;

import static com.bc.jy.capital.myapplicationsssss.R.mipmap.ceshisss;
import static com.bc.jy.capital.myapplicationsssss.R.mipmap.ic_launcher;


/**
 * Created by Administrator on 2017/6/9.
 */

public class FragmentAcitivity extends AppCompatActivity implements View.OnClickListener{
//    @BindView(R.id.fragment_ll)
//    LinearLayout fragmentLl;
    ImageView imageView1;
    ImageView imageView2;
    ImageView imageView3;
    ImageView imageView4;
    ImageView imageView5;
    private int height = 100;//固定Imageview的高,单位px
    //动态设置图片宽高
    LayoutParams para1;
    LayoutParams para2;
    LayoutParams para3;
    LayoutParams para4;
    LayoutParams para5;
    //存放Fragment
    private ArrayList<Fragment> fragmentArrayList;
    private ViewPager mViewPager;

    //管理Fragment
    private FragmentManager fragmentManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sssssssssss);
        ButterKnife.bind(this);
        mViewPager = (ViewPager) findViewById(R.id.vPager);
        //将fragment添加到数组
        fragmentArrayList = new ArrayList<Fragment>();
        fragmentArrayList.add(new MainFragment());
        fragmentArrayList.add(new MainFragment1());
        fragmentArrayList.add(new MainFragment2());
        fragmentArrayList.add(new MainFragment3());
        fragmentArrayList.add(new MainFragment4());
        fragmentManager = getSupportFragmentManager();
        //初始化
        imageView1 = (ImageView) findViewById(R.id.imageView1);
        imageView2 = (ImageView) findViewById(R.id.imageView2);
        imageView3 = (ImageView) findViewById(R.id.imageView3);
        imageView4 = (ImageView) findViewById(R.id.imageView4);
        imageView5 = (ImageView) findViewById(R.id.imageView5);
        imageView1.setOnClickListener(this);
        imageView2.setOnClickListener(this);
        imageView3.setOnClickListener(this);
        imageView4.setOnClickListener(this);
        imageView5.setOnClickListener(this);
//        switchFragment(new MainFragment());
//        img1();
        InitViewPager();
    }

    /**
     * 初始化页卡内容区
     */
    private void InitViewPager() {

        mViewPager = (ViewPager) findViewById(R.id.vPager);
        mViewPager.setAdapter(new MFragmentPagerAdapter(fragmentManager, fragmentArrayList));

        //让ViewPager缓存2个页面
        mViewPager.setOffscreenPageLimit(2);

        //设置默认打开第一页
        mViewPager.setCurrentItem(0);
        img1();
        //设置viewpager页面滑动监听事件
        mViewPager.setOnPageChangeListener(new MyOnPageChangeListener());
    }

    //图片的点击事件
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.imageView1:
//                点击第一个图片到第一个fragment
                img1();
                Toast.makeText(FragmentAcitivity.this,"imageView1",Toast.LENGTH_SHORT).show();
                mViewPager.setCurrentItem(0);//数组从0开始

                break;
            case R.id.imageView2:
                Toast.makeText(FragmentAcitivity.this,"imageView2",Toast.LENGTH_SHORT).show();
                mViewPager.setCurrentItem(1);
                img2();

                break;

            case R.id.imageView3:
                mViewPager.setCurrentItem(2);
                img3();

                break;
            case R.id.imageView4:
                mViewPager.setCurrentItem(3);
                img4();

                break;
            case R.id.imageView5:
                mViewPager.setCurrentItem(4);
                img5();

                break;
        }
    }
    //图片1的设置方式,如果点击第一个图片,或滑动到第一个页面则使用此方法进行设置,以下
    public void img1(){
        para1 = imageView1.getLayoutParams();//动态设置ImageView的大小
        para2 = imageView2.getLayoutParams();
        para3 = imageView3.getLayoutParams();
        para4 = imageView4.getLayoutParams();
        para5 = imageView5.getLayoutParams();
        para1.height = 300;
        para2.height = height;
        para3.height = height;
        para4.height = height;
        para5.height = height;
        imageView1.setLayoutParams(para1);
        imageView2.setLayoutParams(para2);
        imageView3.setLayoutParams(para3);
        imageView4.setLayoutParams(para4);
        imageView5.setLayoutParams(para5);
        imageView1.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ceshisss));//动态设置ImageView的图片
        imageView2.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView3.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView4.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView5.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
    }
    public void img2(){
        para1 = imageView1.getLayoutParams();
        para2 = imageView2.getLayoutParams();
        para3 = imageView3.getLayoutParams();
        para4 = imageView4.getLayoutParams();
        para5 = imageView5.getLayoutParams();
        para2.height = 300;
//        para2.width = 300;
        para1.height = height;
        para3.height = height;
        para4.height = height;
        para5.height = height;
        imageView1.setLayoutParams(para1);
        imageView2.setLayoutParams(para2);
        imageView3.setLayoutParams(para3);
        imageView4.setLayoutParams(para4);
        imageView5.setLayoutParams(para5);
        imageView1.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView2.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ceshisss));
        imageView3.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView4.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView5.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
    }
    public void img3(){
        para1 = imageView1.getLayoutParams();
        para2 = imageView2.getLayoutParams();
        para3 = imageView3.getLayoutParams();
        para4 = imageView4.getLayoutParams();
        para5 = imageView5.getLayoutParams();
        para3.height = 300;
//        para3.width = 300;
        para1.height = height;
        para2.height = height;
        para4.height = height;
        para5.height = height;
        imageView1.setLayoutParams(para1);
        imageView2.setLayoutParams(para2);
        imageView3.setLayoutParams(para3);
        imageView4.setLayoutParams(para4);
        imageView5.setLayoutParams(para5);
        imageView1.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView2.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView3.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ceshisss));
        imageView4.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView5.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
    }
    public void img4(){
        para1 = imageView1.getLayoutParams();
        para2 = imageView2.getLayoutParams();
        para3 = imageView3.getLayoutParams();
        para4 = imageView4.getLayoutParams();
        para5 = imageView5.getLayoutParams();
        para4.height = 300;
        para1.height = height;
        para2.height = height;
        para3.height = height;
        para5.height = height;
        imageView1.setLayoutParams(para1);
        imageView2.setLayoutParams(para2);
        imageView3.setLayoutParams(para3);
        imageView4.setLayoutParams(para4);
        imageView5.setLayoutParams(para5);
        imageView1.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView2.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView3.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView4.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ceshisss));
        imageView5.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
    }
    public void img5(){
        para1 = imageView1.getLayoutParams();
        para2 = imageView2.getLayoutParams();
        para3 = imageView3.getLayoutParams();
        para4 = imageView4.getLayoutParams();
        para5 = imageView5.getLayoutParams();
        para5.height = 300;
        para2.height = height;
        para3.height = height;
        para4.height = height;
        para1.height = height;
        imageView1.setLayoutParams(para1);
        imageView2.setLayoutParams(para2);
        imageView3.setLayoutParams(para3);
        imageView4.setLayoutParams(para4);
        imageView5.setLayoutParams(para5);
        imageView1.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView2.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView3.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView4.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ic_launcher));
        imageView5.setImageDrawable(ContextCompat.getDrawable(FragmentAcitivity.this, ceshisss));
    }
    /**
     * 页卡切换监听
     * @author weizhi
     * @version 1.0
     */
    public class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{

        @Override
        public void onPageSelected(int position) {
            Animation animation = null ;
            switch (position){

                //当前为页卡1
                case 0:
                    img1();
                    break;

                //当前为页卡2
                case 1:
                    //从页卡1跳转转到页卡2
                    img2();
                    break;

                //当前为页卡3
                case 2:
                    //从页卡1跳转转到页卡2
                    img3();
                    break;
                //当前为页卡3
                case 3:
                    //从页卡1跳转转到页卡2
                    img4();
                    break;
                //当前为页卡3
                case 4:
                    //从页卡1跳转转到页卡2
                    img5();
                    break;
            }
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    };

}

虽然代码比较多,但其实大部分为重复代码,注释我已经加之代码中,如果不懂可以看一看代码内的注释。

其中使用到了viewpage,所以一定不要忘了它的适配器:

package com.bc.jy.capital.myapplicationsssss.activity;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;

import java.util.ArrayList;

/**
 * Fragment适配器
 * @author weizhi
 * @version 1.0
 */
public class MFragmentPagerAdapter extends FragmentPagerAdapter {

    //存放Fragment的数组
    private ArrayList<Fragment> fragmentsList;

    public MFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmentsList) {
        super(fm);
        this.fragmentsList = fragmentsList;
    }

    @Override
    public Fragment getItem(int position) {

        return fragmentsList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentsList.size();
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }
}

在Activity中还有就是fragment了这里就不用我写了吧,主要你会创建fragment类就可以了:

package com.bc.jy.capital.myapplicationsssss.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bc.jy.capital.myapplicationsssss.R;

/**
 * Created by Administrator on 2017/11/30.
 */

public class MainFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = View.inflate(getActivity(), R.layout.fragment,null);

        return v;
    }
}

算了,我还是写上一个吧,其他的只要复制就好了,布局里想写什么就写什么,反正你高兴。

其实就是这么简单。虽然我搞了一天,哈哈。

如果有什么问题可以私聊我,或者评论,看到我会回复。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值