网上查了下,大概都是这种的,我的手机也确实是这个宽高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,郁闷了,求大神指点下,感激不尽
解决方案 »
- 新手求教!intent.setclass()问题
- getItem和getItemID这俩货神马关系?
- 正在开发android app, 服务器部分的技术与不熟悉,有没有好建议
- 一个简单的TabHost不显示图片问题
- 对话框 按钮处理函数的 对话框id参数的值怎么是 -1?????
- 在一个立方体中,如何判断点击的是哪个面呢?
- 小妹请教ListView滚动翻页问题!代码已写,请改正!
- android ADT的模拟器启动后,浏览器无法上网
- android中TextWatcher方法里如何获取当前控件Id
- 如何定制MaterialDialog的确认和取消按钮,我想使用一个大按钮?
- <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;