用FadingActionBar实现有头图的ActionBar

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的更多相关文章
- iOS UITableView滚动头图 拉伸放大效果 (头部弹性效果) 增加iOS11支持 附有demo
今天修改日期为2017年11月25日 两个月前做了iOS11的bug修复,才对博客进行更新,见谅. 在iOS11上需要注意两个问题 1.使用UIScrollview,UITableView,UIWeb ...
- naotu.baidu.com 非常棒的脑图在线工具
1.png 2.txt 短租 前台功能 房源查看 房源搜索 城市房源 注册登录 预定房源 房源退订 在线支付 评价房源 个人中心 我的订单 我的账户 我的收藏 消息通知 管理员后台 房源发布 会员管理 ...
- Android ActionBar(转)
本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用“返回/向上”程 ...
- 如何灵活使用 ActionBar, Google 音乐ActionBar 隐藏和显示效果
ActionBar 的历史这里就不介绍了,相信大家都清楚:在一个 app 中,如果 ActionBar 运用的好,那么将会省去大量的代码,而且整个 app 效果也相当不错,大家有兴趣可以下载 goog ...
- 如何使ActionBar不那么单调
此时我没有生产博客,此时我只是优秀博客的搬运工! 博客原址,有兴趣的可以查看一下. 详情如下: 使ActionBar不那么单调 回到2013年5月份,每一个人都发觉了Play Music中Action ...
- Android 原生 Android ActionBar
本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...
- 漂亮的ActionBar效果
Newsstand—这个应用引进了新的方式,使得ActionBar达到了新的水平.如果你打开这个应用的发布页,你会注意到不带图标的ActionBar是半透明的,而且和一个大的图片集(一个大的杂志图标, ...
- Android中ActionBar及Overflow的显示
最近在按照Android的API文档学习Android中actionbar的使用,Action bar 最基本的形式,就是为 activity 显示标题,并且在标题左边显示一个 app icon.在这 ...
- PowerDesigner16 时序图
时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的.顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序.时序图中包括的建模元素主要有:角色(Actor) ...
随机推荐
- [转] 使用moment.js轻松管理日期和时间
当前时间:moment().format('YYYY-MM-DD HH:mm:ss'); 2017-03-01 16:30:12 今天是星期几:moment().format('d'); 3 Unix ...
- 【noip模拟赛1】古韵之同心锁
据说在一座OI桥上,同心锁上显示的文字有着它奇异的呈现方式,需要你把它稍做改变才可解密.每个同心锁上都有3个数据.第一个数据是一个字符串s.第二个数据m表示把s串从m处分为两段,s[1]至s[m-1] ...
- 利用Microsoft Sql Server Management studio 创建数据库的示例
利用Microsoft Sql Server Management studio 创建数据库的示例方法如下: 一.打开安装好的Microsoft Sql Server Management stu ...
- Intel P6以来核心架构及对应型号、芯片组一览表
转载或拿走使用请注明出处,谢谢! 注1:5系列以前的芯片组部分可以支持多代处理器(如部分945可以支持65nm.45nm的处理器),5系列开始此现象较少见. 注2:插座兼容性①Socket370接口处 ...
- springmvc.xml 上传文件的配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.Comm ...
- wap2.0开发
前言 移动通信和互联网的迅速发展,使得互联网从固定向移动转移(即移动互联网)成为一种必然的趋势.由于手机终端本身的限制条件和无线链路的特点,现有无线传送技术的效率和可靠性会越来越难以令用户满意.如何让 ...
- C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
string path1 = @"d:\log.txt"; //打开D盘下的log.txt文件 System.Diagnostics.Process.Start(path1); ...
- Programming 2D Games 读书笔记(第四章)
示例一:Game Engine Part 1 更加完善游戏的基本流程 Graphics添加了以下几个方法,beginScene和endScene提高绘图,showBackbuffer去掉了clea ...
- mysql故障
1.服务器上是的电不要随边乱断,一定要保存,然后断电,不要在服务器插座版上乱插其他电器,导致非法断电, 2.出现断电后,检查MYSQL数据库文件是否损坏,可以看WINDOWS 应用程序程序管理日志,提 ...
- MySQL主从复制几个重要的启动选项
MySQL主从复制几个重要的启动选项 (1) log-slave-updates log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如 ...