в моем приложении для Android, когда я поворачиваю / наклоняю свое устройство, я хочу повернуть кнопки управления в противоположном направлении, что компенсирует ориентацию устройства.вроде как идея ориентации экрана в андроиде
вот мой класс сенсора:
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
synchronized (this) {
double alpha = 0.8;
double gravity[] = new double[3];
switch (event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
// alpha is calculated as t / (t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
//gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
//gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
//gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
//sensorX = event.values[0] - gravity[0];
//sensorY = event.values[1] - gravity[1];
//sensorZ = event.values[2] - gravity[2];
//ignore this section!
break;
case Sensor.TYPE_ORIENTATION:
sensorZ = event.values[0];
sensorX = event.values[1];
sensorY = event.values[2];
outputZ.setText("Z:"+Float.toString(event.values[0]));
outputX.setText("X:"+Float.toString(event.values[1]));
outputY.setText("Y:"+Float.toString(event.values[2]));
//Toast.makeText(getApplicationContext(), "SWITCH TO ",Toast.LENGTH_LONG).show();
//RelativeLayout s_r_t = (RelativeLayout) findViewById(R.id.snap_r_t);
//RotateView r_flash = new RotateView(this , s_r_t.getWidth(), s_r_t.getHeight(), 90)(RotateView) findViewById(R.id.flash);
//RotateView r_flash = new RotateView(this , s_r_t.getWidth(), s_r_t.getHeight(), 90);
s_r_t.addView(r_flash);
//s_r_t.setLayoutParams(params)
//flash.getWidth();
//flash.getHeight();
break;
}
}
}
вместе с моей расширенной кнопкой:
public class RotateView extends Button {
private float cx,cy;
private double degree;
private Button button;
public RotateView(Context context , int x, int y, double deg) {
super(context);
cx = (float)x/2;
cy = (float)y/2;
degree = deg;
}
public RotateView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.rotate((float)degree,cx,cy);
super.onDraw(canvas);
canvas.restore();
}
}
как мне создать свойкнопка с расширенным классом кнопок?
вот моя кнопка:
flash = (Button)findViewById(R.id.flash);
в принципе, это то, чего я хочу достичь (псевдокод):
new button = find my button id;
onSensorChanged{
set button rotation to sensor.getdata degrees;
}
если возможно, пожалуйста, дайте полные фрагменты кода, я видел, что многие ответы почти отвечали на мой вопрос, но упускали основную часть того, как реализовать расширенную кнопку назад к моей кнопке в моем основном классе.