首先我们看几张客户端试图:
前两个是网易的,后两个是腾讯的,(注意看上部title分页,当你点击不仅实现了分页,而且背景bar会跟着滑动,这个叫aciotnbar,sdk3.0以后就有了,)看着比一般单存改变背景的效果好看多了.
代码片段:
用于描绘.
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
paint.setColor(Color.RED);
// 如果当前curRectF=null,也就是第一次访问,则默认为draw第一个bar
if (curRectF == null)
curRectF = new RectF(tv1.getLeft() + space_x, tv1.getTop()
- space_y, tv1.getRight() - space_x, tv1.getBottom()
+ space_y);
// 第一次方位tarRectF=null,默认为draw
if (tarRectF == null)
tarRectF = new RectF(tv1.getLeft() + space_x, tv1.getTop()
- space_y, tv1.getRight() - space_x, tv1.getBottom()
+ space_y);
// 这个时候需要不停的更新
if (Math.abs(curRectF.left - tarRectF.left) < step) {
curRectF.left = tarRectF.left;
curRectF.right = tarRectF.right;
}
if (curRectF.left > tarRectF.left) {
curRectF.left -= step;
curRectF.right -= step;
invalidate();// 继续刷新,从而实现滑动效果,每次step32.
} else if (curRectF.left < tarRectF.left) {
curRectF.left += step;
curRectF.right += step;
invalidate();
}
canvas.drawRoundRect(curRectF, 5, 5, paint);
}
用于监听点击bar事件.
@Override
public void onClick(View v) {
tarRectF.left = v.getLeft() + space_x;
tarRectF.right = v.getRight() - space_x;
tarRectF.top = v.getTop() - space_y;
tarRectF.bottom = v.getBottom() + space_y;
invalidate();// 刷新
}
从而我们就可以实现这个效果:(红色滑块会随着你点击跟着滑动.看起来比较爽.)
现在还有一个问题:那就是我们怎么实现点击下面滑块的时候也让上面view跟着切换呢,你会说用onclick监听,是这样的,不过简单的对下面bar监听,你会发现。滑块并不会跟着滑动,其实原因是你之前调过onclick事件,所以这个时候你再次调用会把以前的冲掉. 不过我们有办法,最重要的是最下面一个actionBar.onClick(v);
代码片段:
@Override
public void onClick(View v) {
layout.removeAllViews();
Intent intent = null;
switch (v.getId()) {
case R.id.tv1:
intent = new Intent(ActionBarActivity.this, MainActivity1.class);
break;
case R.id.tv2:
intent = new Intent(ActionBarActivity.this, MainActivity2.class);
break;
case R.id.tv3:
intent = new Intent(ActionBarActivity.this, MainActivity3.class);
break;
case R.id.tv4:
intent = new Intent(ActionBarActivity.this, MainActivity4.class);
break;
default:
break;
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window subActivity = getLocalActivityManager().startActivity(
"subActivity", intent);
layout.addView(subActivity.getDecorView(), LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
actionBar.onClick(v);
}
这样我们就大功告成了,其实实现起来也不难,我也是参考别人的,相信你也ok的.
分享到:
相关推荐
android ActionBar与Menu - 2 - email中ActionBar分析
Template.Tab-based-ActionBar-Style.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android actionBar PPT
android的actionbar开发,以及使用radio button代替Tab
android-simple-actionbar-app 简单的Android ActionBar / Toolbar示例用法
带有传统标题栏 ActionBar 标题居中 的TitleActivity
android-tab-fragments ActionBar 选项卡和片段
Android-使用Android-ActionBar 本教程的主要目的是解释Android ActionBar的工作原理。 您可以在此处找到有关如何使用代码库的完整教程: 本教程由The App Guruz提出-最好的
主要是微信基本布局,使用actionbar
android-actionbar-for-2.x.x.7z
android仿微信6.0底部滑动菜单栏+导航栏,ViewPager+RadioGroup+ActionBar. 有博客描述
用ActionBar取代Android3.0之前的顶部标题栏,效果更炫,功能更丰富。项目中包含:源码+效果图+项目结构图 效果见博客地址:http://blog.csdn.net/yangyu20121224/article/details/9042387
ActionBar取代了传统的标题栏(title),其在activity位置就是title原有的位置,在activity的顶部。ActionBar上默认情况下包括了应用(app)的logo,logo的位置在ActionBar的左侧,紧挨在logo右侧的是activity的标题...
ActionBar-PullToRefresh ActionBar-PullToRefresh provides an easy way to add a modern version of the pull-to-refresh interaction to your application. Please note that this is not an update to Android-...
android-actionbar框架
android-隐藏动作栏和状态栏 Android的工具栏包含状态栏(状态栏)与标题列(操作栏)。如果需要克制会会隐藏必须要先到值资料夹中的themes.xml设置好的工具栏的样式。接着打开AndroidManifest.xml,更改application...
Google官方在android-support-v7包中添加了ActionBar,开始让2.1以后的版本支持ActionBar,此demo展现了它的简单使用!
android actionbar通用组件,帮组开发者减少工作量
ActionBar实现分页菜单(ActivityGroup+一些TextView布局.(在这里我们自定实现动态滚动效果))
Cangol-ActionBar 是一款Android自定义ActionBar组件。 截图: 使用: Maven <groupId>mobi.cangol.mobile <artifactId>actionbar <version>1.0.1 <type>aar Gradle compile 'mobi...