网上查了下,大概都是这种的,我的手机也确实是这个宽高Point p = new Point();
getWindowManager().getDefaultDisplay().getSize(p);
p.x //宽度 540
p.y //高度 960但是,我写一个demo的时候,获取的值却不对了,
demo如下
import android.graphics.Point;public class Strike {
private StrikeView view;
private int left = 0;
private int top = 0;
private Point win;
private boolean isDown = true;// 当前是否向下移动
private boolean isRight = true;// 当前是否向有移动 public Strike(StrikeView view, Point win) {
this.view = view;
this.win = win; //屏幕Point
this.left = view.getLeft();
this.top = view.getTop();
} /**
* 设置方位并刷新
*/
public void setPostion() {
view.setLeft(left);
view.setTop(top);
view.invalidate();
} /**
* 计算view的方位
*/
public void postion() {
if (isRight) {
if (left + 30 < win.x)
left++;
else {
isRight = false;
left--;
}
} else {
if (left > 0)
left--;
else {
isRight = true;
left++;
}
}
if (isDown) {
if (top + 30 < win.y)
top++;
else {
isDown = false;
top--;
}
} else {
if (top > 0)
top--;
else {
isDown = true;
top++;
}
} }}
大致意思就是一个小方块,在屏幕上飘来飘去的东西,撞到屏幕边缘就会回弹,上面postion()方法就是计算小方块的位置的,但是大概left增长到250左右的时候,就已经跑出屏幕范围了,高度更是大概只有400多点,这是为什么呢,搞了一下午,试了无数种方法都是540*960,郁闷了,求大神指点下,感激不尽
getWindowManager().getDefaultDisplay().getSize(p);
p.x //宽度 540
p.y //高度 960但是,我写一个demo的时候,获取的值却不对了,
demo如下
import android.graphics.Point;public class Strike {
private StrikeView view;
private int left = 0;
private int top = 0;
private Point win;
private boolean isDown = true;// 当前是否向下移动
private boolean isRight = true;// 当前是否向有移动 public Strike(StrikeView view, Point win) {
this.view = view;
this.win = win; //屏幕Point
this.left = view.getLeft();
this.top = view.getTop();
} /**
* 设置方位并刷新
*/
public void setPostion() {
view.setLeft(left);
view.setTop(top);
view.invalidate();
} /**
* 计算view的方位
*/
public void postion() {
if (isRight) {
if (left + 30 < win.x)
left++;
else {
isRight = false;
left--;
}
} else {
if (left > 0)
left--;
else {
isRight = true;
left++;
}
}
if (isDown) {
if (top + 30 < win.y)
top++;
else {
isDown = false;
top--;
}
} else {
if (top > 0)
top--;
else {
isDown = true;
top++;
}
} }}
大致意思就是一个小方块,在屏幕上飘来飘去的东西,撞到屏幕边缘就会回弹,上面postion()方法就是计算小方块的位置的,但是大概left增长到250左右的时候,就已经跑出屏幕范围了,高度更是大概只有400多点,这是为什么呢,搞了一下午,试了无数种方法都是540*960,郁闷了,求大神指点下,感激不尽
解决方案 »
- 查看设备已安装软件的命令是什么?
- 申请API,为啥会这样子啊
- 请教 在Eclipse里编写一个项目时,只是项目题目出现错误 怎么回事
- 怎么监听自己建立的数据库?
- 谁在linux环境下开发过Android程序阿,请进来指教下,helloworld程序也可以阿
- 百度地图SupportMapFragment与viewpager联合使用的问题
- 手机跨平台开发用什么语言比较好 C++ 还是 erlang? C++ 和erlang 有什么 区别?谢谢!哪个做跨平台简单快?
- GridView中的ItemSelected事件无法触发的疑问
- 安卓shell脚本执行报错。
- 求genymotion(安卓模拟器)
- <data android:scheme="weibo4android"scheme代表什么?
- 跪求android listview 加载网络图片
人呢,求救啊啊啊啊
另外再问个小白问题,android中的Log对象会自动写入手机么?
Log对象写入手机?不明白你的意思,如果你是要看log的话可以用logcat。
但是用view.getLeft()获取的话,只到250左右就到屏幕边缘了,
这个view是直接setContentView()设置到Activity重的Log:就是Log.w()/Log.e()这些方法会不会自动被Android系统记录到手机里面,因为我程序了面这种日志很多,我怕如果记录到手机的话,日志会膨胀的太快!
view.getLocationOnScreen(location)
view.getLocationInWindow(location)
view.getX()
view.getLeft()这几个方法获取都是250,就到屏幕边缘dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; //1.5
dm.widthPixels;//540
//getleft()的doc描述
int android.view.View.getLeft()@CapturedViewPropertyLeft position of this view relative to its parent.
//这个view就是window吧Returns:
The left edge of this view, in pixels.
//左边距的像素数按照上面的说法应该没问提的啊,郁闷了,新手求救啊!!
Display display = getWindowManager().getDefaultDisplay(); int height = display.getHeight();
int width = display.getWidth();我之前在Android2.1上使用
private void size() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
size_old(getWindowManager().getDefaultDisplay());
}
else {
size_new(getWindowManager().getDefaultDisplay());
}
}@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private void size_new(Display display) {
Point point = new Point();
display.getSize(point);
// point.x and point.y
}@SuppressWarnings("deprecation")
private String size_old(Display display) {
// display.getWidth() and display.getHeight()
}
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;