2012-03-31 29 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