/* * Copyright (C) 2014 AChep@xda <artemchep@gmail.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package com.achep.acdisplay.compat; import android.transition.Scene; import android.util.Log; import android.view.ViewGroup; import android.view.ViewParent; import com.achep.base.Device; import static com.achep.base.Build.DEBUG; /** * This is a restricted {@link android.transition.Scene} compatibility * class for supporting Android 4.3 or below. * * @author Artem Chepurnoy */ public class SceneCompat { private static final String TAG = "SceneCompat"; private final ViewGroup mView; private final ViewGroup mParent; private Scene mScene; public SceneCompat(ViewGroup parent, ViewGroup view) { if (Device.hasKitKatApi()) { mScene = new Scene(parent, view); } mParent = parent; mView = view; } public Scene getScene() { return mScene; } public ViewGroup getView() { return mView; } public void enter() { if (Device.hasKitKatApi()) { // FIXME: This is a workaround that more research. ViewParent vp = mView.getParent(); if (vp != null) { if (DEBUG) Log.d(TAG, "Removing the view[" + mView + "] from [" + vp + "]!"); ((ViewGroup) vp).removeView(mView); } mScene.enter(); } else { mParent.removeAllViews(); mParent.addView(mView); } } }