2012-02-08 1 views
0

사각형과 도형을 원하는대로 인쇄하려고합니다. 이것이 가능합니까? 어떻게하면 자바 코드와 내 주 XML 모두에서 에뮬레이터로 도형을 인쇄 할 수 있습니까? 고맙습니다.하나의 클래스에서 둘 이상의 setContentView를 가질 수 있습니까?

package com.example.accel; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.RectF; 
import android.graphics.drawable.ShapeDrawable; 
import android.graphics.drawable.shapes.RectShape; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.TextView; 

public class AccelActivity extends Activity implements SensorEventListener 
{ 
    /** Called when the activity is first created. */ 
    CustomDrawableView mCustomDrawableView = null; 
    ShapeDrawable mDrawable = new ShapeDrawable(); 
    public static int x; 
    public static int y; 
    public static int z; 
    private SensorManager sensorManager = null; 
    TextView x1, y1, z1; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 

     super.onCreate(savedInstanceState); 
     // Get a reference to a SensorManager 
     sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
     mCustomDrawableView = new CustomDrawableView(this); 
     setContentView(mCustomDrawableView); 
     setContentView(R.layout.main); 

    } 

    // This method will update the UI on new sensor events 
    public void onSensorChanged(SensorEvent sensorEvent) 
    { 
     { 
      if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 

       TextView tvX= (TextView)findViewById(R.id.x_axis); 
       TextView tvY= (TextView)findViewById(R.id.y_axis); 
       TextView tvZ= (TextView)findViewById(R.id.z_axis); 

       x = (int) Math.pow(sensorEvent.values[0], 2); 
       y = (int) Math.pow(sensorEvent.values[1], 2); 
       z = (int) Math.pow(sensorEvent.values[2], 2); 

      } 

     // if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) { 

      // } 
     } 
    } 

    // I've chosen to not implement this method 
    public void onAccuracyChanged(Sensor arg0, int arg1) 
    { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    protected void onResume() 
    { 
     super.onResume(); 
     // Register this class as a listener for the accelerometer sensor 
     sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
       SensorManager.SENSOR_DELAY_FASTEST); 
     // ...and the orientation sensor 

    } 

    @Override 
    protected void onStop() 
    { 
     // Unregister the listener 
     sensorManager.unregisterListener(this); 
     super.onStop(); 
    } 

    public class CustomDrawableView extends View 
    { 
     static final int width = 150; 
     static final int height = 250; 

     public CustomDrawableView(Context context) 
     { 
      super(context); 

      mDrawable = new ShapeDrawable(new RectShape()); 
      mDrawable.getPaint().setColor(0xff74AC23); 
      mDrawable.setBounds(x, y, x + width, y + height); 

     } 

     protected void onDraw(Canvas canvas) 
     { 

      RectF rect = new RectF(AccelActivity.x, AccelActivity.y, AccelActivity.x + width, AccelActivity.y 
        + height); // set bounds of rectangle 
      Paint p = new Paint(); // set some paint options 
      p.setColor(Color.BLUE); 
      canvas.drawRect(rect, p); 
      invalidate(); 
     } 
    } 
} 
+0

그 이유를 설명해 주시겠습니까? 콘텐트 뷰는 당신에게 콘트롤러에 대한 델리게이트 뷰가되어야한다. 둘을 가질 수는 없습니다. 하나는 다른 하나에 있어야합니다. –

+0

메인 레이아웃에서 다른 xml 레이아웃을 팽창 시키길 원할 수도 있습니다. –

+0

자바 코드에서 정의한 모양뿐만 아니라 안드로이드 main xml을 통해 인쇄되는 가속도계 값을 원하기 때문에 두 가지를 모두 표시하는 방법을 모르겠습니다. – user1169775

답변

0

예, 가능합니다.

setcontentview(anotherLayout), 그래서 당신은 당신의 활동에 새로운 레이아웃을 pring합니다.

또는 당신은 당신의 mainLayout 다른 요소를 정의 할 수 있으며,이 기능에 의해이를 조작 setVisibily

당신은 elementA해야하는 경우 :

elementA.setVisibility(false); 
:

elementA = findViewById(R.id.elementA); 
elementA.setVisibility(true); 

을 당신이 필요하지 않은 경우

+0

고맙지 만 메인 XML에서 한 가지만 인쇄하려고합니다. 자바 코드에서 만든, 그래서 그들은 별도로, 나는 에뮬레이터에서 둘 다 인쇄하려고합니다. – user1169775