用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中设置这个主题哦~
<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相关推荐
- uitableview 弹性_iOS UITableView滚动头图 拉伸放大效果 (头部弹性效果) 增加iOS11支持 附有demo...
今天修改日期为2017年11月25日 两个月前做了iOS11的bug修复,才对博客进行更新,见谅. 在iOS11上需要注意两个问题 1.使用UIScrollview,UITableView,UIWeb ...
- UI设计师注意,网站头图的10个黄金法则
在ui设计中,网站的头图是很重要的,因为他是用户第一时间看的,也大部分的因素决定着用户的去留.当用户登录你的主页时,在页面打开后的瞬间,你可以通过设计将更多的页面让他们看到.然而大多数网站都错失了这个 ...
- python+PIL批量制作淘宝主图(头图)及满屏水印添加
导读 项目中需要用到图片批量化处理,所以玩了下PIL做了个简单的小项目,解放双手批量制作淘宝主图的功能 任务目标 根据传入的图片数量,自动放大缩小寻找计算可对齐的中心点进行裁切 按照传入图片数量,定制 ...
- 【Latex】在标题下插入头图 teaser
更多内容请看 Github 单图 \documentclass[10pt,twocolumn,letterpaper]{article} \usepackage{graphicx} \usepacka ...
- 2021年中国生猪养殖行业发展现状及重点企业对比分析:生猪出栏量达6.71亿头[图]
一.发展现状 随着我国生猪养殖技术的不断提升,生猪存栏量快速增长,2021年中国生猪存栏量达4.49亿头,较2020年增加了0.4亿头,同比增长10.51%,目前我国养猪产业逐渐向着现代化以及规模化的 ...
- 微信小程序界面设计——自定义一个好看的头图
先看效果图 源码 <view style="overflow: hidden;"><image src='http://static.iswenzi.com/im ...
- 哔哩哔哩冬季头图小案例
代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8& ...
- 哔哩哔哩秋季头图小案例
实际上我认为图片序号是已经被精心安排过的.所以我们只要形成模糊效果就行了 代码: <!DOCTYPE html> <html lang="en"> < ...
- 一张图,看编程语言十年热度变化
作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 什么是 TIOBE 排行榜 TIOBE 排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量,并使用搜索引擎(如Googl ...
最新文章
- Python基础学习3
- Redis之七种武器
- div模拟textarea自适应高度
- Shiro.ini文件概述
- 【LCT】遥远的国度(P3979)
- Java讲课笔记12:static关键字
- 查询端口被什么程序占用及停止的方法及netstat的妙用
- Ubuntu设置局域网Windows共享文件Samba
- hihoCoder1223 不等式
- 搭建apache_??4、Apache环境web搭建
- spark和hadoop的区别
- 一年级下册健康教育教案
- php怎么eclipse打开,PHPEclipse的安装和使用
- java软件开发必读15本书籍
- 唯一插件化Replugin源码及原理深度剖析--唯一Hook点原理
- 前端 debugger
- 计算机网络的发展简史
- 免费网站流量统计服务汇总
- HTML选择器的学习
- 【2022】合肥市市赛冲刺【小学组】
热门文章
- C# Object.Equals方法深入研究
- 南京牵手印度软件 本土软件企业态度不一
- 关于MFC里面位图相关的操作
- 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_原理---大数据之hadoop工作笔记0074
- 大数据之-Hadoop完全分布式_集群文件存储路径说明_完全分布式集群测试---大数据之hadoop工作笔记0038
- Mycat安全_监控平台简介---MyCat分布式数据库集群架构工作笔记0035
- 发现Diolar 的边缘检测程序好像也有缺点
- 小程序php支付,前后端分离
- linux共享内存变量 tiaojianbianliang,低压集抄系统中Linux共享内存使用分析
- python编程(import头文件)