我在我的應用程序中的一項活動中創建了一個指南針,現在我想將該指南針放到另一個活動中。它應該儘可能地表現爲另一種觀點,但仍然保留其功能。將我的指南針整合到另一個活動中
有沒有辦法將一個活動嵌入另一個活動?或者是否應該嘗試在應該放置的活動中重新創建指南針?
我會添加一個屏幕截圖,但因爲它是一個指南針,它不斷更新,這引發了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