我在我的应用程序中的一个活动中创建了一个指南针,现在我想把这个指南针放到另一个活动中。如果可能的话,它应该只是另一个视图,但仍保留其功能。
有没有办法将一个活动嵌入另一个活动?或者,尝试在应该放置的活动中重新创建指南针会更好吗?
我会添加一个截图,但因为它是一个指南针,它会不断更新,这会使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 :(得分:0)
ActivityGroup / Fragment。我从来没用过它们,也不问怎么样;)
最好的问候。