- 浏览: 626035 次
文章分类
最新评论
-
q781253433:
qin ~.求demo看看~
Android之Widget -
zhongyuanceshi:
博主,没看到你的例子的Demo,共享下
Android之Widget
本文来自 http://blog.csdn.net/hellogv/ ,引用必须注明出处!
很多客户端软件和浏览器软件都喜欢用 Tab 分页标签来搭建界面框架。读者也许会马上想到使用 TabHost 与 TabActivity 的组合,其实最常用的不是它们,而是由 GridView 与 ActivityGroup 的组合。每当用户在 GridView 选中一项, ActivityGroup 就把该项对应的 Activity 的 Window 作为 View 添加到 ActivityGroup 所指定的容器 (LinearLayout) 中。
接下来贴出本例运行的效果图 :
ImageAdapter 是本实例的关键之一,它继承于 BaseAdapter ,并加入一些自定义的方法。ImageAdapter的源码如下:
SetFocus(int)这个方法是个关键点,即实现选中的效果。例如有 ABCD4 个 Item ,其中 C 被选中了,那么除 C 以外的 Item 都被设置为未被选中的样式,而 C 则设置为选中的样式。
接下来就开始写主Activity,主Activity包含GridView 控件,名为 gvTopBar ,有 2 点是需要注意一下的。
- SetNumColumns() :必须要使用 setNumColumns 来设置列数,因为这个 GridView 只有一行,即所有的 Item 都在同一行, Item 数量即为列数。
- setSelector(new ColorDrawable(Color.TRANSPARENT)) :把系统默认选中的背景色透明化,因为我们已经在 BaseAdapter 中加入了 SetFocus() 来改变选中的样式。
- package com.ActivityGroupDemo;
- import android.app.Activity;
- import android.app.ActivityGroup;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.graphics.Color;
- import android.graphics.drawable.ColorDrawable;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Gravity;
- import android.view.View;
- import android.view.Window;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.AdapterView;
- import android.widget.GridView;
- import android.widget.LinearLayout;
- import android.widget.Toast;
- import android.widget.AdapterView.OnItemClickListener;
- /**
- *
- * @author GV
- *
- */
- public class ActivityGroupDemo extends ActivityGroup {
- private GridView gvTopBar;
- private ImageAdapter topImgAdapter;
- public LinearLayout container; // 装载sub Activity的容器
- /** 顶部按钮图片 **/
- int [] topbar_image_array = { R.drawable.topbar_home,
- R.drawable.topbar_user, R.drawable.topbar_shoppingcart,
- R.drawable.topbar_note };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.main);
- gvTopBar = (GridView) this .findViewById(R.id.gvTopBar);
- gvTopBar.setNumColumns(topbar_image_array.length);// 设置每行列数
- gvTopBar.setSelector(new ColorDrawable(Color.TRANSPARENT)); // 选中的时候为透明色
- gvTopBar.setGravity(Gravity.CENTER);// 位置居中
- gvTopBar.setVerticalSpacing(0 ); // 垂直间隔
- int width = this .getWindowManager().getDefaultDisplay().getWidth()
- / topbar_image_array.length;
- topImgAdapter = new ImageAdapter( this , topbar_image_array, width, 48 ,
- R.drawable.topbar_itemselector);
- gvTopBar.setAdapter(topImgAdapter);// 设置菜单Adapter
- gvTopBar.setOnItemClickListener(new ItemClickEvent()); // 项目点击事件
- container = (LinearLayout) findViewById(R.id.Container);
- SwitchActivity(0 ); //默认打开第0页
- }
- class ItemClickEvent implements OnItemClickListener {
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
- SwitchActivity(arg2);
- }
- }
- /**
- * 根据ID打开指定的Activity
- * @param id GridView选中项的序号
- */
- void SwitchActivity( int id)
- {
- topImgAdapter.SetFocus(id);//选中项获得高亮
- container.removeAllViews();//必须先清除容器中所有的View
- Intent intent =null ;
- if (id == 0 || id == 2 ) {
- intent = new Intent(ActivityGroupDemo. this , ActivityA. class );
- } else if (id == 1 || id == 3 ) {
- intent = new Intent(ActivityGroupDemo. this , ActivityB. class );
- }
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- //Activity 转为 View
- Window subActivity = getLocalActivityManager().startActivity(
- "subActivity" , intent);
- //容器添加View
- container.addView(subActivity.getDecorView(),
- LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
- }
- }
主Activity的布局XML文件源码如下:
发表评论
-
Android之Fastboot、Recovery基础知识
2013-12-19 22:13 1078参考文章: http://blog.csdn.net/y9 ... -
Eclipse设置主题
2013-10-26 22:32 698下载自己喜欢的主题: http://eclipsec ... -
gitignore文件的配置
2013-09-24 15:29 1730gitignore文件在Android ... -
Eclipse安装Git插件
2013-09-24 14:20 804http://jiangli.easymorse.com/?p ... -
Eclipse像Xcode一样自动有提示
2013-09-05 17:04 12201. 打开Eclipse,然后打开“Preferences ... -
点九PNG技术
2013-04-16 13:26 886参考文章: http://blog.csdn.net/g ... -
Android ASE 脚本环境
2013-04-10 12:32 1187原文: http://blog.sina.com.cn/ ... -
android 按两次返回键退出
2012-12-25 20:01 1322package com.anjoyo.test; ... -
android混淆代码总结
2012-12-19 18:02 1523反编译工具下载地址:http://ishare.iask.si ... -
System.out.printf输出格式
2012-12-13 22:01 2527// 定义一些变量,用来格式化输出。 double ... -
Regex正则表达式的使用
2012-12-09 20:20 1831正则表达式是用来描述某些字符串规则的工具,可以用此规则来做 ... -
IOS&Android开发 使用特殊字体,使用自定义字体
2012-11-24 00:16 1570IOS开发: 原文链接:http://tieba.baidu ... -
AspectJ的安装和Eclipse的AJDT插件的配置
2012-11-19 15:21 4960安装AspectJ是为了正常使用软件MonkeyTalk 1 ... -
Mac配置android开发环境
2012-11-13 16:18 48一.Eclipse的下载 到网站:http ... -
RelativeLayout相关属性
2012-11-13 14:49 962android:layout_centerInP ... -
Android资源文件
2012-11-04 15:22 992res [res中共有10种文 ... -
activity的启动方式(launch mode)
2012-11-04 15:14 866其他很详细的参考:http://blog.csdn.net/b ... -
android分享功能的实现(分享到微博空间等)
2012-11-03 22:15 2210//Intent intent = new Inten ... -
Android开发环境配置
2012-11-03 20:04 8821、JDK安装: http://jing ... -
android intent和intent action大全
2012-09-13 20:25 1059android 中intent是经常要用到的。不管是页面 ...
相关推荐
综上所述,`ActivityGroup + GridView`实现的Tab分页标签方案虽然在早期Android开发中常见,但随着Android系统的不断升级,现在更推荐使用`Fragment`和`ViewPager`等更现代的组件。然而,理解这些旧技术仍然有助于...
很多客户端软件和浏览器软件都喜欢用Tab分页标签来搭建界面框架。读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,...
总的来说,通过`ActivityGroup`和`GridView`的结合,我们可以创建一个具备Tab分页和滑动切换功能的界面。然而,由于`ActivityGroup`在新的Android版本中已被弃用,现在推荐使用`Fragment`和`ViewPager`来实现类似的...
这个教程将带你了解如何使用`ActivityGroup`和`GridView`来实现Tab分页,从而达到高仿微信界面的效果。`ActivityGroup`是Android早期版本中用于在一个Activity内嵌套其他Activity的方式,而`GridView`则是一个可以...
【Android入门:ActivityGroup+GridView实现Tab分页标签】在Android开发中,创建Tab分页标签界面是一个常见的需求,尤其在构建多模块、多页面的应用时。传统的做法可能使用TabHost和TabActivity,但实际应用中,更...
在Android开发中,ActivityGroup和GridView是两种常用的组件,它们可以协同工作来实现标签分页的效果,这是一种常见的用户界面设计模式,通常用于展示多个类似内容的页面,让用户通过标签进行切换浏览。本篇将深入...
总之,虽然`ActivityGroup`+`GridView`的组合在旧版Android开发中常见,但现代Android开发中,应优先选择`Fragment`和`ViewPager`等组件来实现Tab分页和页面滑动效果。这样不仅代码更简洁,而且能充分利用Android...
在Android开发中,创建带有分页功能的界面是常见的需求,而使用`GridView`和`ActivityGroup`实现分页是一种不常用但仍然有效的方法。在本文中,我们将深入探讨如何结合这两种组件来创建一个TAB分页的效果。 首先,`...
在Android应用开发中,"基于GridView和ActivityGroup实现的TAB分页"是一个常见的设计模式,用于构建具有多个页面(Tab)且每个页面展示不同数据集的应用界面。这种设计能够提高用户体验,让用户通过简单的点击切换就...
本篇将详细讲解如何利用`GridView`和`ActivityGroup`实现一个Tab分页菜单。 首先,`GridView`是Android中的一个控件,它允许你展示一列或多列的数据项,通常用于创建网格视图。`GridView`可以自定义布局,每一项都...
我之前做分页都是用GridView和ActivityGroup实现的 因为觉得TabHost不好用 还有就是自己水平差的原因吧 如果帮的话 重写view任何问题都可以解决 呵呵 下面请看实现过程 其实很简单