FadingActionBar这个开源项目在社区上很火,感觉Google I/O 2014中就有它的身影。今天我们来介绍下这个实用的开源项目。

首先是到这里(https://github.com/ManuelPeinado/FadingActionBar)下载项目的包。解压后导入library。这里我推荐选择library+compat的包作为library。因为用夏洛克的话还得导入夏洛克。现在既然Google官方的v7中就支持了actionbar,那么咱们就顺应历史潮流吧。

然后是在工程中应用这个compat的library,并且建立主题样式。

styles( 没什么可说的,就是在继承后设置actionbar为全透明)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Widget" /> <style name="Widget.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
</style> <style name="Widget.Light" /> <style name="Widget.Light.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
</style> <style name="Widget.ActionBar.Transparent">
<item name="android:background">@android:color/transparent</item>
<item name="background">@android:color/transparent</item>
</style> <style name="Widget.Light.ActionBar.Transparent">
<item name="android:background">@android:color/transparent</item>
<item name="background">@android:color/transparent</item>
</style> </resources>

themes(设置一黑一白两个主题风格,可自己根据需要来选择)

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="NewApi">

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/Widget.ActionBar</item>
<item name="actionBarStyle">@style/Widget.ActionBar</item>
</style> <style name="AppTheme.TranslucentActionBar">
<!-- 设置透明风格 -->
<item name="android:actionBarStyle">@style/Widget.ActionBar.Transparent</item>
<!-- 设置悬浮风格 -->
<item name="android:windowActionBarOverlay">true</item>
<!-- 设置actionbar的风格 -->
<item name="actionBarStyle">@style/Widget.ActionBar.Transparent</item> <item name="windowActionBarOverlay">true</item>
<item name="android:windowContentOverlay">@null</item>
</style> <style name="AppTheme.Light.TranslucentActionBar" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/Widget.Light.ActionBar.Transparent</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="actionBarStyle">@style/Widget.Light.ActionBar.Transparent</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:windowContentOverlay">@null</item>
</style> </resources>

最后记得要在manifest中设置这个主题哦~

 <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

ok,准备工作做好了,现在咱们开始使用它了。我下面就讲解两个十分常用的情况,一种是把它放在listview中,一种是放在scrollview中。

1.listview+fadingactionbar

建立布局文件,这里就简单的写一个listview

activity_listview.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/list"
android:cacheColorHint="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="match_parent" />

ListViewActivity

/*
* Copyright (C) 2013 Manuel Peinado
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.manuelpeinado.fadingactionbar.samples.actionbarcompat; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView; import com.manuelpeinado.fadingactionbar.extras.actionbarcompat.FadingActionBarHelper;
import com.manuelpeinado.fadingactionbar.samples.actionbarcompat.R; public class ListViewActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); FadingActionBarHelper helper = new FadingActionBarHelper()
.actionBarBackground(R.drawable.ab_background)// 设置actionbar的背景
.headerLayout(R.layout.header)// 设置actionbar上图片的布局,不限于图片
.contentLayout(R.layout.activity_listview);// 设置主界面
//初始化
setContentView(helper.createView(this));
helper.initActionBar(this); ListView listView = (ListView) findViewById(android.R.id.list);
ArrayList<String> items = loadItems(R.raw.nyc_sites);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
} /**
* @return A list of Strings read from the specified resource
* 从资源文件中读取文字,读一行设置一个list的item
*/
private ArrayList<String> loadItems(int rawResourceId) {
try {
ArrayList<String> countries = new ArrayList<String>();
//建立输入流
InputStream inputStream = getResources().openRawResource(rawResourceId);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
countries.add(line);
}
reader.close();
return countries;
} catch (IOException e) {
return null;
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_menu, menu);
return true;
}
}

其实,关键代码就是这些:初始化后设置适配器

  FadingActionBarHelper helper = new FadingActionBarHelper()
.actionBarBackground(R.drawable.ab_background)// 设置actionbar的背景
.headerLayout(R.layout.header)// 设置actionbar上图片的布局,不限于图片
.contentLayout(R.layout.activity_listview);// 设置主界面,就一个listview
//初始化
setContentView(helper.createView(this));
helper.initActionBar(this); ListView listView = (ListView) findViewById(android.R.id.list);
ArrayList<String> items = loadItems(R.raw.nyc_sites);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);

2.scrollview+fadingactionbar

建立布局文件,这里放一个layout和textview,给textview中设置多点的文字。

注意:这里不用设置scrollview,只要超出了屏幕显示的范围,这个actionbar会自动设置滚动

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
android:orientation="vertical" > <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="@string/loren_ipsum"
android:textAppearance="@android:style/TextAppearance.Medium" /> </LinearLayout>

ScrollViewActivity

/*
* Copyright (C) 2013 Manuel Peinado
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.manuelpeinado.fadingactionbar.samples.actionbarcompat; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu; import com.manuelpeinado.fadingactionbar.extras.actionbarcompat.FadingActionBarHelper;
import com.manuelpeinado.fadingactionbar.samples.actionbarcompat.R; public class ScrollViewActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); FadingActionBarHelper helper = new FadingActionBarHelper()
.actionBarBackground(R.drawable.ab_background)//设置actionbar的背景色
.headerLayout(R.layout.header)// 设置actionbar上图片的layout
.contentLayout(R.layout.activity_scrollview);// 设置界面内容的布局 setContentView(helper.createView(this));// 配置布局
helper.initActionBar(this);// 用当前对象进行初始化
} }

其实fadingactionbar可以适配,fragment,draw等多种布局。具体的还是在官方的demo中了解吧。其实大同小异,很简单的。

源码下载:http://download.csdn.net/detail/shark0017/7735599

用FadingActionBar实现有头图的ActionBar的更多相关文章

  1. iOS UITableView滚动头图 拉伸放大效果 (头部弹性效果) 增加iOS11支持 附有demo

    今天修改日期为2017年11月25日 两个月前做了iOS11的bug修复,才对博客进行更新,见谅. 在iOS11上需要注意两个问题 1.使用UIScrollview,UITableView,UIWeb ...

  2. naotu.baidu.com 非常棒的脑图在线工具

    1.png 2.txt 短租 前台功能 房源查看 房源搜索 城市房源 注册登录 预定房源 房源退订 在线支付 评价房源 个人中心 我的订单 我的账户 我的收藏 消息通知 管理员后台 房源发布 会员管理 ...

  3. Android ActionBar(转)

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用“返回/向上”程 ...

  4. 如何灵活使用 ActionBar, Google 音乐ActionBar 隐藏和显示效果

    ActionBar 的历史这里就不介绍了,相信大家都清楚:在一个 app 中,如果 ActionBar 运用的好,那么将会省去大量的代码,而且整个 app 效果也相当不错,大家有兴趣可以下载 goog ...

  5. 如何使ActionBar不那么单调

    此时我没有生产博客,此时我只是优秀博客的搬运工! 博客原址,有兴趣的可以查看一下. 详情如下: 使ActionBar不那么单调 回到2013年5月份,每一个人都发觉了Play Music中Action ...

  6. Android 原生 Android ActionBar

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...

  7. 漂亮的ActionBar效果

    Newsstand—这个应用引进了新的方式,使得ActionBar达到了新的水平.如果你打开这个应用的发布页,你会注意到不带图标的ActionBar是半透明的,而且和一个大的图片集(一个大的杂志图标, ...

  8. Android中ActionBar及Overflow的显示

    最近在按照Android的API文档学习Android中actionbar的使用,Action bar 最基本的形式,就是为 activity 显示标题,并且在标题左边显示一个 app icon.在这 ...

  9. PowerDesigner16 时序图

    时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的.顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序.时序图中包括的建模元素主要有:角色(Actor) ...

随机推荐

  1. 【AtCoder】ARC091

    C - Flip,Flip, and Flip...... 只有一个这一个是反面 只有一行那么除了两边以外都是反面 否则输出\((N - 2)*(M - 2)\) #include <bits/ ...

  2. P1387 最大正方形 图DP

    题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=100),接下来n行,每行m ...

  3. Vue之双向绑定原理动手记

    Vue.js的核心功能有两个:一是响应式的数据绑定系统,二是组件系统.本文是通过学习他人的文章,从而理解了双向绑定原理,从而在自己理解的基础上,自己动手实现数据的双向绑定. 目前几种主流的mvc(vm ...

  4. HDU 3802Ipad,IPhone

    前两块可以看成是不是二次剩余,快速幂计算即可. 后半部分可以看成x1=a+b+2ab,x2=a+b-2ab为特征方程x^2-px-qx=0的两根 然后可以通过韦达定理求出p和q,因此递推式为A(n+2 ...

  5. 「WC 2019」数树

    「WC 2019」数树 一道涨姿势的EGF好题,官方题解我并没有完全看懂,尝试用指数型生成函数和组合意义的角度推了一波.考场上只得了 44 分也暴露了我在数数的一些基本套路上的不足,后面的 \(\ex ...

  6. Linux学习笔记09—Sqlyog链接mysql配置

    第一步打开Linux命令窗口,进入超级用户.命令:[test@localhost ~]$ suPassword:输入超级用户密码第二步启动Mysql服务命令:[root@localhost test] ...

  7. [原创]Jmeter工具学习思维导图

    [原创]Jmeter工具学习思维导图

  8. LPC43xx MCU PIN Name and GPIO PIN Name Table

    //--------------------------------------------------------------------------------+ // LPC43xx Pin N ...

  9. STM32 F4 GPIO Modes

    STM32 F4 GPIO Modes Goal: creating a visual summary of GPIO configuration modes. The summary at the ...

  10. 自己动手实现一个MVVM库

    我们知道的,常见的数据绑定的实现方法 1.数据劫持(vue):通过Object.defineProperty() 去劫持数据每个属性对应的getter和setter2.脏值检测(angular):通过 ...