繁体   English   中英

查找不同设备的高度和宽度

[英]finding height and width for different devices

我一直在开发一个需要查找不同设备的高度和宽度的应用程序。 如果我删除高度和宽度代码,则如果我包含代码,则该应用程序将崩溃。

您能否建议代码有什么问题。

这是代码:

public class Newone extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_newone);
    }

    final Context context = this;
    public String cntry = "";
    int w= getWindowManager().getDefaultDisplay().getWidth();
    int h = getWindowManager().getDefaultDisplay().getHeight();

    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int w = metrics.widthPixels;
    int h = metrics.heightPixels;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        MotionEvent object holds X-Y values
        if(event.getAction() == MotionEvent.ACTION_DOWN) {              
            String text = "You click at x = " + event.getX() + " and y = " + event.getY();
            //Toast.makeText(this, text, Toast.LENGTH_LONG).show();

            if((event.getX()>((w/1280)*850)) && (event.getX()<((h/752)*900)) && (event.getY()>((w/1280)*380)) && (event.getY()<((h/752)*450)))
                if((event.getX()>850) && (event.getX()<900) && (event.getY()>380) && (event.getY()<450)) {
                    Toast.makeText(this, text, Toast.LENGTH_LONG).show();
                    display(cntry);
                }

                if((event.getX()>280) && (event.getX()<400) && (event.getY()>200) && (event.getY()<300)) {
                    //Toast.makeText(this, text, Toast.LENGTH_LONG).show();
                    cntry = "US";
                    display(cntry);
                }

                if((event.getX()>900) && (event.getX()<1200) && (event.getY()>500) && (event.getY()<650))
        }
        return super.onTouchEvent(event);
    }   

    private void display(final String cntry) {
        final Dialog dialog = new Dialog(context);
        dialog.show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_newone, menu);
        return true;
    }

}

您必须在onCreate中移动以下内容。

final Context context = this;
public String cntry = "";


DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
int h = metrics.heightPixels;

还要getWindowManager().getDefaultDisplay().getWidth(); getHeight现在已被弃用。.因此,请避免使用它们。

这是已更正的代码段。

public class Newone extends Activity {
    final Context context;
    public String cntry = "";
    int w, h;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_newone);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        context = this;

        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        w = metrics.widthPixels;
        h = metrics.heightPixels;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_DOWN) {

            String text = "You click at x = " + event.getX() + " and y = "
                    + event.getY();
            // Toast.makeText(this, text, Toast.LENGTH_LONG).show();

            if ((event.getX() > ((w / 1280) * 850))
                    && (event.getX() < ((h / 752) * 900))
                    && (event.getY() > ((w / 1280) * 380))
                    && (event.getY() < ((h / 752) * 450)))
                if ((event.getX() > 850) && (event.getX() < 900)
                        && (event.getY() > 380) && (event.getY() < 450))

                {
                    Toast.makeText(this, text, Toast.LENGTH_LONG).show();

                    display(cntry);
                }

            if ((event.getX() > 280) && (event.getX() < 400)
                    && (event.getY() > 200) && (event.getY() < 300))

            { // Toast.makeText(this, text, Toast.LENGTH_LONG).show();
                cntry = "US";
                display(cntry);
            }

            if ((event.getX() > 900) && (event.getX() < 1200)
                    && (event.getY() > 500) && (event.getY() < 650)) {

            }

        }

        return super.onTouchEvent(event);
    }

    private void display(final String cntry) {

        final Dialog dialog = new Dialog(context);
        dialog.show();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_newone, menu);
        return true;
    }

}

如果移动getWindowManager().getDefaultDisplay().getWidth()怎样? getHeight()metrics = context.getResources().getDisplayMetrics(); 在你里面onCreate吗? 我不确定在Activity的构建时是否有context和其他可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM