Code Monkey home page Code Monkey logo

transparenttoolbar's Introduction

####效果如图:


我的博客:详解

TransparentToolBar 一个简单随着滚动控件滚动,不断改变颜色透明度的ToolBar。核心类就一个:TransparentToolBar.java

使用方式如下:

1,把TransparentToolBar.java拷贝到你的工程里,布局文件中直接使用:

TransparentToolBar是RelativeLayout的子类,里面想放什么子View随意。

	    <com.zhan.transparenttoolbar.widget.TransparentToolBar
	        android:id="@+id/main_bar"
	        android:layout_width="match_parent"
	        android:layout_height="55dp">
	
	        <TextView
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"
	            android:layout_centerInParent="true"
	            android:gravity="center"
	            android:text="Transparent toolbar"
	            android:textColor="@android:color/white"
	            android:textSize="16sp" />
	
	        <View
	            android:layout_width="match_parent"
	            android:layout_height="1px"
	            android:layout_alignParentBottom="true"
	            android:background="@android:color/black" />
	
	    </com.zhan.transparenttoolbar.widget.TransparentToolBar>

2,找到TransparentToolBar对象,设置最大偏移量与背景色(必须设置这两个参数):

setBgColor 为ToolBar背景颜色,必须设置。透明度变化为0~1

setOffset 为ToolBar滚动控件滚动,ToolBar透明度变化范围的计算参数。top/offset = 0~1

	
		mTransparentToolBar = (TransparentToolBar) findViewById(R.id.main_bar);
	
	
	    //必须设置ToolBar颜色值,也就是0~1透明度变化的颜色值
	    mTransparentToolBar.setBgColor(getResources().getColor(R.color.bar_color));
	
	    //必须设置ToolBar最大偏移量,这会影响到0~1透明度变化的范围
	    mTransparentToolBar.setOffset(mHeadValue);

3,设置滚动控件的setOnScrollChangeListener或者在自定义里复写onScrollChanged方法,为了获取实时的滚动高度top值

一定要把滚动控件的实时高度传递给ToolBar。

		setOnScrollChangeListener
		
		//一定要设置进去
		mTransparentToolBar.setChangeTop(t);

或者在自定义View里:

		@Override
	    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
	        super.onScrollChanged(l, t, oldl, oldt);

	        //将滚动不断变化的top值传递给ToolBar用于计算透明度
	        mTransparentToolBar.setChangeTop(t);

	    }
	
	    /** 注入ToolBar */
	    public void setTitleBar(TransparentToolBar titleBar) {
	        mTransparentToolBar = titleBar;
	    }

4,可以设置ToolBar setOnScrollStateListener,获取ToolBar跟随滚动控件计算出的百分比0~1,用于同步一些View动画

		mTransparentToolBar.setOnScrollStateListener(this);
		


	    @Override
	    public void updateFraction(float fraction) {
	        //ToolBar滚动回调的百分比0~1
	    }

现在可以使用TransparentToolBar了。


工程的Demo中是获取某一个View的高度,用于设置ToolBar最大偏移量offset。如果需要,可以参考:

		mHeadTv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
		    @Override
		    public void onGlobalLayout() {
		        mHeadValue = mHeadTv.getMeasuredHeight();
		
		        //必须设置ToolBar最大偏移量,这会影响到0~1透明度变化的范围
		        mTransparentToolBar.setOffset(mHeadValue);
		
		        mHeadTv.getViewTreeObserver().removeOnGlobalLayoutListener(this);
		        Log.i(TAG, "mHeadValue:" + mHeadValue);
		    }
		});

如果你想让这个View做更多的事,或者优化的更好,可以自行修改TransparentToolBar.java

transparenttoolbar's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.