2012-03-31 30 views
0

我在我的應用程序中的一項活動中創建了一個指南針,現在我想將該指南針放到另一個活動中。它應該儘可能地表現爲另一種觀點,但仍然保留其功能。將我的指南針整合到另一個活動中

有沒有辦法將一個活動嵌入另一個活動?或者是否應該嘗試在應該放置的活動中重新創建指南針?

我會添加一個屏幕截圖,但因爲它是一個指南針,它不斷更新,這引發了DDMS截圖的能力,我認爲。所以我會解釋一下:指南針線從北到南和從西到東,都繪製在整個活動中。無論如何限制這一點,並阻止它發生?


更新 - 這是不順利 - 我不能讓指南針基礎上給出的建議出現在所有。所以我已經包含了我用來查看是否有人有任何想法的代碼?

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_compass_layout); 

    // New instance of our custom drawable view 
    mCustomDrawableView = new CustomDrawableView(this); 

    // Register the sensor listeners 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); 

    //******************************************** 
    // Test for adding a new view 
    RelativeLayout myLayout = (RelativeLayout)findViewById(R.id.reltveLayoutCmpss); 

    // Add layout parameters 
    LayoutParams testLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    mCustomDrawableView.setLayoutParams(testLayoutParams); 
    mCustomDrawableView.onMeasure(100, 100); 
    // Add it to the layout 
    myLayout.addView(mCustomDrawableView); 
    //******************************************** 

// More code in here - doesn't affect painting 

} 

// Drawable for my compass view 
public class CustomDrawableView extends View 
{ 
    @Override 
    protected void onMeasure(int widthMeasure, int heightMeasure) 
    { 
     this.setMeasuredDimension(widthMeasure, heightMeasure); 
    } 

    Paint paint = new Paint(); 

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

     paint.setColor(0xff00ff00); 
     paint.setStyle(Style.STROKE); 
     paint.setStrokeWidth(2); 
     paint.setAntiAlias(true);; 
    } 

    protected void onDraw(Canvas canvas) 
    { 
     // Get dimensions of the screen 
     int width = getWidth(); 
     int height = getHeight(); 
     int centerx = width/2; 
     int centery = height/2; 


     canvas.drawLine(centerx, 0, centerx, height, paint); 
     canvas.drawLine(0, centery, width, centery, paint); 

     if(azimuth != null) 
     { 
      canvas.rotate(-azimuth * 360/(2*3.14159f), centerx, centery); 
      paint.setColor(0xff0000ff); 

      canvas.drawLine(centerx, -1000, centerx, +1000, paint); 
      canvas.drawLine(-1000, centery, 1000, centery, paint); 

      canvas.drawText("N - ^", centerx+5, centery-10, paint); 
      canvas.drawText("S - v", centerx-10, centery+15, paint); 

      paint.setColor(0xff00ff00); 
     } 
    } 
} 

你真的可以在使用paint的視圖上使用onMeasure()和setMeasuredDimension()嗎? 謝謝

+0

您的指南針是視圖嗎?如果沒有,請將其設置爲View,以便您可以在所有佈局中使用它,而不考慮Activty等。 – Freddroid 2012-03-31 15:41:59

+0

我只是將它製作成視圖並動態添加它 - 請參閱我上面的更新 – Katana24 2012-03-31 15:46:00

+0

如果線條繪製在整個活動上,檢查你的視圖的邊界,正確地實現你的指南針視圖onMeasure,以限制它的大小,並確保你根據視圖的大小繪製線條,而不是屏幕。 – Freddroid 2012-03-31 15:53:35

回答

0

ActivityGroup/Fragment。我從來沒有用過它們,不要問怎麼;)

此致敬意。

+0

我會研究這種方式,但我設法做到了 - 我必須添加所有代碼並使用LayoutParams動態添加視圖 – Katana24 2012-03-31 15:39:11