FadingActionBar的使用
来源:互联网 发布:js缺少对象,怎样调试 编辑:程序博客网 时间:2024/06/06 00:47
在经过被折磨了两天之后,终于搞出来了。。。
下载地址https://github.com/ManuelPeinado/FadingActionBar
我用的Android studio,这绝对是个坑。。但是又太好用了。。没办法硬着头皮搞吧。(Eclipse的同学就不清楚能不能适用了)
首先,下载,解压。然后。。(建议建一个library的文件夹,用来管理这些library)
1.导入library。library包,没什么好说的。(只导入这个包就可以用)
2.导入extras-actionbarsherlock包,(extras-actionbarcompat效果是差不多的具体我也没搞清楚- -)
ok,问题来了,有时候你会发现,library包或者actionbarsherlock导不进去!这是有多坑!
解决办法:这是Android studio的一个bug,已经存在了好久了。。方法就是重命名library包,或者剪切到其他文件夹。
然后你又会发现,这些根本编译不了。。因为很多文件不适用,有的因为找不到,有的因为版本不够。
ok,一个一个来。先去改library的。(就是你改了名字的)
Android studio是用gradle来把代码整合编译的,(这样说可能有点不准确,但是我是这样理解的)所以找到对应Module里的build.gradle文件,更改里面的内容。
很多东西系统自动找不到,你可以把那些删了,改成自己的。我的就改成了这样。
apply plugin: 'android-library'android { compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig { versionCode 1 versionName "1.0" targetSdkVersion 19 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] } }}//apply from: '../maven_push.gradle'
注意最后一行注释或者删掉。
然后是另一个。
apply plugin: 'android-library'dependencies { compile project(':library') compile "com.android.support:support-v4:20.0.0" compile ("com.actionbarsherlock:actionbarsherlock:[4.4,)@aar") { // Need to specifically exclude this as it is specified in ActionBarSherlock pom exclude group: 'com.google.android', module: 'support-v4' }}android { compileSdkVersion 19 buildToolsVersion '20.0.0' defaultConfig { versionName '1.0' versionCode 19 targetSdkVersion 19 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] } }}//apply from: '../maven_push.gradle'注意最开始那几行, compile project(':library') 就是引用原来的那个library,如果你改了那个library的名字,这里改成相应的名字就可以了。
compile "com.android.support:support-v4:20.0.0" support包,这里如果不改的话会报Android L的错,就是你用的最低版本太低了,不能适用于Android L,这里原来是[n,m)高中数学,想想就记起来了吧。它会默认使用最高版本的支持包,所以才会出错。
接下来就好点了。
原本这里是需要配置文件的,就是在项目的最外面,不过我觉得还是自己改了来的方便。
3.使用
(1)首先引入library(或者extras-actionbarsherlock,建议使用library包),这一个包就够了,其他的这个都已经包含了,所以不用管其他的。
(2)布局。先看下面一段FadingActionBarHelper的代码。知道这几块就好了。
FadingActionBarHelper helper = new FadingActionBarHelper()
.actionBarBackground(R.drawable.ab_background) //当listView到最上面时的actionbar
.headerLayout(R.layout.header) //listView上面一块的layout
.contentLayout(R.layout.activity_listview); //下面的listView
转回布局,由这三个方法可以看出,这三块其实是分开的,所以才能达到把图片顶出的效果。
.actionBarBackground就是一张图片
.headerLayout是你想方在listview上面的layout
.contentLayout(R.layout.activity_listview); 你的listview
(3)Activity 基本上都讲了。直接上代码吧。
.headerLayout(R.layout.header)
<?xml version="1.0" encoding="utf-8"?><ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/image_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@drawable/shuihan" />.contentLayout(R.layout.activity_listview);
<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" />这里要注意,listview的id一定要用@android格式的,不然是没有效果的。(因为这个id是library自己定义好的,在滑动的时候需要得到这个id)
然后是Activity
package com.example.app.fadingactionbar;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.manuelpeinado.fadingactionbar.FadingActionBarHelper;import java.util.ArrayList;import java.util.List;public class MyActivity extends Activity { private ListView listview; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FadingActionBarHelper helper = new FadingActionBarHelper() .actionBarBackground(R.drawable.ab_background) //当listView到最上面时的actionbar .headerLayout(R.layout.header) //listView上面一块的layout .contentLayout(R.layout.activity_listview); //下面的listView setContentView(helper.createView(this)); helper.initActionBar(this); list = new ArrayList<String>(); for (int i = 0; i < 40; i++) { list.add("test1"); } listview = (ListView) findViewById(android.R.id.list); listview.setAdapter(new mAdapter()); } class mAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view == null){ view = getLayoutInflater().inflate(R.layout.listview_item,null); TextView title = (TextView) view.findViewById(R.id.title); title.setText(list.get(i)); } return view; } }}注意listview的findviewbyid哦
还有就是。。(废话真多)开源项目的更新是我们无法想象的,一定要多去尝试,多去折腾,问题解决的那一刻,那种感觉是什么都替代不了的。
- FadingActionBar的使用
- 自定义ActionBar盘点---------FadingActionBar
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- 机房收费系统——需求分析(初期)
- HDOJ 题目3389 Game(阶梯博弈)
- extern "C"的用法
- HTML5桌面通知:notification api
- Ali and Snoopy(利用广度搜索走迷宫)
- FadingActionBar的使用
- iReport常见和注意的问题
- (搜索)跳棋系列6
- Intent和PendingIntent的区别
- POJ 1201 差分约束
- Halcon—Tuple中符号的含义
- JDOM解析XML
- pip和easy_install使用方式及pygal安装方式
- cocos2dx 3.1.1 环境搭建 win环境