Browse Source

Performate Wahl des Berechnungs-Zeitintervalls

master
gitsvn 12 years ago
parent
commit
4c75d3b931

+ 2
- 0
res/values/strings_notrans.xml View File

name="CalculationTimeIntervals"> name="CalculationTimeIntervals">
<item>0.1</item> <item>0.1</item>
<item>0.05</item> <item>0.05</item>
<item>0.02</item>
<item>0.01</item> <item>0.01</item>
<item>0.005</item> <item>0.005</item>
<item>0.002</item>
<item>0.001</item> <item>0.001</item>
</string-array> </string-array>

+ 60
- 1
src/ch/spherIC/recurvebowsight/RBSMainActivity.java View File

import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.text.Editable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.Spanned; import android.text.Spanned;
import android.text.TextWatcher;
import android.text.style.TabStopSpan; import android.text.style.TabStopSpan;
private static final int MIN_DISTANCE = 50; private static final int MIN_DISTANCE = 50;
private static final double CENTI = 0.01; private static final double CENTI = 0.01;
private static final double MILLI = 0.001; private static final double MILLI = 0.001;
private static final int MAX_TRAJ_POINTS = 200;
private ViewFlipper viewFlipper; private ViewFlipper viewFlipper;
private ScrollView paramsScrollView; private ScrollView paramsScrollView;
initializeComponents(); initializeComponents();
addTouchListeners(); addTouchListeners();
addValueChangeListeners();
xTextViewUp(this.txtViewParams); xTextViewUp(this.txtViewParams);
}); });
} }
private void addValueChangeListeners() {
this.arrowV0TxtFld.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(final CharSequence s, final int start, final int before, final int count) { }
@Override
public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) { }
@Override
public void afterTextChanged(final Editable s) {
if (!RBSMainActivity.this.arrowV0TxtFld.getText().toString().isEmpty()
&& !RBSMainActivity.this.shootingDistanzTxtFld.getText().toString().isEmpty()) {
calculateAndSetPerformantAccuracy(Double.valueOf(RBSMainActivity.this.arrowV0TxtFld.getText().toString()),
Double.valueOf(RBSMainActivity.this.shootingDistanzTxtFld.getText().toString()));
}
}
});
this.shootingDistanzTxtFld.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(final CharSequence s, final int start, final int before, final int count) { }
@Override
public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) { }
@Override
public void afterTextChanged(final Editable s) {
if (!RBSMainActivity.this.arrowV0TxtFld.getText().toString().isEmpty()
&& !RBSMainActivity.this.shootingDistanzTxtFld.getText().toString().isEmpty()) {
calculateAndSetPerformantAccuracy(Double.valueOf(RBSMainActivity.this.arrowV0TxtFld.getText().toString()),
Double.valueOf(RBSMainActivity.this.shootingDistanzTxtFld.getText().toString()));
}
}
});
}
@Override @Override
public boolean onPrepareOptionsMenu(final Menu menu) { public boolean onPrepareOptionsMenu(final Menu menu) {
this.scSightSpinner.fireSelectionChangedEvent(); this.scSightSpinner.fireSelectionChangedEvent();
this.scVertScaleMiddleTxtFld.setText(DF.format(archerySetup.getSightVertSkalaMiddle())); this.scVertScaleMiddleTxtFld.setText(DF.format(archerySetup.getSightVertSkalaMiddle()));
this.airTemperatureTxtFld.setText("25");
this.airTemperatureTxtFld.setText("23");
this.airRelativeHumidityTxtFld.setText("50"); this.airRelativeHumidityTxtFld.setText("50");
this.shootingDistanzTxtFld.setText("18"); this.shootingDistanzTxtFld.setText("18");
} }
} }
private void calculateAndSetPerformantAccuracy(final Double v0, final Double shootingDistance) {
String[] calcAccuracies = getResources().getStringArray(R.array.CalculationTimeIntervals);
String calcAccuracyToSet = calcAccuracies[calcAccuracies.length - 1];
Double approxFlightTime = shootingDistance / v0;
Double approxIntervalTime = approxFlightTime / MAX_TRAJ_POINTS;
for (int i = 0; i < calcAccuracies.length - 1; i++) {
Double accLow = Double.valueOf(calcAccuracies[i]);
Double accHigh = Double.valueOf(calcAccuracies[i + 1]);
if (accHigh < approxIntervalTime && approxIntervalTime <= accLow) {
calcAccuracyToSet = calcAccuracies[i];
break;
}
}
this.calcTimeIntervalCboBox.setSelectionByVal(calcAccuracyToSet);
}
} }

Loading…
Cancel
Save