首页 文章 精选 留言 我的

精选列表

搜索[页面布局],共10005篇文章
优秀的个人博客,低调大师

新浪微博布局学习——妙用TabHost

正文 一、效果图 红色部分是本文要实现的目标。 二、实现 maintabs.xml <? xmlversion="1.0"encoding="UTF-8" ?> < TabHost android:id ="@android:id/tabhost" android:layout_width ="fill_parent" android:layout_height ="fill_parent" xmlns:android ="http://schemas.android.com/apk/res/android" > < LinearLayout android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < FrameLayout android:id ="@android:id/tabcontent" android:layout_width ="fill_parent" android:layout_height ="0.0dip" android:layout_weight ="1.0" /> < TabWidget android:id ="@android:id/tabs" android:visibility ="gone" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:layout_weight ="0.0" /> < RadioGroup android:gravity ="center_vertical" android:layout_gravity ="bottom" android:orientation ="horizontal" android:id ="@id/main_radio" android:background ="@drawable/maintab_toolbar_bg" android:layout_width ="fill_parent" android:layout_height ="wrap_content" > < RadioButton android:text ="@string/main_home" android:checked ="true" android:id ="@+id/radio_button0" android:layout_marginTop ="2.0dip" android:drawableTop ="@drawable/icon_1_n" style ="@style/main_tab_bottom" /> < RadioButton android:id ="@+id/radio_button1" android:layout_marginTop ="2.0dip" android:text ="@string/main_news" android:drawableTop ="@drawable/icon_2_n" style ="@style/main_tab_bottom" /> < RadioButton android:id ="@+id/radio_button2" android:layout_marginTop ="2.0dip" android:text ="@string/main_my_info" android:drawableTop ="@drawable/icon_3_n" style ="@style/main_tab_bottom" /> < RadioButton android:id ="@+id/radio_button3" android:layout_marginTop ="2.0dip" android:text ="@string/menu_search" android:drawableTop ="@drawable/icon_4_n" style ="@style/main_tab_bottom" /> < RadioButton android:id ="@+id/radio_button4" android:layout_marginTop ="2.0dip" android:text ="@string/more" android:drawableTop ="@drawable/icon_5_n" style ="@style/main_tab_bottom" /> </ RadioGroup > </ LinearLayout > </ TabHost > styles.xml < style name ="main_tab_bottom" > < item name ="android:textSize" > @dimen/bottom_tab_font_size </ item > < item name ="android:textColor" > #ffffffff </ item > < item name ="android:ellipsize" > marquee </ item > < item name ="android:gravity" > center_horizontal </ item > < item name ="android:background" > @drawable/home_btn_bg </ item > < item name ="android:paddingTop" > @dimen/bottom_tab_padding_up </ item > < item name ="android:layout_width" > fill_parent </ item > < item name ="android:layout_height" > wrap_content </ item > < item name ="android:button" > @null </ item > < item name ="android:singleLine" > true </ item > < item name ="android:drawablePadding" > @dimen/bottom_tab_padding_drawable </ item > < item name ="android:layout_weight" > 1.0 </ item > </ style > home_btn_bg.xml < selector xmlns:android ="http://schemas.android.com/apk/res/android" > < item android:state_focused ="true" android:state_enabled ="true" android:state_pressed ="false" android:drawable ="@drawable/home_btn_bg_s" /> < item android:state_enabled ="true" android:state_pressed ="true" android:drawable ="@drawable/home_btn_bg_s" /> < item android:state_enabled ="true" android:state_checked ="true" android:drawable ="@drawable/home_btn_bg_d" /> < item android:drawable ="@drawable/transparent" /> </ selector > 代码说明: 1. 需要注意的是他这里把TabWidget的Visibility设置成了gone!也就是默认难看的风格不见了:,取而代之的是5个带风格的单选按钮. 2. 注意为单选按钮设置的style,其中最重要的是为其background设置了home_btn_bg.xml,也就是自定义了选中效果。 Java文件 public class MainTabActivity extends TabActivity implements OnCheckedChangeListener{ private TabHostmHost; private IntentmMBlogIntent; private IntentmMoreIntent; private IntentmInfoIntent; private IntentmSearchIntent; private IntentmUserInfoIntent; @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.maintabs); // ~~~~~~~~~~~~初始化 this .mMBlogIntent = new Intent( this ,HomeListActivity. class ); this .mSearchIntent = new Intent( this ,SearchSquareActivity. class ); this .mInfoIntent = new Intent( this ,MessageGroup. class ); this .mUserInfoIntent = new Intent( this ,MyInfoActivity. class ); this .mMoreIntent = new Intent( this ,MoreItemsActivity. class ); initRadios(); setupIntent(); } /** *初始化底部按钮 */ private void initRadios(){ ((RadioButton)findViewById(R.id.radio_button0)).setOnCheckedChangeListener( this ); ((RadioButton)findViewById(R.id.radio_button1)).setOnCheckedChangeListener( this ); ((RadioButton)findViewById(R.id.radio_button2)).setOnCheckedChangeListener( this ); ((RadioButton)findViewById(R.id.radio_button3)).setOnCheckedChangeListener( this ); ((RadioButton)findViewById(R.id.radio_button4)).setOnCheckedChangeListener( this ); } /** *切换模块 */ @Override public void onCheckedChanged(CompoundButtonbuttonView, boolean isChecked){ if (isChecked){ switch (buttonView.getId()){ case R.id.radio_button0: this .mHost.setCurrentTabByTag( " mblog_tab " ); break ; case R.id.radio_button1: this .mHost.setCurrentTabByTag( " message_tab " ); break ; case R.id.radio_button2: this .mHost.setCurrentTabByTag( " userinfo_tab " ); break ; case R.id.radio_button3: this .mHost.setCurrentTabByTag( " search_tab " ); break ; case R.id.radio_button4: this .mHost.setCurrentTabByTag( " more_tab " ); break ; } } } private void setupIntent(){ this .mHost = getTabHost(); TabHostlocalTabHost = this .mHost; localTabHost.addTab(buildTabSpec( " mblog_tab " ,R.string.main_home, R.drawable.icon_1_n, this .mMBlogIntent)); localTabHost.addTab(buildTabSpec( " message_tab " ,R.string.main_news, R.drawable.icon_2_n, this .mInfoIntent)); localTabHost.addTab(buildTabSpec( " userinfo_tab " ,R.string.main_my_info, R.drawable.icon_3_n, this .mUserInfoIntent)); localTabHost.addTab(buildTabSpec( " search_tab " ,R.string.menu_search, R.drawable.icon_4_n, this .mSearchIntent)); localTabHost.addTab(buildTabSpec( " more_tab " ,R.string.more, R.drawable.icon_5_n, this .mMoreIntent)); } private TabHost.TabSpecbuildTabSpec(Stringtag, int resLabel, int resIcon, final Intentcontent){ return this .mHost .newTabSpec(tag) .setIndicator(getString(resLabel), getResources().getDrawable(resIcon)) .setContent(content); } 代码说明 1. 由于TabWidget被隐藏,所以相关的事件也会无效,这里取巧用RadioGroup与RadioButton的特性来处理切换,然后监听事件调用setCurrentTabByTag来切换Activity。 2. 注意即使TabWidget被隐藏,也要为其设置indicator,否则会保持。 三、总结 在这之前如果要做这种效果我恐怕第一时间就会想到用ActivityGroup来做,主要是因为TabHost的TabWidget非常难看,用起来也不方便。其实从源码可以看出,TabActivity也是继承自ActivityGroup,这里结合了单选按钮和TabHost,各取其长,有时间可以专门写一个这样的自定义控件:) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582149,如需转载请自行联系原作者

优秀的个人博客,低调大师

上海加紧物联网产业布局

网络设备巨头思科预测,物联网产业在2020年底前同时能够连接网络的设备将增长至500亿台。国内设备巨头华为同样预测,到2025年,物联网设备数量则将接近1000亿台,新部署的传感器速度也将达到每小时200万个。 上海正抓紧制定《上海市推进工业互联网发展三年行动计划(2016-2018年)》。其实早在2010年,上海就已宣布成立总投资达8亿元的全国首家物联网中心——上海物联网中心,地点就在嘉定。而选择嘉定的原因,除了中科院上海微系统与信息技术研究所主要研发力量本身就在嘉定之外,嘉定区雄厚的科研基础和科研环境,以及全面的信息化基础,也成为物联网研发和产业聚集的有利条件。 在中科院微系统所基础上,参照中国台湾工研院模式成立的上海微技术工研院作为产业母体,正在嘉定不断孵化新的企业,完善产业链。而这些新孵化出来的企业作为嘉定物联网整体版图的重要拼图正在不断成长。 信息技术在工程机械领域的快速应用,引发工程机械向智能化、低功耗方向发展。中国机械行业借力物联网弯道超车。新一轮产业革命,中国机械企业有望在云联网时代重新洗牌中优先胜出。 机械行业具有明显周期性特征。而目前机械行业显然处于下行态势。国泰君安证券研究报告分析,受经济增速减缓影响,大部分机械行业盈利能力下降。传统行业总体需求疲软,缺乏核心竞争力的企业不断退出,行业集中度持续提升。其中,工程机械、机床、核电设备的净利润率分别为-4.8%、-9.8%、-11.6%。而据上述研报预测,机械行业新兴转型将以强调纵深的智能化为主攻方向。 在工业4.0时代,生产线柔性增加,一条生产线可以生产不同产品。通过信息技术支持,处理站可以实现技术联网。工业化时代的机械设备大多具有离散性,而基于集成电路的信息物理系统可以将所有设备、机械、零件整合进统一的监管体系。上海微技术工研院SOC高级经理武洁对《第一财经日报》记者表示,在工业控制领域,检测温度、湿度、煤气泄漏的智能仪表往往离散而不好集中控制,但借助集成电路将会打通关节,形成统一体系,使工业设备从机械化导向智能化。而在强调供给侧改革以及产业升级换代的大背景下,集成电路的发展与国家战略发展是同步调的。 作为物联网的基础,中国政府正加强对集成电路投资力度,设立第2期与第3期的国家集成电路产业投资基金(业内称之为“大基金”),预计在年内将推出IC产业各细分领域的引导政策,计划要在未来5年内将IC的自给率推高到50%。 作为国内首颗超低功耗32位微处理器研制团队,其主要负责人武洁进一步表示,虽然集成电路投资和开发会面临周期长、风险大等问题,但作为物联网时代的全覆盖基础,不管是在工业控制领域还是机器人等前沿开发,乃至M2M时代,集成电路在未来就像石油一样不可或缺。而伴随着中国制造2025的深度推进,在工业领域等表现突出的集成电路戏份无疑将会加大。 本文转自d1net(转载)

优秀的个人博客,低调大师

周涛:企业如何布局大数据?

周涛,博士,教授,电子科技大学互联网科学中心主任。《大数据时代》翻译者。于2005年获中国科学技术大学学士学位,2010年获瑞士弗里堡大学物理系哲学博士学位,主要研究方向为复杂性科学、网络科学、信息物理、人类动力学和群集动力学。 最近,电子科技大学教授,云基地大数据实验室合伙人周涛在接受采访时提出,对于普通企业要通过修炼成为大数据企业,关键要做好7个步骤: 第一步是要实现数据化。企业要为此做好计划,到底需要保存什么样的数据,以人为中心的数据还是以产品为中心,还是更关注企业运营,需要做好这样的计划,然后再将企业生产经营中的数据保存下来,即便是现在看来没什么用的数据,未来也可能产生巨大的价值。比如说像售楼处、体验店客户的来访数据,就有必要完整的记录下来。包括怎么过来的,一个人来还是几个人,有老人和小孩吗,穿什么样的衣服等等,还有客户的情绪

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册