android-slidingactivity
介绍:
快速创建一个跟上Material Design时代的activity,该activity可以在垂直方向上滑动,向下划动可以撤销这个activity。另外还提供了一个inbox风格的动画。
运行效果:
使用说明:
安装
包含以下gradle脚本:
dependencies {
compile 'com.klinkerapps:sliding-activity:1.1.1'
}
然后重新sync项目。
用例
Sliding activity实现起来很简单。这里是一个简单的例子:
public class NormalActivity extends SlidingActivity {
@Override
public void init(Bundle savedInstanceState) {
setTitle("Activity Title");
setPrimaryColors(
getResources().getColor(R.color.primary_color),
getResources().getColor(R.color.primary_color_dark)
);
setContent(R.layout.activity_content);
}
}
你将创建一个指定了标题,primary color以及内容为activity_content布局的activity。
当然你也需要在AndroidManifest.xml中引用这个activity:
<activity
android:name=".NormalActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:theme="@style/Theme.Sliding.Light"/>
更多细节:首先,继承SlidingActivity。不重写onCreate()而是重写 init(),并在这里为app设置所有的选项。这些选项包括:
-
setTitle()
-
setImage()
-
setContent()
-
setPrimaryColors()
-
setFab()
-
disableHeader()
-
enableFullscreen()
更多activity的例子可以在sample application中找到,下面将展示一些代码片段。
Activity 选项
绝大多数activity选项都应该在init()里面实现。你可以 init()之后的任何地方实现 setImage() ,但是其余任何方法都不能在这个方法之外。
setTitle()
设置title让它可以随着滚动渐变进入toolbar的位置。可以这样:
setTitle(R.string.title);
或者
setTitle("Activity Title");
setImage()
你可以设置一个drawable资源id,也可以设置一个bitmap作为图片:
setImage(R.drawable.header_image);
setImage(mBitmap);
当设置图片的时候,有两种选择: 1) 在 init()里面设置 。2) 在init()外面设置。
它们具有非常不同的功能,因此理解它们的区别很重要。
如果工程中有一个drawable,并且已经把bitmap加载到了内存中,那么最好在 init()里面设置image。这会让activity的颜色可以根据图片而改变。
如果你想从一个url或者存储中加载图片,你不应该在主线程中做这件事情。这意味着你应该在activity已经初始化之后设置它。这样做的话图片将以circular reveal动画进入(lollipop+ )或者是淡入。同时activity也不会从图片提取颜色,而是采用primary color的颜色。
setContent()
设置内容与普通activity一样。可以设置一个布局资源的id或者是 一个view。
setContent(R.layout.activity_layout);
setContent(mView);
设置完了之后,可以使用findViewById(),这跟普通activity是一样的。
setPrimaryColors()
primary color用于在没有image的情况下为header添加颜色, primary color dark用于在activity滚动到屏幕顶部的时候status bar 的颜色。
setPrimaryColors(primaryColor, primaryColorDark);
需要注意的是,在 init()里面设置image会覆盖这些颜色。如果你想继续指定你自己的自定义颜色,而不是从图片中提取的颜色,请在setImage()之后调用setPrimaryColors() 。
setFab()
浮动操作按钮可以显示在展开的toolbar底部。
setFab(mBackgroundColor, R.drawable.fab_image, onClickListener);
当用户滚动,header开始缩小,FAB渐渐消失。当header回到初始大小,FAB则再次显示。
disableHeader()
r如果你不想在屏幕上显示header,可以在init()里面调用disableHeader()。
enableFullscreen()
如果你不想让顶部留出一点额外的空间让内容区域可以动画滚动上去,可以在init()里面调用enableFullscreen()。不过activity仍然是可以下滑取消的。
expandFromPoints(int,int,int,int)
这个属性将创建一个Inbox样式的展开动画(从屏幕的任意位置)。跟许多方法一样,参数分别是left offset, top offset, width, 和 height,它们描述了盒子的大小。
Intent intent = getIntent();if (intent.getBooleanExtra(SampleActivity.ARG_USE_EXPANSION, false)) {
expandFromPoints(
intent.getIntExtra(SampleActivity.ARG_EXPANSION_LEFT_OFFSET, 0),
intent.getIntExtra(SampleActivity.ARG_EXPANSION_TOP_OFFSET, 0),
intent.getIntExtra(SampleActivity.ARG_EXPANSION_VIEW_WIDTH, 0),
intent.getIntExtra(SampleActivity.ARG_EXPANSION_VIEW_HEIGHT, 0)
);
}
主题
library中包含了两个主题,专门用于SlidingActivity。可以在AndroidManifest.xml 文件注册 sliding activity时使用Theme.Sliding或者是Theme.Sliding.Light 。
目前使用sliding activity的app
APK 下载
如果你想先看看app,可以直接在这里下载apk。