我在我的应用程序中的一项活动中创建了一个指南针,现在我想将该指南针放到另一个活动中。它应该尽可能地表现为另一种观点,但仍然保留其功能。将我的指南针整合到另一个活动中
有没有办法将一个活动嵌入另一个活动?或者是否应该尝试在应该放置的活动中重新创建指南针?
我会添加一个屏幕截图,但因为它是一个指南针,它不断更新,这引发了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()吗? 谢谢
您的指南针是视图吗?如果没有,请将其设置为View,以便您可以在所有布局中使用它,而不考虑Activty等。 – Freddroid 2012-03-31 15:41:59
我只是将它制作成视图并动态添加它 - 请参阅我上面的更新 – Katana24 2012-03-31 15:46:00
如果线条绘制在整个活动上,检查你的视图的边界,正确地实现你的指南针视图onMeasure,以限制它的大小,并确保你根据视图的大小绘制线条,而不是屏幕。 – Freddroid 2012-03-31 15:53:35