社区
Android
帖子详情
在竖屏下显示一个横屏的alertdialog
m0_37646670
2019-06-13 02:04:57
由于竖屏横向分辨率太小,alertdialog显示不方便,想横屏显示一个更宽的alertdialog,怎么实现
...全文
456
2
打赏
收藏
在竖屏下显示一个横屏的alertdialog
由于竖屏横向分辨率太小,alertdialog显示不方便,想横屏显示一个更宽的alertdialog,怎么实现
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
m0_37646670
2019-06-15
打赏
举报
回复
使layout旋转后,坐标变了吗?
fenghuangdewenrou
2019-06-13
打赏
举报
回复
你可以自己自定义一个View视图布局,用Dialog显示就行了,可以调整dialog背景大小
private Dialog dialog;
WindowManager windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
// 定义Dialog布局和参数
dialog = new Dialog(context, R.style.AlertDialogStyle);
dialog.setContentView(view);
// 调整dialog背景大小
lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display
.getWidth() * 0.85), LayoutParams.WRAP_CONTENT));
使用
Dialog
Fragment替代
Alert
Dialog
Google官方推荐使用
Dialog
Fragment代替
Alert
Dialog
,很好的解决屏幕旋转产生的问题。。。
Android 开发技巧
0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity 堆栈 18 2.1.6、Intent对象调用Activity实例 19 2.1.7、Activity透明 21 2.1.8、一次性关闭所有的Activity 22 2.1.9、PreferenceActivity 用法 22 2.1.10、
Dialog
风格的Activity 23 2.1.11、横
竖
屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是Service 26 2.3.2、如何使用Service 27 2.3.3、Service的生命周期 32 2.3.4、判断服务开启状态 33 2.3.5、获取启动的服务 34 2.4、CONTENT PROVIDER 35 3、ANDROID UI LAYOUT 35 3.1、概述 35 3.2、线性布局(LINEAR LAYOUT) 36 3.3、相对布局(RELATIVE LAYOUT) 39 3.4、TABLELAYOUT 40 3.5、ABSOLUTELAYOUT 47 4、ANDROID UI 控件 48 4.1、IMAGEBUTTON 48 4.1.1、图案填充问题 48 4.2、TEXTVIEW 49 4.2.1、动态滚动 49 4.3、EDITTEXT 49 4.3.1、光标选择 49 4.4、TITLEBAR 50 4.4.1、非全屏状态下不
显示
title标题栏 50 4.4.2、标题栏进度指示器 50 4.4.3、titleBar 高级实现方法(更美观) 51 4.4.4、获取标题栏和状态栏高度 57 4.4.5、标题栏
显示
简单的进度框 57 4.5、MENU 58 4.5.1、简单的代码 58 4.5.2、menu实现的两种方法 58 4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView自定义分割线 66 4.6.2、LIST例一 66 4.6.3、LIST例二 76 4.6.4、LIST例三 80 4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter例 88 4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、DatePicker/TimePicker 115 4.9.2、DatePicker
Dialog
/TimePicker
Dialog
119 4.10、WEBVIEW 120 4.10.1、WebView的使用 120 4.11、SCROLLVIEW 121 4.11.1、ScrollView的使用 121 4.12、GRIDVIEW 124 4.12.1、GridView的使用 124 4.13、GAMEVIEW 127 4.13.1、
显示
到
一个
布局中 127 4.14、TOASTE 128 4.14.1、短时间
显示
128 4.14.2、长时间
显示
128 4.15、对话框 128 4.15.1、简单的对话框: 128 4.15.2、包含两个按钮的对话框 128 4.15.3、三个按钮的提示框 129 4.15.4、包含输入的dlg 131 4.15.5、圆形进度框 133 4.15.6、
Alert
Dialog
.Builder 133 4.15.7、模式对话框 134 4.16、拖动BUTTON获得位置 135 5、ANDROID UI 美化 137 5.1、简单美化BUTTON、IMAGEBUTTON、TEXTVIEW等控件 137 5.2、BUTTON美化案例☆ 139 5.3、IMAGEBUTTON 按下时的动画效果 142 5.4、滚动条
显示
与隐藏 143 5.5、LISTVIEW 与 SCROLLVIEW 解决办法 144 方法一:(重写ListView) 144 方法二: 150 5.6、3D魔方 151 6、ANDROID UI 动画 160 6.1、四种2D动画 160 6.1.1、透明度控制动画效果 alpha 160 6.1.2、旋转动画效果 rotate 161 6.1.3、尺寸伸缩动画效果 scale 162 6.1.4、位置转移动画效果 translate 163 6.1.5、四种动画效果的调用 164 7、异步调用 167 开辟
一个
线程: 167 THREAD: 168 HANDER 170 TIMER 173 ANDROID 界面刷新 174 MESSAGE HANDER 175 用法: 175 线程与子线程调用MessageHander 177 Messagehandler实例 177 8、数据存储与读取 179 1. PREFERENCES 179 2. FILES 180 3. DATABASES 180 4. NETWORK 183 5、CONTENTPROVIDER 183 6、执行SQL语句进行查询 188 用法1 188 其它: 188 详解: 189 查看SQLITE表格内容 192 9、常用功能的实现 193 9.1、获取手机型号以及系统版本号 193 9.2、更改应用程序图标 194 9.3、迎合不同的手机分辨率 194 9.4.ANDROID屏幕适应的四个原则 195 9.5、ANDROID常用单位 196 9.6、取得屏幕信息 197 9.7、横
竖
屏 197 9.8、程序完全全屏 200 9.8.1锁屏锁键盘 200 9.9、程序的开机启动 201 9.10、动态START页面 208 9.11、彻底退出当前程序 212 9.12、获取应用程序的名称,包名,版本号和图标 212 9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、
显示
应用详细列表 224 9.16、寻找应用 224 9.17、注册
一个
BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、播放默认铃声 225 9.20、设置默认来电铃声 226 9.21、位图旋转 227 9.22、手机震动控制 228 9.23、SENSOR2D感应实例 228 9.24、运用JAVA MAIL包实现发GMAIL邮件 230 9.26、ANDROID键盘响应 236 9.27、后台监听某个按键 238 9.28、VECTOR用法 239 9.29、CURSOR 242 9.30、把
一个
字符串写进文件 244 9.31、把文件内容读出到
一个
字符串 245 9.32、扫描WIFI热点演示实例教程 246 9.33、调用GOOGLE搜索 249 9.34、调用浏览器 载入某网址 249 9.35、获取 IP地址 249 9.36、从输入流中获取数据并以字节数组返回 250 9.37、通过ANDROID 客户端上传数据到服务器 251 9.38、文件下载类 255 9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡是否存在并且可以写入 267 9.45、获取SD卡的路径和存储空间 268 9.46、将程序安装到SD卡 268 9.47、创建
一个
SD映像 269 9.48、查看手机内存存储 269 9.49、在模拟器上调试GOOGLE MAPS 271 9.50、建立GPRS连接 273 9.51、获取手机位置 274 9.5* 获得经纬度,地名标注在地图上 274 9.52、获得两个GPS坐标之间的距离 276 9.53、通过经纬度
显示
地图 277 9.54、路径规划 277 9.55、将坐标传递到GOOGLE MAP并
显示
277 9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS 287 9.62、监听电话被呼叫状态 288 9.63、监听要拨打的电话(可以后台进行修改号码) 290 9.64、后台监听短信内容 291 9.65、删除最近收到的一条短信 292 9.66、调用发短信的程序 293 9.67、后台发送短信 293 9.68、调用发送彩信程序 294 9.69、发送EMAIL 294 9.70、播放多媒体 295 9.71、控制音量 296 9.72、定义CONTENTOBSERVER,监听某个数据表 302 9.73、打开照相机 303 9.74、从GALLERY选取图片 303 9.75、打开录音机 303 9.76、语音朗读 303 9.77、手机获取视频流
显示
在电脑上 305 9.78、蓝牙的使用 313 9.79、
一个
很好的加密解密字符串 316 9.80、DRAWABLE、BITMAP、BYTE[]之间的转换 318 9.81、高循环效率的代码 320 9.82、给模拟器打电话发短信 321 9.83、加快模拟器速度 321 9.83.1、模拟器 “尚未注册网络” 322 9.84、EMULATOR命令行参数 322 9.85、如何进行单元测试 323 9.86、ANDROID自动化测试初探 324 9.86.1、捕获Activity上的Element 324 9.86.2、Hierarchyviewer 捕获Element的 328 9.86.3、架构实现 330 9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再述模拟键盘鼠标事件(adb shell 实现) 334 9.87、反编译APK 344 9.88、更换APK图标(签名打包) 348 9.89、利用ANDROID MARKET赚钱 363 9.90、ANDROID-MARKET 使用 365 9.91、传感器 369 9.91.1、获取手机上的传感器 369 9.91.2、 371 9.92、时间类 372 * 获得日期或时间字符串 372 * num天前的日期 373 * num天后的日期 373 * 判断 thingdate 的 dotime 天后是否在今天之后 374 * 判断testDate+testTime是否在两个时间之内 375 附录: 378 附录1、XML布局中的常用属性 378 1.通用属性 378 2.Edit Text部分属性 381 3.layout_alignParentRight android:paddingRight 384 附录2、INTENT ACTION 385 附录3、ANDROID的动作、广播、类别等标志 387 ★★★附带工具包说明 393 1.APK反编译工具.rar 393 2.APK安装工具.rar 393
Android开发资料合集-World版!
没有最全,只有更全!!! world版全面开放 0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity 堆栈 18 2.1.6、Intent对象调用Activity实例 19 2.1.7、Activity透明 21 2.1.8、一次性关闭所有的Activity 22 2.1.9、PreferenceActivity 用法 22 2.1.10、
Dialog
风格的Activity 23 2.1.11、横
竖
屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是Service 26 2.3.2、如何使用Service 27 2.3.3、Service的生命周期 32 2.3.4、判断服务开启状态 33 2.3.5、获取启动的服务 34 2.4、CONTENT PROVIDER 35 3、ANDROID UI LAYOUT 35 3.1、概述 35 3.2、线性布局(LINEAR LAYOUT) 36 3.3、相对布局(RELATIVE LAYOUT) 39 3.4、TABLELAYOUT 40 3.5、ABSOLUTELAYOUT 47 4、ANDROID UI 控件 48 4.1、IMAGEBUTTON 48 4.1.1、图案填充问题 48 4.2、TEXTVIEW 49 4.2.1、动态滚动 49 4.3、EDITTEXT 49 4.3.1、光标选择 49 4.4、TITLEBAR 50 4.4.1、非全屏状态下不
显示
title标题栏 50 4.4.2、标题栏进度指示器 50 4.4.3、titleBar 高级实现方法(更美观) 51 4.4.4、获取标题栏和状态栏高度 57 4.4.5、标题栏
显示
简单的进度框 57 4.5、MENU 58 4.5.1、简单的代码 58 4.5.2、menu实现的两种方法 58 4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView自定义分割线 66 4.6.2、LIST例一 66 4.6.3、LIST例二 76 4.6.4、LIST例三 80 4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter例 88 4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、DatePicker/TimePicker 115 4.9.2、DatePicker
Dialog
/TimePicker
Dialog
119 4.10、WEBVIEW 120 4.10.1、WebView的使用 120 4.11、SCROLLVIEW 121 4.11.1、ScrollView的使用 121 4.12、GRIDVIEW 124 4.12.1、GridView的使用 124 4.13、GAMEVIEW 127 4.13.1、
显示
到
一个
布局中 127 4.14、TOASTE 128 4.14.1、短时间
显示
128 4.14.2、长时间
显示
128 4.15、对话框 128 4.15.1、简单的对话框: 128 4.15.2、包含两个按钮的对话框 128 4.15.3、三个按钮的提示框 129 4.15.4、包含输入的dlg 131 4.15.5、圆形进度框 133 4.15.6、
Alert
Dialog
.Builder 133 4.15.7、模式对话框 134 4.16、拖动BUTTON获得位置 135 5、ANDROID UI 美化 137 5.1、简单美化BUTTON、IMAGEBUTTON、TEXTVIEW等控件 137 5.2、BUTTON美化案例☆ 139 5.3、IMAGEBUTTON 按下时的动画效果 142 5.4、滚动条
显示
与隐藏 143 5.5、LISTVIEW 与 SCROLLVIEW 解决办法 144 方法一:(重写ListView) 144 方法二: 150 5.6、3D魔方 151 6、ANDROID UI 动画 160 6.1、四种2D动画 160 6.1.1、透明度控制动画效果 alpha 160 6.1.2、旋转动画效果 rotate 161 6.1.3、尺寸伸缩动画效果 scale 162 6.1.4、位置转移动画效果 translate 163 6.1.5、四种动画效果的调用 164 7、异步调用 167 开辟
一个
线程: 167 THREAD: 168 HANDER 170 TIMER 173 ANDROID 界面刷新 174 MESSAGE HANDER 175 用法: 175 线程与子线程调用MessageHander 177 Messagehandler实例 177 8、数据存储与读取 179 1. PREFERENCES 179 2. FILES 180 3. DATABASES 180 4. NETWORK 183 5、CONTENTPROVIDER 183 6、执行SQL语句进行查询 188 用法1 188 其它: 188 详解: 189 查看SQLITE表格内容 192 9、常用功能的实现 193 9.1、获取手机型号以及系统版本号 193 9.2、更改应用程序图标 194 9.3、迎合不同的手机分辨率 194 9.4.ANDROID屏幕适应的四个原则 195 9.5、ANDROID常用单位 196 9.6、取得屏幕信息 197 9.7、横
竖
屏 197 9.8、程序完全全屏 200 9.8.1锁屏锁键盘 200 9.9、程序的开机启动 201 9.10、动态START页面 208 9.11、彻底退出当前程序 212 9.12、获取应用程序的名称,包名,版本号和图标 212 9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、
显示
应用详细列表 224 9.16、寻找应用 224 9.17、注册
一个
BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、播放默认铃声 225 9.20、设置默认来电铃声 226 9.21、位图旋转 227 9.22、手机震动控制 228 9.23、SENSOR2D感应实例 228 9.24、运用JAVA MAIL包实现发GMAIL邮件 230 9.26、ANDROID键盘响应 236 9.27、后台监听某个按键 238 9.28、VECTOR用法 239 9.29、CURSOR 242 9.30、把
一个
字符串写进文件 244 9.31、把文件内容读出到
一个
字符串 245 9.32、扫描WIFI热点演示实例教程 246 9.33、调用GOOGLE搜索 249 9.34、调用浏览器 载入某网址 249 9.35、获取 IP地址 249 9.36、从输入流中获取数据并以字节数组返回 250 9.37、通过ANDROID 客户端上传数据到服务器 251 9.38、文件下载类 255 9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡是否存在并且可以写入 267 9.45、获取SD卡的路径和存储空间 268 9.46、将程序安装到SD卡 268 9.47、创建
一个
SD映像 269 9.48、查看手机内存存储 269 9.49、在模拟器上调试GOOGLE MAPS 271 9.50、建立GPRS连接 273 9.51、获取手机位置 274 9.5* 获得经纬度,地名标注在地图上 274 9.52、获得两个GPS坐标之间的距离 276 9.53、通过经纬度
显示
地图 277 9.54、路径规划 277 9.55、将坐标传递到GOOGLE MAP并
显示
277 9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS 287 9.62、监听电话被呼叫状态 288 9.63、监听要拨打的电话(可以后台进行修改号码) 290 9.64、后台监听短信内容 291 9.65、删除最近收到的一条短信 292 9.66、调用发短信的程序 293 9.67、后台发送短信 293 9.68、调用发送彩信程序 294 9.69、发送EMAIL 294 9.70、播放多媒体 295 9.71、控制音量 296 9.72、定义CONTENTOBSERVER,监听某个数据表 302 9.73、打开照相机 303 9.74、从GALLERY选取图片 303 9.75、打开录音机 303 9.76、语音朗读 303 9.77、手机获取视频流
显示
在电脑上 305 9.78、蓝牙的使用 313 9.79、
一个
很好的加密解密字符串 316 9.80、DRAWABLE、BITMAP、BYTE[]之间的转换 318 9.81、高循环效率的代码 320 9.82、给模拟器打电话发短信 321 9.83、加快模拟器速度 321 9.83.1、模拟器 “尚未注册网络” 322 9.84、EMULATOR命令行参数 322 9.85、如何进行单元测试 323 9.86、ANDROID自动化测试初探 324 9.86.1、捕获Activity上的Element 324 9.86.2、Hierarchyviewer 捕获Element的 328 9.86.3、架构实现 330 9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再述模拟键盘鼠标事件(adb shell 实现) 334 9.87、反编译APK 344 9.88、更换APK图标(签名打包) 348 9.89、利用ANDROID MARKET赚钱 363 9.90、ANDROID-MARKET 使用 365 9.91、传感器 369 9.91.1、获取手机上的传感器 369 9.91.2、 371 9.92、时间类 372 * 获得日期或时间字符串 372 * num天前的日期 373 * num天后的日期 373 * 判断 thingdate 的 dotime 天后是否在今天之后 374 * 判断testDate+testTime是否在两个时间之内 375 附录: 378 附录1、XML布局中的常用属性 378 1.通用属性 378 2.Edit Text部分属性 381 3.layout_alignParentRight android:paddingRight 384 附录2、INTENT ACTION 385 附录3、ANDROID的动作、广播、类别等标志 387 ★★★附带工具包说明 393 1.APK反编译工具.rar 393 2.APK安装工具.rar 393
炫舞吧 android 游戏开发
模仿qq炫舞游戏做出的单机版游戏 package cn.itcast.game; import java.io.InputStream; import android.app.Activity; import android.app.
Alert
Dialog
; import android.content.Context; import android.content.
Dialog
Interface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.SoundPool; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.SurfaceHolder.Callback; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import android.widget.RadioGroup.OnCheckedChangeListener; public class MainActivity extends Activity { AnimView mAnimView = null; public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // 检测屏幕的方向:纵向或横向 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // 当前为
横屏
, 在此处添加额外的处理代码 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 当前为
竖
屏, 在此处添加额外的处理代码 } } public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); android.os.Process.killProcess(android.os.Process.myPid()); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 强制为
横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); Display display = getWindowManager().getDefaultDisplay(); //
显示
自定义的游戏View mAnimView = new AnimView(this, display.getWidth(), display.getHeight()); setContentView(mAnimView); } public boolean onTouchEvent(MotionEvent event) { // 获得触摸的坐标 int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mAnimView.UpdateEvent(x, y); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; } return false; } public class AnimView extends SurfaceView implements Callback, Runnable { private Paint mpaint = null; private Bitmap bitmap = null; private Context mContext = null; private Canvas mCanvas = null; private boolean mIsRunning = false; private Thread mthread = null; private SurfaceHolder mSurfaceHolder = null; private Bitmap bitmap_main_1 = null; private Bitmap bitmap_main_2 = null; private Bitmap bitmap_main_3 = null; private Bitmap bitmap_main_4 = null; private int temp = 0; private int bitmap_main_1_Width = 0; private int bitmap_main_1_Height = 0; private int bitmap_main_2_Width = 0; private int bitmap_main_2_Height = 0; private int bitmap_main_3_Width = 0; private int bitmap_main_3_Height = 0; private int bitmap_main_4_Width = 0; private int bitmap_main_4_Height = 0; private MediaPlayer mMediaPlayer = null; private SoundPool mSoundPool = null; private int button_sound = 0; private Bitmap bitmap_up = null; // 屏幕尺寸 private int mScreenWidth = 0; // private int mScreenHeight = 0; // 炫舞吧 图片尺寸 private int bitmap_up_width = 0; private Handler handler = new Handler() { public void handleMessage(Message msg) { try { Log.e("MainActivity", "wenxi11111");
dialog
_show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; private RadioGroup m_RadioGroup = null; private RadioButton m_Radio2 = null; private RadioButton m_Radio1 = null; private RadioButton m_Radio3 = null; protected int choose_music = 1; protected int music_play = 0; public int start_music = 0; protected int now_checkid = 0; public AnimView(Context context, int width, int height) { super(context); mScreenWidth = width; // mScreenHeight = height; mContext = context; mpaint = new Paint(); /** 获取mSurfaceHolder **/ mSurfaceHolder = getHolder(); mSurfaceHolder.addCallback(this); init(); } public void
dialog
_show() { Log.e("MainActivity", "wenxi2222222");
Alert
Dialog
.Builder builder = new
Alert
Dialog
.Builder(mContext); Log.e("MainActivity", "wenxi2222223"); LayoutInflater inflater = LayoutInflater.from(mContext); Log.e("MainActivity", "wenxi2222224"); final View textEntryView = inflater.inflate(R.layout.music, null); Log.e("MainActivity", "wenxi2222225"); builder.setIcon(R.drawable.xiyangyang_1); builder.setTitle("请选择背景音乐"); builder.setCancelable(false); builder.setView(textEntryView); Log.e("MainActivity", "wenxi2222226"); m_RadioGroup = (RadioGroup) textEntryView .findViewById(R.id.RadioGroup01); m_Radio1 = (RadioButton) textEntryView .findViewById(R.id.RadioButton1); m_Radio2 = (RadioButton) textEntryView .findViewById(R.id.RadioButton2); m_Radio3 = (RadioButton) textEntryView .findViewById(R.id.RadioButton3); // now_checkid = m_RadioGroup.getCheckedRadioButtonId(); m_RadioGroup.check(now_checkid); m_RadioGroup .setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == m_Radio1.getId()) { Log.e("MainActivity", Integer .toString(checkedId)); Log.e("MainActivity", Integer.toString(m_Radio1 .getId())); choose_music = 1; Toast toast = Toast.makeText(mContext, "你选择了music1", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } else if (checkedId == m_Radio2.getId()) { choose_music = 2; Toast toast = Toast.makeText(mContext, "你选择了music2", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } else if (checkedId == m_Radio3.getId()) { choose_music = 3; Toast toast = Toast.makeText(mContext, "你选择了music3", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } now_checkid = checkedId; } }); builder.setPositiveButton("保存", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int which) {
dialog
.cancel();// 取消弹出框 if (choose_music == 1) { mMediaPlayer.release(); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_1); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } else if (choose_music == 2) { mMediaPlayer.release(); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_2); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } else if (choose_music == 3) { mMediaPlayer.release(); mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_3); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } } }); builder.setNegativeButton("放弃", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int which) {
dialog
.cancel();// 取消弹出框 choose_music = start_music; } }); builder.create().show(); } private void init() { // 主界面静态图 bitmap = ReadBitmap(mContext, R.drawable.main_2_picture); bitmap_up = ReadBitmap(mContext, R.drawable.xuanwuba); bitmap_up_width = bitmap_up.getWidth(); bitmap_main_1 = ReadBitmap(mContext, R.drawable.main_1); bitmap_main_2 = ReadBitmap(mContext, R.drawable.main_2); bitmap_main_3 = ReadBitmap(mContext, R.drawable.main_3); bitmap_main_4 = ReadBitmap(mContext, R.drawable.main_4); bitmap_main_1_Width = bitmap_main_1.getWidth(); bitmap_main_1_Height = bitmap_main_1.getHeight(); bitmap_main_2_Width = bitmap_main_2.getWidth(); bitmap_main_2_Height = bitmap_main_2.getHeight(); bitmap_main_3_Width = bitmap_main_3.getWidth(); bitmap_main_3_Height = bitmap_main_3.getHeight(); bitmap_main_4_Width = bitmap_main_4.getWidth(); bitmap_main_4_Height = bitmap_main_4.getHeight(); // 主界面
一个
动态图
显示
// mAnimation = new Animation(mContext,new int // []{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,R.drawable.f,R.drawable.g,R.drawable.h,R.drawable.i,R.drawable.j},true); // mAnimation = new Animation(mContext,new int // []{R.drawable.a_1,R.drawable.a_2,R.drawable.a_3,R.drawable.a_4,R.drawable.a_5,R.drawable.a_6,R.drawable.a_7,R.drawable.a_8,R.drawable.a_9,R.drawable.a_10,R.drawable.a_11,R.drawable.a_12,R.drawable.a_13,R.drawable.a_14,R.drawable.a_15,R.drawable.a_16,R.drawable.a_17,R.drawable.a_18,R.drawable.a_19,R.drawable.a_20},true); // mAnimation = new Animation(mContext,new int // []{R.drawable.b_1,R.drawable.b_2,R.drawable.b_3,R.drawable.b_4,R.drawable.b_5,R.drawable.b_6,R.drawable.b_7,R.drawable.b_8,R.drawable.b_9,R.drawable.b_10, // R.drawable.b_11,R.drawable.b_12,R.drawable.b_14,R.drawable.b_15,R.drawable.b_16,R.drawable.b_17,R.drawable.b_18,R.drawable.b_19,R.drawable.b_20, // R.drawable.b_21,R.drawable.b_22,R.drawable.b_23,R.drawable.b_24,R.drawable.b_25,R.drawable.b_26,R.drawable.b_27,R.drawable.b_28,R.drawable.b_29,R.drawable.b_30, // R.drawable.b_31,R.drawable.b_32,R.drawable.b_33 // },true); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_2); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); /** 创建
一个
声音播放池 **/ // 参数1为声音池同时播放的流的最大数量 // 参数2为播放流的类型 // 参数3为音乐播放效果 setmSoundPool(new SoundPool(2, AudioManager.STREAM_MUSIC, 100)); } public void UpdateEvent(int x, int y) { temp = IsClick(x, y); switch (temp) { case 1: button_sound++; Intent intent = new Intent(MainActivity.this, MenuActivity.class); startActivity(intent); break; case 2: button_sound++; if (button_sound % 2 == 1) { mMediaPlayer.setVolume(0, 0); } else { mMediaPlayer.setVolume(2, 2); } break; case 3: handler.sendMessage(new Message()); start_music = choose_music; mIsRunning = false; break; case 4: mMediaPlayer.release(); android.os.Process.killProcess(android.os.Process.myPid()); break; } } private int IsClick(int x, int y) { int a = 0; if (x >= 170 + 20 && x <= 170 + bitmap_main_1_Width - 20 && y >= 110 + 20 && y <= 110 + bitmap_main_1_Height - 20) a = 1; else if (x >= 170 + 35 && x <= 170 + bitmap_main_2_Width - 35 && y >= 160 + 20 && y <= 160 + bitmap_main_2_Height - 20) a = 2; else if (x >= 170 + 20 && x <= 170 + bitmap_main_3_Width - 40 && y >= 210 + 20 && y <= 210 + bitmap_main_3_Height - 20) a = 3; else if (x >= 170 + 40 && x <= 170 + bitmap_main_4_Width - 35 && y >= 260 + 20 && y <= 260 + bitmap_main_4_Height - 20) a = 4; return a; } private void Draw() { mCanvas.drawBitmap(bitmap, 0, 0, mpaint); mCanvas.drawBitmap(bitmap_up, (mScreenWidth - bitmap_up_width) / 2, 5, mpaint); mCanvas.drawBitmap(bitmap_main_1, 170, 110, mpaint); mCanvas.drawBitmap(bitmap_main_2, 170, 160, mpaint); mCanvas.drawBitmap(bitmap_main_3, 170, 210, mpaint); mCanvas.drawBitmap(bitmap_main_4, 170, 260, mpaint); mMediaPlayer.start(); mMediaPlayer.setVolume(2, 2); } private Bitmap ReadBitmap(Context context, int id) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; InputStream is = context.getResources().openRawResource(id); return BitmapFactory.decodeStream(is, null, opt); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub mIsRunning = true; mthread = new Thread(this); mthread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub mIsRunning = false; } @Override public void run() { while (mIsRunning) { synchronized (mSurfaceHolder) { mCanvas = mSurfaceHolder.lockCanvas(); Draw(); mSurfaceHolder.unlockCanvasAndPost(mCanvas); } try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } } } public void setmSoundPool(SoundPool mSoundPool) { this.mSoundPool = mSoundPool; } public SoundPool getmSoundPool() { return mSoundPool; } } }
android 屏幕横向
显示
,【报Bug】安卓屏幕切换
横屏
后屏幕
显示
一半
详细问题描述设置为 tabBar 的页面,开发时采用
竖
屏开发;
竖
屏下
显示
正常,当屏幕切换为
横屏
时,页面宽度没有自动撑满屏幕,
显示
大小为
竖
屏
显示
时的状态。[内容]重现步骤[步骤]
竖
屏时打开应用,通过 tabBar 选择
显示
页面,把屏幕旋转为
横屏
就可以看到现象。[结果]页面及状态栏宽度没有铺满屏幕,底部 tabBar 栏宽度铺满屏幕。[期望]页面及状态栏宽度铺满屏幕,[IDE版本号]HBuilderX...
Android
80,358
社区成员
91,290
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章