Это действительно просто с droidQuery .Для начала рассмотрим следующую схему:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/v1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View 1" />
</LinearLayout>
<LinearLayout
android:id="@+id/v2"
android:layout_width="wrap_content"
android:layout_height="0dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View 2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View 3" />
</LinearLayout>
</LinearLayout>
Мы можем анимировать высоту до желаемого значения, скажем, 100dp
, используя следующий код:
//convert 100dp to pixel value
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
Затем используйте droidQuery
оживить.Простейший способ заключается в следующем:
$.animate("{ height: " + height + "}", new AnimationOptions());
Чтобы сделать анимацию более привлекательной, рассмотрите возможность добавления замедления:
$.animate("{ height: " + height + "}", new AnimationOptions().easing($.Easing.BOUNCE));
Вы также можете изменить продолжительность на AnimationOptions
, используя duration()
метод, или обработать то, что происходит, когда анимация заканчивается.Для сложного примера попробуйте:
$.animate("{ height: " + height + "}", new AnimationOptions().easing($.Easing.BOUNCE)
.duration(1000)
.complete(new Function() {
@Override
public void invoke($ d, Object... args) {
$.toast(context, "finished", Toast.LENGTH_SHORT);
}
}));