重要信息:
这些是我的动画:
R.anim.fragment_animation_in:
<!-- The info window in animation -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="500"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
R.anim.fragment_animation_out:
<?xml version="1.0" encoding="utf-8"?>
<!-- The info window in animation -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="500"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
我正在使用它们来平滑地改变我的片段:
/**
* Show a new fragment
* @param fragmentTransaction the fragment transaction, if null the a new {@link FragmentTransaction} will recevie from {@link FragmentManager}
* @param fragment the new fragment to show
* @param addToBackStack true if you wish to add the fragment to the back stack, false otherwise
* @param toCommit true if you with to run the commit() method at the end of the transaction, false otherwise
*/
public void showFragment(FragmentTransaction fragmentTransaction,Fragment fragment, boolean addToBackStack, boolean toCommit)
{
if (fragmentTransaction == null)
fragmentTransaction = getSupportFragmentManager().beginTransaction();
//set fragment changing animation
fragmentTransaction.setCustomAnimations(R.anim.fragment_animation_in, R.anim.fragment_animation_out);
//add the first fragment
fragmentTransaction.replace(MainActivity.APPLICATION_LAYOUT_ID, fragment);
//if needed add to back stack
if (addToBackStack)
fragmentTransaction.addToBackStack(null);
if (toCommit)
//commit transaction
fragmentTransaction.commit();
}
这是我的第一个布局:
<?xml version="1.0" encoding="utf-8"?>
<!-- Start fragment of the application -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.coapps.pico"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:gravity="center"
android:orientation="vertical" >
<!-- logo -->
<ImageView
android:id="@+id/fragment_start_pico_logo"
android:layout_width="wrap_content"
android:layout_height="230dp"
android:contentDescription="@string/app_name"
android:src="@drawable/pico_logo" />
<!-- start now button -->
<LinearLayout
android:id="@+id/fragment_start_linearlayout_start_now"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/fragment_start_pico_logo"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:background="@drawable/button_orange"
android:clickable="true"
android:gravity="center"
android:orientation="horizontal"
android:padding="15dp" >
<!-- facebook logo -->
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/facebook_logo" />
<!-- button text -->
<com.coapps.pico.NillanTextView
style="@style/text_shadow_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:gravity="center"
android:text="@string/button_start_now"
android:textColor="@android:color/white"
android:textSize="30sp"
app:isBold="true" />
</LinearLayout>
</RelativeLayout>
这是我的第二个布局:
<?xml version="1.0" encoding="utf-8"?>
<!-- Home fragment layout -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.coapps.pico"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- title layout -->
<RelativeLayout
android:id="@+id/fragment_home_relativelayout_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/fragment_home_linearlayout_statistics"
android:background="@drawable/background_fragment_title"
android:paddingBottom="5dp" >
<!-- profile picture -->
<ImageView
android:id="@+id/fragment_home_imageview_profile_picture"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:background="@drawable/background_profile_picture"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/test_pic" />
<!-- user name -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/fragment_home_imageview_profile_picture"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/fragment_home_imageview_profile_picture"
android:gravity="top"
android:text="Roi Mozer"
android:textColor="@android:color/white"
android:textSize="30sp"
app:isBold="true" />
<!-- picash icon -->
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignBottom="@+id/fragment_home_textview_picash"
android:layout_marginLeft="10dp"
android:layout_toLeftOf="@+id/fragment_home_textview_picash"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/icon_picash" />
<!-- picash textview -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_picash"
style="@style/text_shadow_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:gravity="top"
android:text="10"
android:textColor="@color/orange"
android:textSize="20sp"
app:isBold="true" />
</RelativeLayout>
<!-- event statistics layout -->
<LinearLayout
android:id="@+id/fragment_home_linearlayout_statistics"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_above="@+id/fragment_home_view_orange_delimiter"
android:background="@android:color/white"
android:baselineAligned="false"
android:orientation="horizontal" >
<!-- Created Events Statistics Layout -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" >
<!-- created name -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_created_events_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="@string/labal_created_events"
android:textColor="@color/text_grey_blue"
android:textSize="15sp"
app:isBold="true" />
<!-- created number -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_created_events_number"
style="@style/text_shadow_black"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="6"
android:textColor="@color/orange"
android:textSize="60sp"
app:isBold="true" />
</RelativeLayout>
<!-- Invited Events Statistics Layout -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" >
<!-- invited name -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_invited_events_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="@string/labal_invited_events"
android:textColor="@color/text_grey_blue"
android:textSize="15sp"
app:isBold="true" />
<!-- invited number -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_invited_events_number"
style="@style/text_shadow_black"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="6"
android:textColor="@color/orange"
android:textSize="60sp"
app:isBold="true" />
</RelativeLayout>
<!-- Attending Events Statistics Layout -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" >
<!-- attending name -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_attending_events_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="@string/labal_attending_events"
android:textColor="@color/text_grey_blue"
android:textSize="15sp"
app:isBold="true" />
<!-- attending number -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_attending_events_number"
style="@style/text_shadow_black"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:gravity="center"
android:text="6"
android:textColor="@color/orange"
android:textSize="60sp"
app:isBold="true" />
</RelativeLayout>
</LinearLayout>
<!-- orange delimiter -->
<View
android:id="@+id/fragment_home_view_orange_delimiter"
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_above="@+id/fragment_home_relativelayout_tutorial"
android:background="@color/orange" />
<!-- tutorial video layout -->
<RelativeLayout
android:id="@+id/fragment_home_relativelayout_tutorial"
android:layout_width="fill_parent"
android:layout_height="170dp"
android:layout_above="@+id/fragment_home_textview_logout"
android:layout_margin="5dp" >
<!-- tutorial video -->
<VideoView
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<!-- Triangle shape -->
<ImageView
android:layout_width="100dp"
android:layout_height="96dp"
android:layout_centerInParent="true"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/shape_triangle" />
<!-- tutorial video textview -->
<com.coapps.pico.NillanTextView
style="@style/text_shadow_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/labal_tutorial_video"
android:textColor="@android:color/white"
android:textSize="25sp"
app:isBold="true" />
</RelativeLayout>
<!-- logout -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_home_textview_logout"
style="@style/text_shadow_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="10dp"
android:layout_marginTop="10dp"
android:clickable="true"
android:text="@string/button_logout"
android:textColor="@android:color/white"
android:textSize="20sp"
app:isBold="true" />
</RelativeLayout>
这是我的第三个布局:
<?xml version="1.0" encoding="utf-8"?>
<!-- enter code fragment of the application -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.coapps.pico"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_start"
android:gravity="center" >
<!-- event code -->
<EditText
android:id="@+id/fragment_event_code_edittext_event_code"
style="@style/text_shadow_black"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/background_edittext_grey"
android:ellipsize="end"
android:gravity="center"
android:hint="@string/hint_enter_code"
android:inputType="number"
android:padding="15dp"
android:singleLine="true"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white"
android:textSize="25sp" />
<!-- Load Event -->
<com.coapps.pico.NillanTextView
android:id="@+id/fragment_event_code_textview_load_event"
style="@style/text_shadow_black"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/fragment_event_code_edittext_event_code"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="15dp"
android:background="@drawable/button_orange"
android:clickable="true"
android:gravity="center"
android:padding="15dp"
android:text="@string/button_load_event"
android:textColor="@android:color/white"
android:textSize="25sp"
app:isBold="true" />
</RelativeLayout>
问题:
当我尝试从第一个布局更改为第二个布局时,动画不流畅, 第一个布局很好地激活了自己,但第二个布局在开始动画之前有一些闪烁。
当我尝试从第一个布局更改为第三个布局时,它运行良好且流畅。
如果我从第一个变为第二个(有一个闪烁),然后从第二个变为第三个 - 它运作良好,即使我从第三个回到第二个 - 它运作良好。
就像它第一次加载第二个布局一样 - 它必须在动画制作之前闪烁,但是当它已经创建时 - 它可以平滑地进行动画制作..
有什么想法吗?
答案 0 :(得分:0)
我实际上发现了问题:VideoView
导致了延迟..可能是因为我没有在其中设置任何视频..
无论如何,我删除了它,它现在工作得很好! :)
答案 1 :(得分:0)
我在片段交易方面遇到了类似的问题。我使用向左滑动,向右滑动的动画,当发生这种情况时,屏幕顶部会出现故障。我最初认为它与ActionBar有关,因为那是发生故障的地方。
经过进一步审核,解决方案是将SurfaceView的背景设置为透明,如下所示:
android:background="@android:color/transparent"
感谢Asaf Nevo和Riasat引导我找到这个解决方案。