仿微信6.0左右滑动渐变切换效果[大陆第一人

<pre name="code" class="java">

———————————————————————————————————-介绍:BottomMenuSlideGradientSwipe是一个仿微信6.0左右滑动渐变切换效果的demo,特分享与大家探讨邮箱:lijunhuayc@sina.comQQ:190951132GitHub账户:lijunhuayc[目前上面只有一个自己写的自定义AlertDialog对话框,有兴趣的朋友可以看一下,当然肯定没得前段时间出来的那个专门的动画对话框好哈]群里很多网友多次讨论过新版微信6.0的滑动渐变导航[底部菜单渐变切换]的效果怎么做的,今儿个空了在网上搜了一下,几乎没搜到啥有用信息,唯独有一个说的是用高斯函数对图片进行渐变显隐藏[通过透明度],但这并不能达到效果。你是不是也想知道微信开发者是怎么实现的呢?那么请往下看……

针对于此问题,我特地自己来实现此效果。

先看效果图:

内容左右滑动我们可以用很成功的JazzyViewPager来实现,它自带多种动画,其中有一个方法animateFade()就是控制渐变的,但它受到一个属性mFadeEnabled的影响,所以初始化的时候要确保mFadeEnabled属性

的值为true

首先介绍一下使用到的开源库:

master-JazzyViewPager主要就是用滑动渐变的viewpager

https://github.com/jfeinstein10/JazzyViewPager

NineOldAndroids-library超经典的一个动画库

https://github.com/JakeWharton/NineOldAndroids

———————————————————————————————————-

eclipse新建一个项目BottomMenuSlideGradientSwipe

1因为此实现需要修改一点点JazzyViewpager类的源码,所以这里引用方式是直接将master-JazzyViewPager下的所有资源文件和类文件拷贝到项目对应目录下

注意:jazzyviewpager的资源有好几个attrs.xmlcolor.xmlstrings.xml 这几个都别忘记了

2将NineOldAndroids-library的jar文件拷贝到libs目录下

3新建一个类MainActivity继承自Activity

先看看布局文件

—————————————————-暂停了一下,唉,开始错了点小错误,现在搞定了。完美运行perfect———哇咔咔咔咔———————————–

先看布局文件:

activity_main.xml

<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;"><TabHost xmlns:android=""</span> android:id="@android:id/tabhost"android:layout_width="fill_parent"android:layout_height="fill_parent" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#FFFFFF"android:visibility="gone" ></FrameLayout><com.jfeinstein.jazzyviewpager.JazzyViewPagerxmlns:app=""android:id="@+id/jazzyPager"app:style="standard"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><TabWidgetandroid:id="@android:id/tabs"android:layout_width="match_parent"android:layout_height="50dp"android:background="@drawable/main_tabwidget_background"android:visibility="visible" /></LinearLayout></TabHost>

说明:将tabhost用于显示内容的framelayout隐藏掉,然后用一个viewpager来代替 [此处用的是开源的 JazzyViewPager ,它自带很多滑动动画]

main_tabwidget_layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:padding="5dp" ><LinearLayoutandroid:id="@+id/normalLayout"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical" ><ImageViewandroid:id="@+id/normalImg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/scan_book" /><TextViewandroid:id="@+id/normalTV"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="扫书" /></LinearLayout><LinearLayoutandroid:id="@+id/selectedLayout"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical" ><ImageViewandroid:id="@+id/selectedImage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/scan_book_hl" /><TextViewandroid:id="@+id/selectedTV"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="扫书"android:textColor="#00FF00"android:textSize="20sp" /></LinearLayout></RelativeLayout>说明:此布局文件是tabwidget的tab项的布局[我们tabwidget的tab用自定义布局实现,后面会详细说明]

布局中有一个normalLayout 是tab未选中状态 ,一个selectedLayout是tab的选中状态

注意了:有人会问,为什么不用两张图来实现? 问的好,这就是这篇文章的关键点,详情请继续深入……

我们先修改一下啊JazzyViewpager.java 的源码

少一点预设的期待,那份对人的关怀会更自在

仿微信6.0左右滑动渐变切换效果[大陆第一人

相关文章:

你感兴趣的文章:

标签云: