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中设置这个主题哦~

 <applicationandroid: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 {@Overrideprotected 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;}}@Overridepublic 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" ><TextViewandroid: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 {@Overrideprotected 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. uitableview 弹性_iOS UITableView滚动头图 拉伸放大效果 (头部弹性效果) 增加iOS11支持 附有demo...

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

  2. UI设计师注意,网站头图的10个黄金法则

    在ui设计中,网站的头图是很重要的,因为他是用户第一时间看的,也大部分的因素决定着用户的去留.当用户登录你的主页时,在页面打开后的瞬间,你可以通过设计将更多的页面让他们看到.然而大多数网站都错失了这个 ...

  3. python+PIL批量制作淘宝主图(头图)及满屏水印添加

    导读 项目中需要用到图片批量化处理,所以玩了下PIL做了个简单的小项目,解放双手批量制作淘宝主图的功能 任务目标 根据传入的图片数量,自动放大缩小寻找计算可对齐的中心点进行裁切 按照传入图片数量,定制 ...

  4. 【Latex】在标题下插入头图 teaser

    更多内容请看 Github 单图 \documentclass[10pt,twocolumn,letterpaper]{article} \usepackage{graphicx} \usepacka ...

  5. 2021年中国生猪养殖行业发展现状及重点企业对比分析:生猪出栏量达6.71亿头[图]

    一.发展现状 随着我国生猪养殖技术的不断提升,生猪存栏量快速增长,2021年中国生猪存栏量达4.49亿头,较2020年增加了0.4亿头,同比增长10.51%,目前我国养猪产业逐渐向着现代化以及规模化的 ...

  6. 微信小程序界面设计——自定义一个好看的头图

    先看效果图 源码 <view style="overflow: hidden;"><image src='http://static.iswenzi.com/im ...

  7. 哔哩哔哩冬季头图小案例

    代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8& ...

  8. 哔哩哔哩秋季头图小案例

    实际上我认为图片序号是已经被精心安排过的.所以我们只要形成模糊效果就行了 代码: <!DOCTYPE html> <html lang="en"> < ...

  9. 一张图,看编程语言十年热度变化

    作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 什么是 TIOBE 排行榜 TIOBE 排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量,并使用搜索引擎(如Googl ...

最新文章

  1. Python基础学习3
  2. Redis之七种武器
  3. div模拟textarea自适应高度
  4. Shiro.ini文件概述
  5. 【LCT】遥远的国度(P3979)
  6. Java讲课笔记12:static关键字
  7. 查询端口被什么程序占用及停止的方法及netstat的妙用
  8. Ubuntu设置局域网Windows共享文件Samba
  9. hihoCoder1223 不等式
  10. 搭建apache_??4、Apache环境web搭建
  11. spark和hadoop的区别
  12. 一年级下册健康教育教案
  13. php怎么eclipse打开,PHPEclipse的安装和使用
  14. java软件开发必读15本书籍
  15. 唯一插件化Replugin源码及原理深度剖析--唯一Hook点原理
  16. 前端 debugger
  17. 计算机网络的发展简史
  18. 免费网站流量统计服务汇总
  19. HTML选择器的学习
  20. 【2022】合肥市市赛冲刺【小学组】

热门文章

  1. C# Object.Equals方法深入研究
  2. 南京牵手印度软件 本土软件企业态度不一
  3. 关于MFC里面位图相关的操作
  4. 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_原理---大数据之hadoop工作笔记0074
  5. 大数据之-Hadoop完全分布式_集群文件存储路径说明_完全分布式集群测试---大数据之hadoop工作笔记0038
  6. Mycat安全_监控平台简介---MyCat分布式数据库集群架构工作笔记0035
  7. 发现Diolar 的边缘检测程序好像也有缺点
  8. 小程序php支付,前后端分离
  9. linux共享内存变量 tiaojianbianliang,低压集抄系统中Linux共享内存使用分析
  10. python编程(import头文件)