- 浏览: 270447 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
androidios2014:
运行有滚没有把分组选项置顶,楼主帮忙给个源码学习7196628 ...
【so easy~】完全仿QQ好友列表,自定义ExpandableListView! -
hnu_hgc:
求代码,3243544018@qq.com
Android释放内存(结束进程) -
hnu_hgc:
求代码工程
Android释放内存(结束进程) -
l657757077:
楼主给个源码学习学习。邮箱:657757077@qq.com
【so easy~】完全仿QQ好友列表,自定义ExpandableListView! -
hao_yh:
楼主,修改后的代码能发我一份吗?感谢。感觉现在是只要界面创建就 ...
【so easy~】完全仿QQ好友列表,自定义ExpandableListView!
最近比较懒惰,也没有更新博客。今天就把刚刚实现的一个小效果分享给大家!
我的底部菜单是使用ActivityGroup实现的,先上代码,ActivityGroup布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 动态显示界面 -->
<LinearLayout
android:id="@+id/bodyL"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
<!-- 底部功能菜单栏 -->
<LinearLayout
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:layout_height="60px"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="5"
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="@drawable/tab_background" >
<ImageView
android:layout_width="32dp"
android:layout_height="35dp"
android:layout_gravity="top|center"
android:layout_marginTop="4dp"
android:background="@drawable/home" />
</LinearLayout>
<LinearLayout
android:id="@+id/gamebox"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="5"
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="@drawable/tab_background" >
<ImageView
android:layout_width="32dp"
android:layout_height="35dp"
android:layout_gravity="top|center"
android:layout_marginTop="4dp"
android:background="@drawable/gamebox" />
</LinearLayout>
<LinearLayout
android:id="@+id/team"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="5"
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="@drawable/tab_background" >
<ImageView
android:layout_width="32dp"
android:layout_height="35dp"
android:layout_gravity="top|center"
android:layout_marginTop="4dp"
android:background="@drawable/team" />
</LinearLayout>
<LinearLayout
android:id="@+id/more"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="5"
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="@drawable/tab_background" >
<ImageView
android:layout_width="32dp"
android:layout_height="35dp"
android:layout_gravity="top|center"
android:layout_marginTop="4dp"
android:background="@drawable/more" />
</LinearLayout>
</LinearLayout>
<!-- 底部焦点 使用Imageview 注意要放在RelativeLayout最后 才可遮挡后面的菜单 建议使用半透明图片 -->
<ImageView android:layout_alignParentBottom="true" android:id="@+id/tab_selector" android:layout_width="wrap_content" android:layout_height="60px" android:src="@drawable/tab_highlight"/>
</RelativeLayout>
ActivityGroup 代码:
public class ActsGroup extends ActivityGroup {
private DisplayMetrics _dm = null; // 获得分辨率
private ImageView _tab_selector = null; //焦点控件
private LinearLayout bodyView;
private LinearLayout home, gamebox, team, more;
private int flag = 0; // 通过标记跳转不同的页面,显示不同的菜单项
private int temp_flag = 0;
// private String parameter = Constant.BUTTON_HOME;// 初始化加载
public ActsGroup(){
_dm = new DisplayMetrics();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE); //无标题
super.onCreate(savedInstanceState);
setContentView(R.layout.acts_group);
suitScreen();
initMainView();
// 主界面开始接收参数
Bundle bundle = getIntent().getExtras();
if (null != bundle) {
flag = bundle.getInt("flag");
}
// 默认显示 播放界面
showView(flag);
home.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
flag = 0;
showView(flag);
}
});
gamebox.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
flag = 1;
showView(flag);
}
});
team.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
flag = 2;
showView(flag);
}
});
more.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
flag = 3;
showView(flag);
}
});
}
/*
* 初始化主界面底部的功能菜单
*/
public void initMainView() {
bodyView = (LinearLayout) findViewById(R.id.bodyL);
home = (LinearLayout) findViewById(R.id.home);
gamebox = (LinearLayout) findViewById(R.id.gamebox);
team = (LinearLayout) findViewById(R.id.team);
more = (LinearLayout) findViewById(R.id.more);
}
/**
* 适应不同分辨率 设置焦点控件的宽度
*/
private void suitScreen(){
getWindowManager().getDefaultDisplay().getMetrics(_dm);
_tab_selector = (ImageView) findViewById(R.id.tab_selector);
LayoutParams para = _tab_selector.getLayoutParams();
para.height = 60;
para.width = _dm.widthPixels>>2; //我底部四个按键所以 每个占1/4宽度
_tab_selector.setLayoutParams(para);
}
// 在主界面中显示其他界面
public void showView(int flag) {
switch (flag) {
case 0:
showHome();
break;
case 1:
showGamebox();
break;
case 2:
showTeam();
break;
case 3:
showMore();
break;
default:
break;
}
}
/**
* 根据不同的temp_flag,flag 生成不同的animation,主要是设置fromX和toX
*/
public void animationShow(){
if(temp_flag!=flag){
System.out.println("fromX:"+temp_flag/4f+",toX::"+flag/4f);
AnimationSet as = new AnimationSet(true);
TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, temp_flag/4f, Animation.RELATIVE_TO_PARENT, flag/4f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f);
ta.setDuration(500);
as.setFillAfter(true);
as.addAnimation(ta);
_tab_selector.startAnimation(as);
temp_flag = flag;
}
}
public void showHome() {
bodyView.removeAllViews();
bodyView.addView(getLocalActivityManager().startActivity("home",
new Intent(ActsGroup.this, Home_Activity.class)).getDecorView());
animationShow();
}
public void showGamebox() {
bodyView.removeAllViews();
bodyView.addView(getLocalActivityManager().startActivity(
"gamebox", new Intent(ActsGroup.this, GameBox_Activity.class))
.getDecorView());
animationShow();
}
public void showTeam() {
bodyView.removeAllViews();
bodyView.addView(getLocalActivityManager().startActivity("team",
new Intent(ActsGroup.this, GameBox_Activity.class)).getDecorView());
animationShow();
}
public void showMore() {
bodyView.removeAllViews();
bodyView.addView(getLocalActivityManager().startActivity("more",
new Intent(ActsGroup.this, GameBox_Activity.class)).getDecorView());
animationShow();
}
}
最后的效果是 当你点击不同的底部tab 高亮块儿(选择焦点)会移动到相应位置.
gif效果不太好,动的比较快,大家就看看意思吧,实际效果和网易新闻、机锋市场等应用的效果一样!
有什么问题可以留言~
评论
4 楼
libo19881179
2011-11-25
mjbb 写道
这gif图片是用什么工具实现的啊?
这就是完整的 其他的也不是这里用到的了
3 楼
陈文景
2011-11-25
代码敢不敢给完整??
2 楼
libo19881179
2011-11-18
mjbb 写道
这gif图片是用什么工具实现的啊?
豌豆荚 呵呵
1 楼
mjbb
2011-11-18
这gif图片是用什么工具实现的啊?
发表评论
-
【so easy】Android手动打包流程,完全详细版!
2012-08-09 12:19 5238由于是先写的word文档,所以排版不好,看不清的朋友可以直 ... -
转:Bitmap造成OOM的讨论与解决方案
2012-07-26 16:08 11243android BitmapFactory的OutOfM ... -
【so easy~】自定义上下menu菜单
2012-06-25 18:14 2431最近做了自定义菜单,许多阅读器的样子,都是点击屏幕中央弹 ... -
【so easy】Tabhost每个tab中放入多个Activity!
2012-04-25 18:14 5109最近做完了一个客户端项目 外面是个tabhost(用于底部t ... -
【so easy~】完全退出
2012-03-08 16:52 1742String packagename = getPac ... -
【BUG解决】WebView cookies清理
2012-03-05 15:21 12110今天在项目中发现一个BUG 在使用新浪微博账户登录应用时,w ... -
Project has no default.properties file! Edit the project properties to set one.
2012-02-20 14:02 1871导入新项目 有时会:Project has no def ... -
【so easy~】完全仿QQ好友列表,自定义ExpandableListView!
2012-01-10 16:14 25080最近,需要做一个可展开的listview,不禁想起了Expan ... -
【so easy~】正则表达式常用匹配
2012-01-03 09:31 4494http://androiddada.iteye.c ... -
Android释放内存(结束进程)
2011-12-30 15:45 10209这两天在搞个内存清理小插件,网上很少这方面资料,之前找过清 ... -
【so easy~】 Gallery 模仿Flash广告栏~!附源码
2011-12-19 16:24 5659先上个效果图~ http://androiddada.i ... -
android 获得手机信息
2011-12-02 14:22 1375Android中与电话功能相关的类是 Telephony ... -
【so easy~】 Webview离线功能(优先cache缓存+cache缓存管理)!
2011-11-28 17:05 39711在做Webview显示服务器的html功能时 需要加入离线功能 ... -
转!SQL:char、varchar、text和nchar、nvarchar、ntext的区别
2011-11-21 16:07 1773SQL:char、varchar、text和nchar、n ... -
转:shape 渐变!描边!圆角!漂亮的自定义背景
2011-11-09 09:47 3977在实现背景渐变的帖子里 http://androi ... -
ListView item渐变背景(ListView必备!)
2011-11-07 15:32 7198在看他人的代码学习时,无意中发现的。很多应用中的ListVi ... -
Android之系统自带的文字外观设置及实际显示效果图
2011-11-07 14:50 1326Android之系统自带的文字外观设置及实际显示效果图 ... -
【so easy~】 Intent实现 <分享>功能!~
2011-10-31 15:06 1535http://androiddada.iteye.com/ ... -
【so easy~】 GPS的那点儿事儿~!
2011-10-28 14:27 2048http://androiddada.iteye.com/ ... -
Service使用总结 与sdk部分翻译
2011-10-27 15:12 17271. Service SDK翻译 ...
相关推荐
综上所述,"今日头条仿网易新闻TopNews"是一个面向Android用户的新闻阅读应用,它复制了网易新闻的主要功能,如多类别新闻展示、动态加载、个性化推荐、评论互动等,并可能对性能进行了优化,为用户提供便捷的新闻...
"SoEasy办公效率平台"是一款专为提升个人和团队办公效率设计的应用软件。这款平台集成了多种实用功能,旨在简化日常办公任务,提高工作效率。作为一款"办公好助手",它可能包含了文档管理、项目协作、日程规划、任务...
互联网资讯,技术简介,IT、AI技术,人工智能
物联网So Easy 基于Blynk平台的IOT项目实践 配套资源 本书是经典的、畅销的Spring学习和实践指南。第5版针对Spring 5进行了全面更新。第5版涵盖了Spring 5.0和Spring Boot 2.0里程碑式的更新。 全书分为5个部分,...
本文将详细介绍EasyAR插件及其在Unity中的应用。 EasyAR插件概述: EasyAR是一款跨平台的AR引擎,支持多种设备,包括智能手机、平板电脑以及智能眼镜等。它为开发者提供了丰富的API和工具,用于构建AR应用,如图像...
SoEasy办公效率平台,为提供办公人员办公必备工具,是全国最全面、最专业、最实用的办公辅助工具,专为提升办公能力,及办公效率的学习平台,由数名微软金牌讲师、资深顾问等组成的专家团队,以快速提升个人工作效率...
本项目"基于Android的移动应用中英文电子词典源码(so easy)"提供了一个简单易懂的源码示例,帮助开发者快速理解和实践Android应用开发。 首先,这个应用的核心功能是词典查询。它可能包含以下几个关键组件: 1. ...
SoEasy办公效率平台是一款办公人员必备工具。提供最易用、最集中、最专业OFFICE资源。 SoEasy办公效率平台功能: 1、包含Office中多个组件海量培训视频(Word,Excel,PowerPoint,Outlook等)。 2、文档及PPT...
温度报警器SOEASY2010说明书
Mac中的EasyConnect应用的dmg安装资源!亲测有效
Office资源宝库-SoEasy办公效率平台,是一款实用的办公辅助软件,辅助办公人员更好的应用ppt、excel、word等办公软件。软件提供视频教程、模板、图片、vba开发的小工具、各种文档资源、在线求助等功能。免费下载。
【SOEASY智能训练系统与BYOD模型在高职英语AB级辅导中的应用】 在当前的教育环境下,如何提高高职院校非英语专业学生的综合英语能力成为一个关键议题。全国高等学校英语应用能力考试(PRETCO),即大学英语AB级考试...
2、支持一般的文件操作,如搜索、复制、移动、改名、删除、新建文件夹等功能应有尽有; 3、特有的网络校时功能,使得电脑时间与网络时间随时同步; 4、特有的文件夹历史记录管理功能,切换目录更加快捷方便; 5、...
高二英语必修三必背的句型例句,掌握可期中考试Soeasy!------.pdf
ADAMS(Automatic Dynamic Analysis of Mechanical Systems)是一个著名的机械系统动力学仿真软件,它可以分析多体系统动力学行为,广泛应用于汽车行业、航空航天、机器人制造等领域。ADAMS可以通过创建精确的机械...
通过深入研究这个E4A仿网易云音乐源码,开发者不仅可以提升E4A编程技能,还能掌握Android应用开发的一般流程和常见技术,对于个人的编程能力提升大有裨益。无论是对E4A感兴趣的初学者还是有一定经验的开发者,都能从...
本项目“Android应用设计源码-中英文电子词典源码so easy”提供了这样一个实例,对于初学者或希望提升Android技能的开发者来说,是一个宝贵的资源。 首先,我们要了解Android应用的基本结构。一个标准的Android应用...
Android中英文电子词典源码(so easy).zip项目安卓应用源码下载Android中英文电子词典源码(so easy).zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
【系统开发与应用】在当前移动学习和泛在学习的潮流中,So Easy系统利用移动设备的便携性,让学生能够随时随地进行英语学习。研究发现,正确引导学生使用手机进行学习,不仅能够提高学习效率,还能提升教学质量。该...