マシュマロでAnimation scale duration
フラグを読み取っているときに問題に直面しています。以前のバージョンのMarshmallow(6.0.0)でも同じコードが動作しています。読む方法マシュマロのアニメーション縮尺期間フラグ
私はフラグメントアニメーションのためにandroid.app.Fragment.setCustomTransition()
メソッドを使用しています。 developer option settings
のアニメーションスケールの継続時間が0の場合、フラグメントが表示されません。だから私はこの状態でアニメーションを無効にしなければならなかった。
マイコードスニペット:
public static boolean isAnimationOff()
{
final float animatorSpeed;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
{
animatorSpeed = Settings.Global.getFloat(
context.getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE,
0);
}
else
{
animatorSpeed = Settings.System.getFloat(
context.getContentResolver(),
Settings.System.ANIMATOR_DURATION_SCALE,
0);
}
return animatorSpeed == 0;
}
問題は次のとおりです。このコードは、各上true
を返すには、アニメーションのスケールの期間が0でない場合であっても
は、誰もがこの問題に直面している呼び出しますか?
EDIT1
後、私はフラグメントをロードするisAnimationOff()
メソッドを使用するコードスニペットです:
private void loadFragment(Fragment fragment)
{
FragmentTransaction transaction = getFragmentManager().beginTransaction();
if (!Constants.isAnimationOff())
transaction.setCustomAnimations(animSlideIn, animSlideOut);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.frameTopContainer, fragment)
.commitAllowingStateLoss();
}
EDIT2
ここでは、カスタムプロパティを持つカスタムのLinearLayoutは次のとおりです。
public class FractionLinearLayout extends LinearLayout
{
DisplayMetrics matrics = getContext().getResources().getDisplayMetrics();
public FractionLinearLayout(Context context, AttributeSet attrs,
int defStyleAttr)
{
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
public FractionLinearLayout(Context context)
{
super(context);
// TODO Auto-generated constructor stub
}
public FractionLinearLayout(Context context, AttributeSet attrs)
{
super(context, attrs);
// TODO Auto-generated constructor stub
}
public float getFractionTranslationX()
{
return getWidth() > 0 ? super.getTranslationX()/getWidth() : Float.MAX_VALUE;
}
public void setFractionTranslationX(float translationX)
{
int width = getWidth();
super.setTranslationX(width > 0 ? width * translationX : Float.MAX_VALUE);
}
public float getFractionTranslationY()
{
return getHeight() > 0 ? super.getTranslationX()/getHeight() : Float.MAX_VALUE;
}
public void setFractionTranslationY(float translationY)
{
int height = getHeight();
super.setTranslationY(height > 0 ? height * translationY : Float.MAX_VALUE);
}
public float getAnimWidth()
{
return getLayoutParams().width;
}
public void setAnimWidth(int animWidth)
{
getLayoutParams().width = animWidth;
requestLayout();
}
}
実際に 'isAnimationOff'メソッドが必要ですか? – pskink
アニメーションスケールが0(アニメーションがデベロッパーオプション設定からオフ)かどうかを確認します。 'setCustomTransition()'が呼び出されていない場合は呼び出されません。 – chandil03
@pskink幸運。 – chandil03