3

フラグメントとアニメーションを使用しています。私はこれで出てきました:

slide_in_up.xml :

<?xml version="1.0" encoding="utf-8"?>
<set>
  <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="y" 
    android:valueType="floatType"
    android:valueFrom="600"
    android:valueTo="0" 
    android:duration="500"/>
</set>

そして、これはアニメーションが使用される場所です:

public void showFirstFragment(View v) {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.addToBackStack(null);
    ft.setCustomAnimations(R.animator.slide_in_up, R.animator.slide_out_up);    
    ft.replace(R.id.fragmentContainer, firstFragment);
    ft.commit();
}

それはかなりうまく機能します。入ってくるフラグメントは下から現れ、前のフラグメントは上に消えます。

私の問題は、アニメーション XML の「vavlueFrom」タグのサイズが固定されていることです (フラグメントが画面の半分のサイズを取り、1200px の解像度で考えているため、600 に設定されています)。画面解像度が 1200px 未満の場合、この固定サイズを使用すると、フラグメントが下から始まるため、フラグメントが少し遅れて表示されます (この文が間違っている場合は申し訳ありません - 私はイタリア人です)。

このディメンションをプログラムで設定するにはどうすればよいですか? 私は次のようなことをしたい: 画面解像度を取得する -> "valueFrom" を y 値の半分に設定します。

よろしくお願いします!

4

1 に答える 1

-3

正確な y 値の代わりにパーセンテージを使用してください。

<?xml version="1.0" encoding="utf-8"?>
<set>
  <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="y" 
    android:valueFrom="80%"
    android:valueTo="0" 
    android:duration="500"/>
</set>
于 2014-01-09T00:49:48.570 に答える