android中碰撞屏幕边界反弹问题_移动开发_编程开发_程序员俱乐部
中国优秀的程序员网站
程序员频道
CXYCLUB技术
地图
最新资讯
|
百度新闻
|
GOOGLE地图
|
RSS订阅
|
更多
职场话题
生活休闲
恋爱交友
程序人生
学习进修
职业发展
项目管理
求职面试
程序员创业
JAVA
.NET
C/C++
Ruby
Delphi
JavaScript
PHP
ASP
JSP
HTML
XML
移动开发
开发工具
其他
编程开发
数据库
操作系统
新闻资讯
互联网
非技术区
非技术区
生活休闲
恋爱交友
职业发展
求职面试
程序人生
移动开发
开发工具
DB2
MySql
Sybase
开发
JAVA
.NET
PHP
C/C++
数据库
SQL Server
Oracle
互联网
运营
推广
营销
SEO
系统
Linux
Unix
Windows
资讯
动态
产品
人物
创业
职场
学习
管理
热搜:
class
Win8
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
controller
异步
同步
编码
版本
缓存
HTTP
内存
class
Win8
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
controller
异步
同步
更多>>
您所在的位置:
程序员俱乐部
>
编程开发
>
移动开发
> android中碰撞屏幕边界反弹问题
android中碰撞屏幕边界反弹问题
2013/11/7 23:15:32 安卓吧 博客园
我要评论(
0
)
摘要:
其实碰撞问题只是涉及到一点小算法而已,但在实际应用,尤其游戏中有可能会遇到,下面给出一个小示例,代码如下:MainActivity:packagecom.lovo;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button
标签:
android
问题
其实碰撞问题只是涉及到一点小
算法
而已,但在
实际应用
,尤其游戏中有可能会遇到,下面给出一个小示例,代码如下:
MainActivity:
class="dp-j" start="1">
package
com.lovo;
import
android.os.Bundle;
import
android.os.Handler;
import
android.os.Message;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.ImageView;
import
android.widget.RelativeLayout;
import
android.app.Activity;
public
class
MainActivity
extends
Activity {
private
Handler handler;
public
static
final
int
MOVE_IMAGE =
1
;
// 移动方向和距离
private
int
decX =
5
;
private
int
decY =
5
;
// 坐标
private
int
moveX;
private
int
moveY;
private
boolean
isMove;
// 是否正在移动
private
RelativeLayout relative;
private
ImageView
imageView
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.activity_main_image);
handler =
new
MyHandler(
this
);
relative = (RelativeLayout) findViewById(R.id.activity_main_relativelayout);
Button endBtn = (Button) findViewById(R.id.activity_main_btn_end);
endBtn.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
isMove =
false
;
}
});
Button btn = (Button) findViewById(R.id.activity_main_btn_start);
btn.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
if
(!isMove) {
isMove =
true
;
}
else
{
return
;
}
new
Thread() {
public
void
run() {
while
(isMove) {
moveX += decX;
moveY += decY;
if
((moveX + imageView.getWidth()) >= relative
.getWidth() || moveX <
0
) {
decX = -decX;
}
if
((moveY + imageView.getHeight()) >= relative
.getHeight() || moveY <
0
) {
decY = -decY;
}
Message message =
new
Message();
message.what = MOVE_IMAGE;
Bundle bundle =
new
Bundle();
bundle.putInt(
"moveX"
, moveX);
bundle.putInt(
"moveY"
, moveY);
message.setData(bundle);
handler.sendMessage(message);
try
{
Thread.sleep(
10
);
}
catch
(InterruptedException e) {
e.printStackTrace();
}
}
};
}.start();
}
});
}
}
MyHandler类:
package
com.lovo;
import
android.app.Activity;
import
android.os.Handler;
import
android.os.Message;
import
android.widget.ImageView;
import
android.widget.RelativeLayout;
public
class
MyHandler
extends
Handler {
private
Activity activity;
private
ImageView imageView;
public
MyHandler(Activity activity) {
this
.activity = activity;
}
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
imageView = (ImageView) activity.findViewById(R.id.activity_main_image);
if
(msg.what == MainActivity.MOVE_IMAGE) {
android.widget.RelativeLayout.LayoutParams lp =
new
RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
// 利用Margin改变小球的位置
lp.setMargins(msg.getData().getInt(
"moveX"
),
msg.getData().getInt(
"moveY"
),
0
,
0
);
imageView.setLayoutParams(lp);
}
}
}
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:id
=
"@+id/activity_main_relativelayout"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
>
<
LinearLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:layout_alignParentBottom
=
"true"
>
<
Button
android:id
=
"@+id/activity_main_btn_start"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:layout_weight
=
"1"
android:text
=
"开始"
/>
<
Button
android:id
=
"@+id/activity_main_btn_end"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:layout_weight
=
"1"
android:text
=
"停止"
/>
</
LinearLayout
>
<
ImageView
android:id
=
"@+id/activity_main_image"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/ball"
/>
</
RelativeLayout
>
附上图片效果:
上一篇:
Android界面之间的跳转和返回
下一篇:
消费者会为什么样的可穿戴设备买单?
相关文章
·
android中碰撞屏幕边界反弹问题
·
Android界面之间的跳转和返回
·
C#及Java递归方法实现Hanoi塔(
·
浑水再发报告指控网秦欺诈:易达通问题仍存
·
[Stephen]Android的adb
·
Android学习第二天-android
·
微软赚翻了:Android厂商每年贡献2
·
CMMI4级实践中的5个经典问题及解答
·
HBase中Lease创建、失效、及常见
·
解决MVC应用程序数据重复加载问题
查看所有评论(
0
)
我要评论
发表评论
用户名:
匿名
最新文章
android..
Android..
·
android中碰撞屏幕边界反弹问题
·
Android界面之间的跳转和返回
·
ImageView加ImageSwitc
·
Windows phone应用开发[21
·
[Stephen]Android的adb
·
Android学习第二天-android
·
Listview getItemView
·
Android设置布局背景为白色的三种方
·
Android--Service之绑定服
·
Android开发:setAlpha()
·
iOS面试题及答案大总结
·
Android之parseSDKCont
·
【ios】使用Block对POST异步操
·
Android实现自定义带文字和图片的B
·
Observable 示例之 Windo
最新标签
class
Win8
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
controller
异步
同步
今日热点
·
ListView问题解决办法总结
·
JSP+WAP2.0规范
·
android SurfaceView
·
android---->进度条(P
·
解决android2.2把安装程序放入S
·
圆角PopupWindow对话框和圆角E
·
Android系列教程之四:Androi
·
Android 条码扫描器 一维条形码
·
Android 获取存储卡路径和空间使用
·
Android之Handler学习
推荐文章
android..
android..
·
android Canvas让我很困惑
·
android ListView的分段显
·
iPhone中使用ShareKit一键分
·
Android 2.1 从SD卡导入联系
·
android中设置List
·
android HTC Desire (
·
PC机上体验Android x86操作系
·
Android make脚本简记
·
Android PreferenceAc
·
android文件上传(android端
·
Android手势研究(textview
·
Android手势研究(textview
·
android的拖拽问题--onTouc
·
TableView 的使用 实例二
·
android 选项卡(TabHost)
English
|
关于我们
|
诚聘英才
|
联系我们
|
网站大事
|
友情链接
|
意见反馈
|
网站地图
Powered by
程序员俱乐部
程序提供: HugoCMS 2.0
网站备案:苏ICP备11048748号-1