私はアンドロイドが初めてで、アプリに問題があります。どんな助けでも大歓迎です:)
センサーによって xpositionon と ypostion によってキャンバス上にビットマップを描画しています (携帯電話を動かしていると、ビットマップが動いています)
ビットマップの中央に移動するクリック可能なボタンを作成する必要があり、クリックすると次のアクティビティに移動します。
ビットマップは完全に描画されていますが、ビットマップと同じ値の x と y で移動するボタン、ボタンを描画する方法がわかりません。どうすればそれができますか?
これは私のコードです:
private void updateBall() {
// Calculate new speed
// xVelocity += (xAcceleration * frameTime);
// yVelocity += (yAcceleration * frameTime);
// Calc distance travelled in that time
// float xS = (xVelocity/2)*frameTime;
// float yS = (yVelocity/2)*frameTime;
// Add to position negative due to sensor
// readings being opposite to what we want!
// xPosition -= xS;
// ------------------------------- MOVING Y --------------------------------------------------
by = (-IMG_H + ddy) / 2f;
ay = by / 90f;
float dy = (ay * zAcceleration + by);
if (Math.abs(zAcceleration) < 90 && Math.abs(yAcceleration) > 100)
yPosition -= (yPosition - dy) / 20.;
else if (zAcceleration > 0) {
if (yPosition > -IMG_H) {
if (Math.abs(yAcceleration) > 100) {
dy = (ay * 90 + by);
yPosition -= (yPosition - dy) / 20.;
} else {
yPosition = -IMG_H;
}
}
} else {
if (yPosition < IMG_H) {
if (Math.abs(yAcceleration) > 100) {
dy = (-ay * 90 + by);
yPosition -= (yPosition - dy) / 20.;
} else {
yPosition = ddy;
}
}
}
// block y
yPosition = 0;
// ------------------------------- MOVING X --------------------------------------------------
// For understanding :)
// ddx= 1280-(float)display.getWidth();
ax = -IMG_W / (180f);// -2*xStart);
bx = -ax * xStart;
// xStart pozycja początkowa
if (xAcceleration > xStart && xAcceleration <= 180 + xStart) {
dx = (ax * xAcceleration + bx);
if (dirr == false) {
xPosition = dx;
dirr = true;
}
xPosition -= (xPosition - dx) / 20.;
xPosition1 = xPosition + IMG_W;
} else {
dx1 = (ax * (xAcceleration - 180f) + bx);
if (dirr == true) {
xPosition1 = dx1;
dirr = false;
}
xPosition1 -= (xPosition1 - dx1) / 20.;
xPosition = xPosition1 + IMG_W;
}
xPosition = 0;
xPosition1 = 0;
// xPosition=yPosition=150;
/*
* if (xPosition > xmax) { xPosition = xmax; } else if (xPosition < 0) {
* xPosition = 0; }
*/
/*
* if (yPosition > ymax) { yPosition = ymax; } else if (yPosition < 0) {
* yPosition = 0; }
*/
// Print values
Log.i("QLA", " x: " + xAcceleration + " dx: " + dx + " dx1: "+ dx1 + " xpos: " + xPosition + " " + " xpos1: " + xPosition1);
}
// I've chosen to not implement this method
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onStop() {
// Unregister the listener
sensorManager.unregisterListener(this);
super.onStop();
}
public class CustomDrawableView extends View {
public CustomDrawableView(Context context) {
super(context);
Bitmap ball = BitmapFactory.decodeResource(getResources(),
R.drawable.test);
final int dstWidth = 1280;
final int dstHeight = 960;
mBitmap = Bitmap.createScaledBitmap(ball, dstWidth, dstHeight, true);
Bitmap ball1 = BitmapFactory.decodeResource(getResources(),
R.drawable.tt);
final int dstWidth1 = 1280;
final int dstHeight1 = 960;
mBitmap1 = Bitmap.createScaledBitmap(ball1, dstWidth1, dstHeight1, true);
// mWood = BitmapFactory.decodeResource(getResources(),
// R.drawable.wood);
/*
* ImageButton star = (ImageButton) findViewById(R.id.imageButton1);
* star.setOnClickListener(new View.OnClickListener() { public void
* onClick(View view) { Intent myIntent = new
* Intent(view.getContext(), Main.class);
* startActivityForResult(myIntent, 0);
* overridePendingTransition(R.anim.fade_in, R.anim.fade_out); }
*
* });
*/
// ImageView ddss=star.getDrawable();
}
protected void onDraw(Canvas canvas) {
final Bitmap bitmap = mBitmap;
// canvas.drawBitmap(mWood, 0, 0, null);
canvas.drawBitmap(bitmap, xPosition, yPosition, null);
// ss.getChildAt(0).setX();
final Bitmap bitmap1 = mBitmap1;
// canvas.drawBitmap(mWood, 0, 0, null);
canvas.drawBitmap(bitmap1, xPosition1, yPosition, null);
invalidate();
}
}
// END of class
};
および XML:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout">
<FrameLayout android:id="@+id/preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
android:orientation="horizontal"
>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="sdgvgvgfcvcv"
android:gravity="center"
/>
</FrameLayout>
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:contentDescription="@string/desc"
android:adjustViewBounds="true"
android:src="@drawable/vinetka"
android:orientation="horizontal"/>
</AbsoluteLayout>