am 7938feef
: am 52277428
: Merge "Integrate remote display providers into Quick Settings." into klp-dev
* commit '7938feef5abd003bf54efa4f862f995856305e44': Integrate remote display providers into Quick Settings.
This commit is contained in:
@ -490,10 +490,8 @@
|
|||||||
<string name="quick_settings_wifi_no_network">No Network</string>
|
<string name="quick_settings_wifi_no_network">No Network</string>
|
||||||
<!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
|
<!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
|
||||||
<string name="quick_settings_wifi_off_label">Wi-Fi Off</string>
|
<string name="quick_settings_wifi_off_label">Wi-Fi Off</string>
|
||||||
<!-- QuickSettings: Wifi display [CHAR LIMIT=NONE] -->
|
<!-- QuickSettings: Remote display [CHAR LIMIT=NONE] -->
|
||||||
<string name="quick_settings_wifi_display_label">Wi-Fi Display</string>
|
<string name="quick_settings_remote_display_no_connection_label">Cast Screen</string>
|
||||||
<!-- QuickSettings: Wifi display [CHAR LIMIT=NONE] -->
|
|
||||||
<string name="quick_settings_wifi_display_no_connection_label">Wireless Display</string>
|
|
||||||
<!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
|
<!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
|
||||||
<string name="quick_settings_brightness_dialog_title">Brightness</string>
|
<string name="quick_settings_brightness_dialog_title">Brightness</string>
|
||||||
<!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
|
<!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
|
||||||
|
@ -39,7 +39,6 @@ import android.graphics.drawable.BitmapDrawable;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LevelListDrawable;
|
import android.graphics.drawable.LevelListDrawable;
|
||||||
import android.hardware.display.DisplayManager;
|
import android.hardware.display.DisplayManager;
|
||||||
import android.hardware.display.WifiDisplayStatus;
|
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@ -92,9 +91,7 @@ class QuickSettings {
|
|||||||
private QuickSettingsModel mModel;
|
private QuickSettingsModel mModel;
|
||||||
private ViewGroup mContainerView;
|
private ViewGroup mContainerView;
|
||||||
|
|
||||||
private DisplayManager mDisplayManager;
|
|
||||||
private DevicePolicyManager mDevicePolicyManager;
|
private DevicePolicyManager mDevicePolicyManager;
|
||||||
private WifiDisplayStatus mWifiDisplayStatus;
|
|
||||||
private PhoneStatusBar mStatusBarService;
|
private PhoneStatusBar mStatusBarService;
|
||||||
private BluetoothState mBluetoothState;
|
private BluetoothState mBluetoothState;
|
||||||
private BluetoothAdapter mBluetoothAdapter;
|
private BluetoothAdapter mBluetoothAdapter;
|
||||||
@ -118,13 +115,11 @@ class QuickSettings {
|
|||||||
new ArrayList<QuickSettingsTileView>();
|
new ArrayList<QuickSettingsTileView>();
|
||||||
|
|
||||||
public QuickSettings(Context context, QuickSettingsContainerView container) {
|
public QuickSettings(Context context, QuickSettingsContainerView container) {
|
||||||
mDisplayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
|
|
||||||
mDevicePolicyManager
|
mDevicePolicyManager
|
||||||
= (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
|
= (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mContainerView = container;
|
mContainerView = container;
|
||||||
mModel = new QuickSettingsModel(context);
|
mModel = new QuickSettingsModel(context);
|
||||||
mWifiDisplayStatus = new WifiDisplayStatus();
|
|
||||||
mBluetoothState = new QuickSettingsModel.BluetoothState();
|
mBluetoothState = new QuickSettingsModel.BluetoothState();
|
||||||
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||||
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||||
@ -171,7 +166,6 @@ class QuickSettings {
|
|||||||
mLocationController = locationController;
|
mLocationController = locationController;
|
||||||
|
|
||||||
setupQuickSettings();
|
setupQuickSettings();
|
||||||
updateWifiDisplayStatus();
|
|
||||||
updateResources();
|
updateResources();
|
||||||
applyLocationEnabledStatus();
|
applyLocationEnabledStatus();
|
||||||
|
|
||||||
@ -676,20 +670,20 @@ class QuickSettings {
|
|||||||
});
|
});
|
||||||
parent.addView(alarmTile);
|
parent.addView(alarmTile);
|
||||||
|
|
||||||
// Wifi Display
|
// Remote Display
|
||||||
QuickSettingsBasicTile wifiDisplayTile
|
QuickSettingsBasicTile remoteDisplayTile
|
||||||
= new QuickSettingsBasicTile(mContext);
|
= new QuickSettingsBasicTile(mContext);
|
||||||
wifiDisplayTile.setImageResource(R.drawable.ic_qs_remote_display);
|
remoteDisplayTile.setImageResource(R.drawable.ic_qs_remote_display);
|
||||||
wifiDisplayTile.setOnClickListener(new View.OnClickListener() {
|
remoteDisplayTile.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
startSettingsActivity(android.provider.Settings.ACTION_WIFI_DISPLAY_SETTINGS);
|
startSettingsActivity(android.provider.Settings.ACTION_WIFI_DISPLAY_SETTINGS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mModel.addWifiDisplayTile(wifiDisplayTile,
|
mModel.addRemoteDisplayTile(remoteDisplayTile,
|
||||||
new QuickSettingsModel.BasicRefreshCallback(wifiDisplayTile)
|
new QuickSettingsModel.BasicRefreshCallback(remoteDisplayTile)
|
||||||
.setShowWhenEnabled(true));
|
.setShowWhenEnabled(true));
|
||||||
parent.addView(wifiDisplayTile);
|
parent.addView(remoteDisplayTile);
|
||||||
|
|
||||||
if (SHOW_IME_TILE || DEBUG_GONE_TILES) {
|
if (SHOW_IME_TILE || DEBUG_GONE_TILES) {
|
||||||
// IME
|
// IME
|
||||||
@ -824,15 +818,6 @@ class QuickSettings {
|
|||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateWifiDisplayStatus() {
|
|
||||||
mWifiDisplayStatus = mDisplayManager.getWifiDisplayStatus();
|
|
||||||
applyWifiDisplayStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void applyWifiDisplayStatus() {
|
|
||||||
mModel.onWifiDisplayStateChanged(mWifiDisplayStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void applyBluetoothStatus() {
|
private void applyBluetoothStatus() {
|
||||||
mModel.onBluetoothStateChange(mBluetoothState);
|
mModel.onBluetoothStateChange(mBluetoothState);
|
||||||
}
|
}
|
||||||
@ -856,12 +841,7 @@ class QuickSettings {
|
|||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
final String action = intent.getAction();
|
final String action = intent.getAction();
|
||||||
if (DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED.equals(action)) {
|
if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
|
||||||
WifiDisplayStatus status = (WifiDisplayStatus)intent.getParcelableExtra(
|
|
||||||
DisplayManager.EXTRA_WIFI_DISPLAY_STATUS);
|
|
||||||
mWifiDisplayStatus = status;
|
|
||||||
applyWifiDisplayStatus();
|
|
||||||
} else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
|
|
||||||
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
|
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
|
||||||
BluetoothAdapter.ERROR);
|
BluetoothAdapter.ERROR);
|
||||||
mBluetoothState.enabled = (state == BluetoothAdapter.STATE_ON);
|
mBluetoothState.enabled = (state == BluetoothAdapter.STATE_ON);
|
||||||
|
@ -27,7 +27,8 @@ import android.content.pm.PackageManager;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.hardware.display.WifiDisplayStatus;
|
import android.media.MediaRouter;
|
||||||
|
import android.media.MediaRouter.RouteInfo;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
@ -57,7 +58,6 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
BrightnessStateChangeCallback,
|
BrightnessStateChangeCallback,
|
||||||
RotationLockControllerCallback,
|
RotationLockControllerCallback,
|
||||||
LocationSettingsChangeCallback {
|
LocationSettingsChangeCallback {
|
||||||
|
|
||||||
// Sett InputMethoManagerService
|
// Sett InputMethoManagerService
|
||||||
private static final String TAG_TRY_SUPPRESSING_IME_SWITCHER = "TrySuppressingImeSwitcher";
|
private static final String TAG_TRY_SUPPRESSING_IME_SWITCHER = "TrySuppressingImeSwitcher";
|
||||||
|
|
||||||
@ -199,6 +199,30 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Callback for changes to remote display routes. */
|
||||||
|
private class RemoteDisplayRouteCallback extends MediaRouter.SimpleCallback {
|
||||||
|
@Override
|
||||||
|
public void onRouteAdded(MediaRouter router, RouteInfo route) {
|
||||||
|
updateRemoteDisplays();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onRouteChanged(MediaRouter router, RouteInfo route) {
|
||||||
|
updateRemoteDisplays();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onRouteRemoved(MediaRouter router, RouteInfo route) {
|
||||||
|
updateRemoteDisplays();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onRouteSelected(MediaRouter router, int type, RouteInfo route) {
|
||||||
|
updateRemoteDisplays();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onRouteUnselected(MediaRouter router, int type, RouteInfo route) {
|
||||||
|
updateRemoteDisplays();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
private final CurrentUserTracker mUserTracker;
|
private final CurrentUserTracker mUserTracker;
|
||||||
@ -206,6 +230,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
private final BugreportObserver mBugreportObserver;
|
private final BugreportObserver mBugreportObserver;
|
||||||
private final BrightnessObserver mBrightnessObserver;
|
private final BrightnessObserver mBrightnessObserver;
|
||||||
|
|
||||||
|
private final MediaRouter mMediaRouter;
|
||||||
|
private final RemoteDisplayRouteCallback mRemoteDisplayRouteCallback;
|
||||||
|
|
||||||
private final boolean mHasMobileData;
|
private final boolean mHasMobileData;
|
||||||
|
|
||||||
private QuickSettingsTileView mUserTile;
|
private QuickSettingsTileView mUserTile;
|
||||||
@ -228,9 +255,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
private RefreshCallback mWifiCallback;
|
private RefreshCallback mWifiCallback;
|
||||||
private WifiState mWifiState = new WifiState();
|
private WifiState mWifiState = new WifiState();
|
||||||
|
|
||||||
private QuickSettingsTileView mWifiDisplayTile;
|
private QuickSettingsTileView mRemoteDisplayTile;
|
||||||
private RefreshCallback mWifiDisplayCallback;
|
private RefreshCallback mRemoteDisplayCallback;
|
||||||
private State mWifiDisplayState = new State();
|
private State mRemoteDisplayState = new State();
|
||||||
|
|
||||||
private QuickSettingsTileView mRSSITile;
|
private QuickSettingsTileView mRSSITile;
|
||||||
private RefreshCallback mRSSICallback;
|
private RefreshCallback mRSSICallback;
|
||||||
@ -278,12 +305,14 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
mContext = context;
|
mContext = context;
|
||||||
mHandler = new Handler();
|
mHandler = new Handler();
|
||||||
mUserTracker = new CurrentUserTracker(mContext) {
|
mUserTracker = new CurrentUserTracker(mContext) {
|
||||||
|
@Override
|
||||||
public void onUserSwitched(int newUserId) {
|
public void onUserSwitched(int newUserId) {
|
||||||
mBrightnessObserver.startObserving();
|
mBrightnessObserver.startObserving();
|
||||||
refreshRotationLockTile();
|
refreshRotationLockTile();
|
||||||
onBrightnessLevelChanged();
|
onBrightnessLevelChanged();
|
||||||
onNextAlarmChanged();
|
onNextAlarmChanged();
|
||||||
onBugreportChanged();
|
onBugreportChanged();
|
||||||
|
rebindMediaRouterAsCurrentUser();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -294,6 +323,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
mBrightnessObserver = new BrightnessObserver(mHandler);
|
mBrightnessObserver = new BrightnessObserver(mHandler);
|
||||||
mBrightnessObserver.startObserving();
|
mBrightnessObserver.startObserving();
|
||||||
|
|
||||||
|
mMediaRouter = (MediaRouter)context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
|
||||||
|
rebindMediaRouterAsCurrentUser();
|
||||||
|
|
||||||
|
mRemoteDisplayRouteCallback = new RemoteDisplayRouteCallback();
|
||||||
|
|
||||||
ConnectivityManager cm = (ConnectivityManager)
|
ConnectivityManager cm = (ConnectivityManager)
|
||||||
context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
mHasMobileData = cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
|
mHasMobileData = cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
|
||||||
@ -621,24 +655,59 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
|||||||
mBugreportCallback.refreshView(mBugreportTile, mBugreportState);
|
mBugreportCallback.refreshView(mBugreportTile, mBugreportState);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wifi Display
|
// Remote Display
|
||||||
void addWifiDisplayTile(QuickSettingsTileView view, RefreshCallback cb) {
|
void addRemoteDisplayTile(QuickSettingsTileView view, RefreshCallback cb) {
|
||||||
mWifiDisplayTile = view;
|
mRemoteDisplayTile = view;
|
||||||
mWifiDisplayCallback = cb;
|
mRemoteDisplayCallback = cb;
|
||||||
}
|
final int[] count = new int[1];
|
||||||
public void onWifiDisplayStateChanged(WifiDisplayStatus status) {
|
mRemoteDisplayTile.setOnPrepareListener(new QuickSettingsTileView.OnPrepareListener() {
|
||||||
mWifiDisplayState.enabled =
|
@Override
|
||||||
(status.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON);
|
public void onPrepare() {
|
||||||
if (status.getActiveDisplay() != null) {
|
mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY,
|
||||||
mWifiDisplayState.label = status.getActiveDisplay().getFriendlyDisplayName();
|
mRemoteDisplayRouteCallback,
|
||||||
mWifiDisplayState.iconId = R.drawable.ic_qs_remote_display_connected;
|
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
|
||||||
} else {
|
updateRemoteDisplays();
|
||||||
mWifiDisplayState.label = mContext.getString(
|
}
|
||||||
R.string.quick_settings_wifi_display_no_connection_label);
|
@Override
|
||||||
mWifiDisplayState.iconId = R.drawable.ic_qs_remote_display;
|
public void onUnprepare() {
|
||||||
}
|
mMediaRouter.removeCallback(mRemoteDisplayRouteCallback);
|
||||||
mWifiDisplayCallback.refreshView(mWifiDisplayTile, mWifiDisplayState);
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
updateRemoteDisplays();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rebindMediaRouterAsCurrentUser() {
|
||||||
|
mMediaRouter.rebindAsUser(mUserTracker.getCurrentUserId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateRemoteDisplays() {
|
||||||
|
MediaRouter.RouteInfo connectedRoute = mMediaRouter.getSelectedRoute(
|
||||||
|
MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY);
|
||||||
|
boolean enabled = connectedRoute != null && (connectedRoute.getSupportedTypes()
|
||||||
|
& MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY) != 0;
|
||||||
|
if (!enabled) {
|
||||||
|
connectedRoute = null;
|
||||||
|
final int count = mMediaRouter.getRouteCount();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
MediaRouter.RouteInfo route = mMediaRouter.getRouteAt(i);
|
||||||
|
if ((route.getSupportedTypes() & MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY) != 0) {
|
||||||
|
enabled = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mRemoteDisplayState.enabled = enabled;
|
||||||
|
if (connectedRoute != null) {
|
||||||
|
mRemoteDisplayState.label = connectedRoute.getName().toString();
|
||||||
|
mRemoteDisplayState.iconId = R.drawable.ic_qs_remote_display_connected;
|
||||||
|
} else {
|
||||||
|
mRemoteDisplayState.label = mContext.getString(
|
||||||
|
R.string.quick_settings_remote_display_no_connection_label);
|
||||||
|
mRemoteDisplayState.iconId = R.drawable.ic_qs_remote_display;
|
||||||
|
}
|
||||||
|
mRemoteDisplayCallback.refreshView(mRemoteDisplayTile, mRemoteDisplayState);
|
||||||
}
|
}
|
||||||
|
|
||||||
// IME
|
// IME
|
||||||
|
@ -21,6 +21,7 @@ import android.util.AttributeSet;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewParent;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,14 +32,14 @@ class QuickSettingsTileView extends FrameLayout {
|
|||||||
|
|
||||||
private int mContentLayoutId;
|
private int mContentLayoutId;
|
||||||
private int mColSpan;
|
private int mColSpan;
|
||||||
private int mRowSpan;
|
private boolean mPrepared;
|
||||||
|
private OnPrepareListener mOnPrepareListener;
|
||||||
|
|
||||||
public QuickSettingsTileView(Context context, AttributeSet attrs) {
|
public QuickSettingsTileView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
|
|
||||||
mContentLayoutId = -1;
|
mContentLayoutId = -1;
|
||||||
mColSpan = 1;
|
mColSpan = 1;
|
||||||
mRowSpan = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setColumnSpan(int span) {
|
void setColumnSpan(int span) {
|
||||||
@ -77,4 +78,72 @@ class QuickSettingsTileView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
super.setVisibility(vis);
|
super.setVisibility(vis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOnPrepareListener(OnPrepareListener listener) {
|
||||||
|
if (mOnPrepareListener != listener) {
|
||||||
|
mOnPrepareListener = listener;
|
||||||
|
mPrepared = false;
|
||||||
|
post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
updatePreparedState();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onVisibilityChanged(View changedView, int visibility) {
|
||||||
|
super.onVisibilityChanged(changedView, visibility);
|
||||||
|
updatePreparedState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onAttachedToWindow() {
|
||||||
|
super.onAttachedToWindow();
|
||||||
|
updatePreparedState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDetachedFromWindow() {
|
||||||
|
super.onDetachedFromWindow();
|
||||||
|
updatePreparedState();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updatePreparedState() {
|
||||||
|
if (mOnPrepareListener != null) {
|
||||||
|
if (isParentVisible()) {
|
||||||
|
if (!mPrepared) {
|
||||||
|
mPrepared = true;
|
||||||
|
mOnPrepareListener.onPrepare();
|
||||||
|
}
|
||||||
|
} else if (mPrepared) {
|
||||||
|
mPrepared = false;
|
||||||
|
mOnPrepareListener.onUnprepare();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isParentVisible() {
|
||||||
|
if (!isAttachedToWindow()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (ViewParent current = getParent(); current instanceof View;
|
||||||
|
current = current.getParent()) {
|
||||||
|
View view = (View)current;
|
||||||
|
if (view.getVisibility() != VISIBLE) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the view's parent becomes visible or invisible to provide
|
||||||
|
* an opportunity for the client to provide new content.
|
||||||
|
*/
|
||||||
|
public interface OnPrepareListener {
|
||||||
|
void onPrepare();
|
||||||
|
void onUnprepare();
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user