FadingActionBar的使用

在经过被折磨了两天之后,终于搞出来了。。。

下载地址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哦



还有就是。。(废话真多)开源项目的更新是我们无法想象的,一定要多去尝试,多去折腾,问题解决的那一刻,那种感觉是什么都替代不了的。
















  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值