[英]How to translate view with smooth animation in android
我已經編寫了執行動畫的代碼。 為此,我在anim文件夾中編寫了一個動畫文件
my animone.xml file
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromYDelta="0%p"
android:toYDelta="-5%p"
android:duration="1500"/></set>
在這里我將動畫應用到LinearLayout的視圖上
Animation animate= AnimationUtils.loadAnimation(context,R.anim.animone);
subProfile.setVisibility(View.VISIBLE);//subProfile is a linear layout
subProfile.startAnimation(animate);
所以當我運行這段代碼。 在指定的持續時間后,它將突然改變視圖的位置,而不會平滑滑動。 我想使其平滑。 請幫忙。
----------------這是我完整的代碼----------------主片段文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.videosapp.Fragments.HomeFragment"
android:background="@drawable/background">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/my_pofile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:id="@+id/dshImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_centerHorizontal="true"
android:background="@drawable/dashboard"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dashboard"
android:layout_below="@id/dshImg"
android:textColor="@color/colorText"
android:textSize="18sp"
android:layout_gravity="center_horizontal" />
</LinearLayout>
<LinearLayout android:id="@+id/podcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/podcast"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Podcast"
android:textColor="@color/colorText"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout android:id="@+id/photo_gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/photo_gallery"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Photo Gallery"
android:textColor="@color/colorText"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout android:id="@+id/social"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/social"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Social"
android:textColor="@color/colorText"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout android:id="@+id/about_us"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/aboutus"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Know US"
android:textColor="@color/colorText"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout android:id="@+id/contact_us"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/contact_us"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Contact Us"
android:textColor="@color/colorText"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout android:id="@+id/setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/settings"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Settings"
android:textColor="@color/colorText"
android:textSize="18sp"
android:layout_gravity="center_horizontal" />
</LinearLayout>
<LinearLayout android:id="@+id/exit_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_centerInParent="true" android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/exit"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exit"
android:textColor="@color/colorText"
android:textSize="18sp" />
</LinearLayout>
<ImageView
android:id="@+id/menu_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/center_menu"
android:layout_centerInParent="true" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--On following LinearLayout i want to apply animation-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerInParent="true"
android:id="@+id/profile"
android:visibility="gone"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_profile_icon"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="My Profile"
android:gravity="center_vertical"
android:textColor="@color/colorText"
android:textSize="20sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal"
android:layout_centerInParent="true"
android:id="@+id/programs"
android:visibility="gone"
>
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/folder_icon"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="My Programs"
android:gravity="center_vertical"
android:textColor="@color/colorText"
android:textSize="20sp"
/>
</LinearLayout>
</RelativeLayout>
----------------------動畫xml文件----------------------
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toYDelta="-100%" /></set>
-----------我在點擊事件中應用動畫的Java文件---------
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_pofile:
animate= AnimationUtils.loadAnimation(ctx,R.anim.animone);
subProfile.setVisibility(View.VISIBLE);
subProfile.startAnimation(animate);
break;
//other cases
}}
嘗試這個:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toYDelta="-100%" />
嘗試
降低該版面內所有圖像的分辨率或尺寸
它將解決平滑問題。
我也遇到了這個問題,並在互聯網上進行了搜索,但沒有找到任何東西,然后我覺得版式上的所有內容都很慢,然后我降低了所有圖像(包括背景)的分辨率和尺寸,然后一切開始變得如此流暢。
這將修復100%,無論您使用什么動畫(例如AnimationUtils或ObjectAnimator)都沒有關系。 如果無法正常工作,請降低所使用圖像的分辨率。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.