没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2013-11-04 09:48:56.000|阅读 1052 次
概述:以编程方式处理屏幕布局,锁定屏幕布局、控制活动生命周期,本文简明讲述以编程方式管理屏幕布局,每个小节都聚焦于这个主题的不同方面。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
首个显要的讨论点是如何手动处理布局变化。
接下来,我们来考虑应该以编程方式做什么来手动处理布局变化。假设在你的app内有一个名为InfoActivity的活动,你将为之以编程方式处理布局变化。在你的AndroidManifest.xml内,你已经有了类似如下InfoActivity的入口:
<activity android:name=".InfoActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity>
作为第一部,你应该添加android:configChanges属性到 activity标签内。
<activity android:name=".InfoActivity" android:configChanges="orientation|keyboardHidden" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity>
额外的线表明无论何时设备布局改变或者硬件键盘被打开, InfoActivity的执行都有处理布局变化的逻辑。更多这方面的信息可以在Android文档上被找到。
接下来必须执行手动处理这个布局变化的逻辑,你需要在InfoActivity中覆盖onConfigurationChanged()方式。
public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); . . . }
当设备屏幕布局改变时,AndroidManifest.xml阻碍了新活动自动创建,应该为新布局对GUI做任意改变,这需要在被覆盖的onConfigurationChanged()内手动处理。
请注意!即使这些改变在每次屏幕布局发生变化时阻碍了新活动的创建,它们并不锁定布局。换言之,从视觉上说你仍然看得到屏幕旋转。锁定屏幕布局将在下文中提到。
何时手动处理布局变化?
要考虑的下一个问题,是何时处理布局变化?无论屏幕布局何时改变,默认Android框架创建显示的活动。这是一直都有必要的么?如果不是,什么情况下才有必要?依据个人经验,上述问题的答案应该是:当屏幕布局改变时,它不总是必须回调显示的活动并创建再一次为了新布局而创建它。只有当portrait和landscape布局有质的不同时才有必要。我们来看两个简单的实例。
第一个实例如下显示列表视图中一周的日子。在两种布局中,该视图都一样,因此无论屏幕布局几时变化,没有必要回调并创建该活动。
<activity android:name=".Main" android:configChanges="orientation|keyboardHidden" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
public class Main extends ListActivity { private static final String[] MONTHS = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MONTHS)); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // . // Add code if needed // . } }
第二个实例展示两个图像,在portrait布局,它们是垂直对齐的;而在landscape布局上,它们是水平对齐的。
显然,两种布局有着本质的不同,而每当屏幕布局发生改变,相应的活动需要被再次创建。在这种情况下,活动生命周期不能被手动处理。
<activity android:name=".Main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
public class Main extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { setContentView(R.layout.main_p); } else { setContentView(R.layout.main_l); } } }-------------- | main_p.xml | -------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:src="@drawable/image1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:layout_marginLeft="60dip" /> <ImageView android:src="@drawable/image2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:layout_marginLeft="60dip" /> </LinearLayout>-------------- | main_l.xml | -------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:src="@drawable/image1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:layout_marginLeft="20dip" /> <ImageView android:src="@drawable/image2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:layout_marginLeft="40dip"/> </LinearLayout>
锁定屏幕布局
1,以编程方式
以编程方式锁定屏幕布局需要专门指示Android应该显示哪个屏幕布局。
如果你不是手动处理屏幕布局,你应该在执行onCreate()方式中这样做:
如果你是手动处理屏幕布局,你应该指定执行onConfigurationChanged()方式所需要的屏幕布局。
2,静态化地
或者,你还可以静态锁定屏幕。这是在 AndroidManifest.xml中完成的,在activity标签中,使用android:screenOrientation属性。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; // or = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; setRequestedOrientation(orientation); . // Add code if needed . }
或者
public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; // or = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; setRequestedOrientation(orientation); . // Add code if needed . }
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:慧都控件网跨团队协作中,测试信息的孤岛化与不同角色间的“理解鸿沟”严重阻碍协作效率。开发、测试与非技术成员常因信息分散或表述晦涩而难以高效协同。TestComplete自动化测试方案通过丰富的多格式报告、直观的可视化证据以及与现有工具链的无缝集成,打破信息壁垒,确保所有相关方都能便捷、清晰地获取和理解关键测试结果。
需求管理一直是软件开发与系统设计过程的关键环节,但也常常面临诸多痛点:需求描述模糊、变更频繁导致信息混乱,各环节追溯困难,以及团队成员与利益相关者之间协作效率低下。针对这些挑战,企业级建模平台Sparx EA通过强大的需求建模功能与可视化工具提供了高效解决方案。它支持需求的精细化属性管理、全流程追溯关联,以及多样化的图表展示,帮助团队清晰定义需求、实时跟踪状态,并确保信息透明共享。
HOOPS Web Platform不仅帮助RIB成功完成了iTWO从桌面到云端的跨越,更为建筑行业的数字化转型提供了强大的可视化引擎。未来,它将继续推动建筑管理走向更加智能与高效的新时代。
在大型技术项目中,工具链割裂、协作低效、安全失控是架构师与开发团队的共性痛点。Sparx Systems的Enterprise Architect(Sparx EA)终极版以四大核心技术能力直击这些挑战,成为企业级建模与系统工程的战略级解决方案。本文将深度解析其技术竞争力内核。
用于Delphi和C ++ Builder的VCL组件,提供高影响力的业务解决方案。
aiCharts for Android专门为Android设计和优化,支持多种不同形式的图表类型
Aspose.Words for Android via Java从Android应用程序中生成,操作,转换和渲染Word文件,而不依赖于Microsoft Word。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号