无法在Android的Surface Holder中获得屏幕宽度和高度?

piyxxx12

我是android的新手,并且一直在获取屏幕尺寸。这是我的代码,

package com.piyush.droidz;

import android.app.Activity;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import com.piyush.droidz.model.boy;

public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback {

private static final String TAG = MainGamePanel.class.getSimpleName();

private GameThread td;
private boy b1;
private int s_width;
private int s_height;

public MainGamePanel(Context context) {
    super(context);
    getHolder().addCallback(this);
    Log.d(TAG, "Screen width=" + s_width);
    b1 = new boy(BitmapFactory.decodeResource(getResources(), R.drawable.boy), 50, 50);
    td = new GameThread(getHolder(), this);
    setFocusable(true);
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    s_width = getHolder().getSurfaceFrame().width();
    Log.d(TAG, "Present Screen width=" + s_width);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    td.setRunning(true);
    td.start();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    boolean retry = true;
    td.setRunning(false);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        b1.handleActionDown((int)event.getX(), (int)event.getY());

        if (event.getY()>getHeight()-50) {
            td.setRunning(false);
            ((Activity) getContext()).finish();
        }
        else {
            Log.d(TAG, "Coordinates: X="+event.getX()+", Y="+event.getY());
        }
    }

    if (event.getAction()==MotionEvent.ACTION_MOVE) {
        if (b1.isTouched()) {
            b1.setX((int)event.getX());
            b1.setY((int)event.getY());
        }
    }

    if (event.getAction()==MotionEvent.ACTION_UP) {
        b1.setTouched(false);
    }
    return true;
}

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawColor(Color.parseColor("#ff0000"));
    b1.draw(canvas);
}

}

在第一个日志标签中,它显示为0,而在第二个日志标签中,它显示仿真器的确切宽度。我尝试过getHolder().getSurfaceFrame().width()甚至在构造函数之前都初始化“ s_width”,但仍然“ s_width”为0。也尝试过WindowManagergetwindowManager()但是在此类中IDE无法识别它。这是我的活动课,

package com.piyush.droidz;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class DroidzActivity extends Activity {

MainGamePanel mgp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mgp = new MainGamePanel(this);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(mgp);
}

}

请帮忙!

Anoop Chandrika HarisudhanNair

你有没有尝试过?

DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(metrics);

您需要使用上下文来获取WindowManager。请参阅文档http://developer.android.com/reference/android/view/WindowManager.html

最好上述应该在构造函数内部完成

public MainGamePanel(Context context) {}

希望能帮助到你。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以编程方式获取相对宽度和高度-Android中的线性布局?

来自分类Dev

如何在Android中更改Switch的高度和宽度

来自分类Dev

如何获得手机屏幕的高度和宽度

来自分类Dev

如何在Android中获得可用的屏幕宽度和高度

来自分类Dev

Android-屏幕的布局宽度/高度百分比?

来自分类Dev

如何获取屏幕的宽度和高度-Android

来自分类Dev

如何在Android中获取显示图像的宽度和高度?

来自分类Dev

Android:如何查找屏幕的宽度和高度?

来自分类Dev

无法在JavaScript中获取图像的高度和宽度

来自分类Dev

设计Android小部件的宽度和高度

来自分类Dev

Android在相对布局中使按钮为屏幕宽度和高度的1/3

来自分类Dev

更改图像的高度和宽度-android

来自分类Dev

Android查看相同的宽度和高度

来自分类Dev

java.lang.IllegalArgumentException:android中的宽度和高度必须> 0

来自分类Dev

SVG无法适应屏幕html的全部宽度和高度-无法响应

来自分类Dev

如何在布局Android中匹配高度和宽度1:1

来自分类Dev

侧面NavBar:无法更改高度和宽度

来自分类Dev

jQuery:无法获取图像的宽度和高度

来自分类Dev

无法在Android的Surface Holder中获得屏幕宽度和高度?

来自分类Dev

Android:在Dip中调整图片的宽度和高度

来自分类Dev

定义布局Android的宽度和高度

来自分类Dev

无法获取img宽度和高度jQuery

来自分类Dev

为什么加载后无法获得图像的宽度和高度?

来自分类Dev

在Android Studio中隐藏高度和宽度为零的View元素

来自分类Dev

java.lang.IllegalArgumentException:android中的宽度和高度必须> 0

来自分类Dev

无法更改布局的高度和宽度

来自分类Dev

Android 使视图高度为屏幕宽度的 50%

来自分类Dev

C# winforms 无法在屏幕中间绘制,即使屏幕高度和宽度正确

来自分类Dev

无法在打字稿中为输入类型框分配图像高度和宽度

Related 相关文章

  1. 1

    如何以编程方式获取相对宽度和高度-Android中的线性布局?

  2. 2

    如何在Android中更改Switch的高度和宽度

  3. 3

    如何获得手机屏幕的高度和宽度

  4. 4

    如何在Android中获得可用的屏幕宽度和高度

  5. 5

    Android-屏幕的布局宽度/高度百分比?

  6. 6

    如何获取屏幕的宽度和高度-Android

  7. 7

    如何在Android中获取显示图像的宽度和高度?

  8. 8

    Android:如何查找屏幕的宽度和高度?

  9. 9

    无法在JavaScript中获取图像的高度和宽度

  10. 10

    设计Android小部件的宽度和高度

  11. 11

    Android在相对布局中使按钮为屏幕宽度和高度的1/3

  12. 12

    更改图像的高度和宽度-android

  13. 13

    Android查看相同的宽度和高度

  14. 14

    java.lang.IllegalArgumentException:android中的宽度和高度必须> 0

  15. 15

    SVG无法适应屏幕html的全部宽度和高度-无法响应

  16. 16

    如何在布局Android中匹配高度和宽度1:1

  17. 17

    侧面NavBar:无法更改高度和宽度

  18. 18

    jQuery:无法获取图像的宽度和高度

  19. 19

    无法在Android的Surface Holder中获得屏幕宽度和高度?

  20. 20

    Android:在Dip中调整图片的宽度和高度

  21. 21

    定义布局Android的宽度和高度

  22. 22

    无法获取img宽度和高度jQuery

  23. 23

    为什么加载后无法获得图像的宽度和高度?

  24. 24

    在Android Studio中隐藏高度和宽度为零的View元素

  25. 25

    java.lang.IllegalArgumentException:android中的宽度和高度必须> 0

  26. 26

    无法更改布局的高度和宽度

  27. 27

    Android 使视图高度为屏幕宽度的 50%

  28. 28

    C# winforms 无法在屏幕中间绘制,即使屏幕高度和宽度正确

  29. 29

    无法在打字稿中为输入类型框分配图像高度和宽度

热门标签

归档