2015-05-27 25 views
2

我目前正在尝试运行代码来获取我在Android Studio中使用的屏幕的宽度和高度。 (代码如下) 除了getSize();方法。我正在运行Api级别22,最低级别为15.为什么getSize()方法在Android Studio中不起作用?

编辑:我刚刚意识到它可能与“extends ActionBarActivity”有关。而不只是扩展“活动”。这可能会有影响吗?

这里的代码不工作的片段:

public Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); //error here with getSize not being recognized. 
screenWidth = size.x; 
screenHeight = size.y; 

这里是所有的代码:

package com.example.e99900004533.candycollector; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.graphics.Point; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.Display; 
import android.view.ViewGroup.MarginLayoutParams; 
import android.widget.RelativeLayout; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import java.util.Random; 

public class MainActivity extends ActionBarActivity { 

    public EditText collectedTextEdit; 
    public ImageButton candyEdit; 
    public int collected = 0; 
    public int screenWidth = 300; 
    public int screenHeight = 300; 
    public final int candySize = 50; 
    Random random = new Random(); 

    public Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    //screenWidth = size.x; 
    //screenHeight = size.y; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     collectedTextEdit = (EditText) findViewById(R.id.collectedText); 
     candyEdit = (ImageButton) findViewById(R.id.candy); 
     collectedTextEdit.setText("Collected: " + collected); 
     System.out.println(screenWidth + " : " + screenHeight); 
     addListenerOnButton(); 
    } 

    public void addListenerOnButton() { 
     candyEdit.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       collected += 1; 
       collectedTextEdit.setText("Collected: " + collected); 

       MarginLayoutParams marginParams = new MarginLayoutParams(candyEdit.getLayoutParams()); 
       marginParams.setMargins(random.nextInt(screenWidth - candySize), random.nextInt(screenHeight - candySize), 0, 0); 
       RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); 
       candyEdit.setLayoutParams(layoutParams); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

这里是我的API级别:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.e99900004533.candycollector" > 

    <uses-sdk 
     android:minSdkVersion="15" 
     android:targetSdkVersion="22" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

回答

2

你需要在你的onCreate上做到这一点不在它之外

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
+0

非常感谢!我很新,只有13岁。我只是为了好玩而创造这个,并且给我的父亲留下了深刻的印象。谢谢 :) –

相关问题