Android去掉标题,强制设置横屏或竖屏

本文介绍在Android应用开发中如何控制屏幕的方向,包括设置固定方向、响应方向变化及阻止因设备旋转而重启Activity的方法。

2011-07-10 14:40:47|分类: android |标签: |字号订阅

<wbr><br> 全屏<br> 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码</wbr>

requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题  
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,    WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏  

横屏

按照下面代码示例修改Activity的onResume方法

@Override  protected void onResume() {   
/**    * 设置为横屏    */   
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){    
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);   
}   
super.onResume();  
}  

或者在配置文件中对Activity节点添加android:screenOrientation属性(landscape是横向,portrait是纵向)

android:launchMode="singleTask" android:screenOrientation="portrait">  

要设置成竖屏设置成 SCREEN_ORIENTATION_PORTRAIT

还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。

要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:<wbr><br style="line-height:22px"><wbr><wbr><br style="line-height:22px"> 在AndroidManifest.xml里面配置一下就可以了。加入这一行<span style="line-height:22px">android</span>:screenOrientation="landscape"。<br style="line-height:22px"> 例如(landscape是横向,portrait是纵向):<br style="line-height:22px"><br style="line-height:22px"><span style="line-height:22px">Java</span><span style="line-height:22px">代码</span>:<br style="line-height:22px"><br style="line-height:22px"> &lt;?xml version="1.0" encoding="utf-8"?&gt;<wbr><br style="line-height:22px"> &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr>package="com.ray.linkit"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr>android:versionCode="1"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr>android:versionName="1.0"&gt;<wbr><br style="line-height:22px"><wbr><wbr> &lt;<span style="line-height:22px">app</span>lication android:icon="@drawable/icon" android:label="@string/app_name"&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr>&lt;<span style="line-height:22px">activity</span><wbr>android:name=".Main"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>android:label="@string/app_name"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>android:screenOrientation="portrait"&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;intent-filter&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;action android:name="android.intent.action.MAIN" /&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;category android:name="android.intent.category.LAUNCHER" /&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;/intent-filter&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr>&lt;/activity&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;activity android:name=".GamePlay"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> android:screenOrientation="portrait"&gt;&lt;/activity&gt;<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;activity android:name=".Option<span style="line-height:22px">View</span>"<wbr><br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> android:screenOrientation="portrait"&gt;&lt;/activity&gt;<wbr><br style="line-height:22px"><wbr><wbr> &lt;/application&gt;<wbr><br style="line-height:22px"><wbr><wbr> &lt;uses-<span style="line-height:22px">sdk</span><wbr>android:minSdkVersion="3" /&gt;<wbr><br style="line-height:22px"> &lt;/manifest&gt;<br style="line-height:22px"><br style="line-height:22px"><br style="line-height:22px"> 另外,android中每次<span style="line-height:22px">屏幕</span>的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的<span style="line-height:22px">游戏</span>就不会<span style="line-height:22px">自动</span>重启了!<br style="line-height:22px"><br style="line-height:22px"> 有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。<br style="line-height:22px"><br style="line-height:22px"> 而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的onConfigurationChanged方法。实现方式如下,不需要做太多的内容:<br style="line-height:22px"><br style="line-height:22px"> @Override<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr>public void onConfigurationChanged(Configuration newConfig) {<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> super.onConfigurationChanged(newConfig);<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// land do nothing is ok<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// port do nothing is ok<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br style="line-height:22px"><wbr><wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<think>好的,我现在需要帮助用户了解微信小程序的横屏开发教程解决方案。首先,我得回忆一下微信小程序的开发文档和相关资料。记得微信小程序的默认方向是,但有时候应用需要横屏展示,比如游戏者视频播放。用户的需求是如何实现横屏开发,可能需要调整幕方向、适配布局,以及处理可能的兼容性问题。 首先,我应该考虑如何设置幕方向。根据微信小程序的API,可能需要使用页面配置者全局配置来设置幕方向。例如,在页面的.json文件中设置"pageOrientation": "landscape",者在全局配置中设置。但需要注意,全局设置可能影响所有页面,而单个页面设置更灵活。 接下来是布局适配问题。横屏后,幕宽度和高度会变化,需要使用响应式布局。可能需要用到rpx单位,者通过CSS媒体查询来调整样式。比如,使用@media (orientation: landscape)来针对横屏模式下的样式进行调整。 另外,JavaScript API中的wx.onWindowResize方法可以监听窗口变化,实时调整布局。这可能对动态内容需要实时更新的界面很有用,比如图表游戏场景。 然后,兼容性也是一个关键点。不同设备可能有不同的表现,尤其是在iOS和安卓系统上。需要测试横屏模式下的样式是否正常,是否存在滚动条问题。参考引用中的内容,用户提到了去除scroll-view滚动条的解决方案,这可能和横屏开发中的布局问题相关,需要注意滚动区域的适配。 还需要考虑用户交互,比如是否允许手动旋转幕,者固定横屏方向。微信小程序可能默认允许用户旋转,但开发者可能需要锁定方向,这可能需要进一步的配置代码控制。 此外,横屏开发可能涉及到Canvas绘图WebGL内容的适配,需要调整画布的大小和比例,确保绘制内容正确显示。这可能需要在代码中动态获取窗口尺寸,并更新画布参数。 最后,可能需要提供示例代码,帮助用户具体实现横屏设置、布局调整和事件监听。同时,提醒用户测试不同设备和系统,确保兼容性。 总结下来,回答的结构应该是:配置横屏模式、布局适配方法、动态调整布局、兼容性处理、相关注意事项和示例代码。同时,根据用户提供的引用,引用相关的解决方案,比如去除滚动条的问题,可能在横屏布局中也会遇到,需要参考引用[3]中的方法处理。</think>### 微信小程序横屏开发解决方案 微信小程序的默认幕方向为,但通过以下步骤可实现横屏开发: #### 1. **配置横屏模式** - **全局配置**:在`app.json`中设置`"pageOrientation": "landscape"`,强制所有页面横屏: ```json { "window": { "pageOrientation": "landscape" } } ``` - **单页面配置**:在页面级`json`文件中设置,例如`game.json`: ```json { "pageOrientation": "landscape" } ``` #### 2. **适配横屏布局** - **使用响应式单位**:推荐用`rpx``vw/vh`单位,根据幕比例动态调整元素尺寸[^3]。 - **CSS媒体查询**:针对横屏单独定义样式: ```css @media (orientation: landscape) { .container { width: 100vh; height: 100vw; } } ``` #### 3. **动态调整布局** 通过`wx.getSystemInfoSync()`获取幕尺寸,实时计算布局: ```javascript const systemInfo = wx.getSystemInfoSync(); const windowWidth = systemInfo.windowWidth; const windowHeight = systemInfo.windowHeight; ``` #### 4. **监听窗口变化** 使用`wx.onWindowResize`监听幕旋转事件,动态更新UI(适用于需要实时响应的场景如游戏): ```javascript wx.onWindowResize((res) => { console.log('窗口尺寸变化:', res.size); }); ``` #### 5. **兼容性处理** - **iOS/Android滚动条问题**:横屏下若使用`<scroll-view>`,需隐藏滚动条: ```css scroll-view ::-webkit-scrollbar { width: 0; height: 0; display: none; } ``` 参考引用[3]的方案可彻底解决滚动条隐藏问题。 - **Canvas适配**:横屏时需重新设置画布宽高: ```javascript const query = wx.createSelectorQuery(); query.select('#canvas').fields({ node: true, size: true }).exec((res) => { const canvas = res[0].node; canvas.width = windowWidth; canvas.height = windowHeight; }); ``` #### 6. **注意事项** - **测试覆盖**:需在iOS和Android真机测试横屏效果,部分API(如`wx.vibrateShort`)可能因方向变化失效。 - **用户权限**:若需锁定横屏,需引导用户在手机系统设置中开启“自动旋转”功能。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值