forked from upstream-mirrors/OpenTracks
Bugfix: In preferences, the Bluetooth search icon was only animated after opening the dialog a 2nd time.
This commit is contained in:
+16
-6
@@ -8,8 +8,6 @@ import android.bluetooth.le.ScanResult;
|
|||||||
import android.bluetooth.le.ScanSettings;
|
import android.bluetooth.le.ScanSettings;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.graphics.drawable.Animatable;
|
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.ParcelUuid;
|
import android.os.ParcelUuid;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -18,9 +16,9 @@ import android.util.Log;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.preference.DialogPreference;
|
import androidx.preference.DialogPreference;
|
||||||
import androidx.preference.PreferenceDialogFragmentCompat;
|
import androidx.preference.PreferenceDialogFragmentCompat;
|
||||||
|
import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -96,6 +94,8 @@ public abstract class BluetoothLeSensorPreference extends DialogPreference {
|
|||||||
|
|
||||||
public static class BluetoothLeSensorPreferenceDialog extends PreferenceDialogFragmentCompat {
|
public static class BluetoothLeSensorPreferenceDialog extends PreferenceDialogFragmentCompat {
|
||||||
|
|
||||||
|
private AnimatedVectorDrawableCompat bluetoothIcon;
|
||||||
|
|
||||||
private int selectedEntryIndex;
|
private int selectedEntryIndex;
|
||||||
private final BluetoothLeAdapter listAdapter = new BluetoothLeAdapter();
|
private final BluetoothLeAdapter listAdapter = new BluetoothLeAdapter();
|
||||||
|
|
||||||
@@ -145,6 +145,11 @@ public abstract class BluetoothLeSensorPreference extends DialogPreference {
|
|||||||
|
|
||||||
List<ParcelUuid> serviceUUIDs = getArguments().getParcelableArrayList(ARG_BLE_SERVICE_UUIDS);
|
List<ParcelUuid> serviceUUIDs = getArguments().getParcelableArrayList(ARG_BLE_SERVICE_UUIDS);
|
||||||
|
|
||||||
|
// Don't know why: need to load the drawable _twice_, so that animation is actually started.
|
||||||
|
bluetoothIcon = AnimatedVectorDrawableCompat.create(getContext(), R.drawable.ic_bluetooth_searching_animated_24dp);
|
||||||
|
bluetoothIcon = AnimatedVectorDrawableCompat.create(getContext(), R.drawable.ic_bluetooth_searching_animated_24dp);
|
||||||
|
bluetoothIcon.start();
|
||||||
|
|
||||||
BluetoothAdapter bluetoothAdapter = BluetoothUtils.getAdapter(getContext());
|
BluetoothAdapter bluetoothAdapter = BluetoothUtils.getAdapter(getContext());
|
||||||
if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
|
if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
|
||||||
Log.w(TAG, "Bluetooth adapter is present or not enabled.");
|
Log.w(TAG, "Bluetooth adapter is present or not enabled.");
|
||||||
@@ -197,9 +202,7 @@ public abstract class BluetoothLeSensorPreference extends DialogPreference {
|
|||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
Drawable icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_bluetooth_searching_animated_24dp);
|
builder.setIcon(bluetoothIcon);
|
||||||
((Animatable) icon).start();
|
|
||||||
builder.setIcon(icon);
|
|
||||||
|
|
||||||
builder.setPositiveButton(null, null);
|
builder.setPositiveButton(null, null);
|
||||||
}
|
}
|
||||||
@@ -218,5 +221,12 @@ public abstract class BluetoothLeSensorPreference extends DialogPreference {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
bluetoothIcon = null;
|
||||||
|
scanner = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user