将我的指南针集成到另一个活动中

时间:2012-03-31 15:01:22

标签: android

我在我的应用程序中的一个活动中创建了一个指南针,现在我想把这个指南针放到另一个活动中。如果可能的话,它应该只是另一个视图,但仍保留其功能。

有没有办法将一个活动嵌入另一个活动?或者,尝试在应该放置的活动中重新创建指南针会更好吗?

我会添加一个截图,但因为它是一个指南针,它会不断更新,这会使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()吗? 感谢

1 个答案:

答案 0 :(得分:0)

ActivityGroup / Fragment。我从来没用过它们,也不问怎么样;)

最好的问候。