大佬教程收集整理的这篇文章主要介绍了android – ListView展开项目动画仅在第二次点击后有效,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
- RelativeLayout (view_1) - TextView - TextView - RelativeLayout (view_2) - ImageView - ImageView
当我打开我的ListView view_2设置为Visible.GONE所以你无法看到它.
现在我使用了this blog的ExpandAnimation.这里有代码:
/** * */ public class ExpandAnimation extends Animation { /** * */ private AnimationCallBACk callBACk = null; /** * */ private View viewToAnimate = null; /** * */ private RelativeLayout.LayoutParams viewToAnimateLayoutParams = null; /** * */ privatE int marginStart = 0; /** * */ privatE int marginEnd = 0; /** * */ private Boolean isVisibleAfter = false; /** * */ private Boolean isEndedAlready = false; /** * * @param callBACk * @param view * @param duration */ public ExpandAnimation(AnimationCallBACk callBACk,View view,int duration) { this.setDuration(duration); this.callBACk = callBACk; this.viewToAnimate = view; this.viewToAnimateLayoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams(); this.isVisibleAfter = (view.getVisibility() == View.VISIBLE); this.marginStart = this.viewToAnimateLayoutParams.bottomMargin; this.marginEnd = (this.marginStart == 0 ? (0 - view.getHeight()) : 0); view.setVisibility(View.VISIBLE); } /** * * @param interpolatedTime * @param transformation */ @Override protected void applyTransformation(float interpolatedTime,Transformation transformation) { super.applyTransformation(interpolatedTime,transformation); if (interpolatedTime < 1.0f) { this.viewToAnimateLayoutParams.bottomMargin = this.marginStart + (int) ((this.marginEnd - this.marginStart) * interpolatedTimE); this.viewToAnimate.requestLayout(); } else if (!this.isEndedAlready) { this.viewToAnimateLayoutParams.bottomMargin = this.marginEnd; this.viewToAnimate.requestLayout(); if (this.isVisibleAfter) { this.viewToAnimate.setVisibility(View.GONE); } this.isEndedAlready = true; this.callBACk.onAnimationCompleted(-1); } } }
我在AdapterView中使用它:
public static class ViewHolder extends RecyclerView.ViewHolder implements View.onClickListener,AnimationCallBACk { private TextView textViewValue = null; private TextView textViewTime = null; private RelativeLayout relativeLayoutExpand = null; private ImageView imageViewMood = null; private ImageView imageViewMeal = null; public ViewHolder(View itemView) { super(itemView); this.textViewValue = (TextView) itemView.findViewById(R.id.textview_value); this.textViewTime = (TextView) itemView.findViewById(R.id.textview_timE); this.relativeLayoutExpand = (RelativeLayout) itemView.findViewById(R.id.list_row_expand); this.imageViewMood = (ImageView) itemView.findViewById(R.id.imageview_mood); this.imageViewMeal = (ImageView) itemView.findViewById(R.id.imageview_meal); itemView.setOnClickListener(this); } @Override public void onClick(View view) { this.animate(this.relativeLayoutExpand); } public void animate(final View view) { ExpandAnimation expand = new ExpandAnimation(this,view,500); view.startAnimation(expand); } public void onAnimationCompleted(int position) { } }
我现在只有一个问题:当我在列表中展开一个项目时,它第一次立即出现而没有动画,之后关闭和打开动画顺利进行.
有人知道为什么第一次打开没有动画但是之后的每次点击都会触发正确的动画吗?
第一次点击我也需要动画.
编辑
是因为最初我的观点可见度是GONE,因此高度未知?如果是:我怎么能解决这个问题?
编辑2
不,我的XML布局文件没有将视图设置为GONE:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://scheR_886_11845@as.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="10dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/datatransfer_measure_list_row_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingend="10dp" android:paddingStart="10dp" android:paddingTop="10dp"> <TextView android:id="@+id/datatransfer_measure_list_row_textview_value" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:lines="1" android:maxLines="1" android:singleLine="true" android:text="@String/text_value" android:textColor="@color/textcolorpriMary" android:textSize="30sp" /> <TextView android:id="@+id/datatransfer_measure_list_row_textview_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:layouT_Below="@+id/datatransfer_measure_list_row_textview_value" android:layout_gravity="center" android:layout_marginBottom="10dp" android:gravity="start" android:lines="1" android:maxLines="1" android:singleLine="true" android:textColor="@color/textcolorpriMary" android:textSize="14sp" /> <ImageView android:id="@+id/datatransfer_measure_list_row_imageview_expand" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:contentDescription="@String/text_description" android:scaleType="fitCenter" android:src="@drawable/ic_expand_more_black_24dp" /> </RelativeLayout> <RelativeLayout android:id="@+id/datatransfer_measure_list_row_expand" android:layout_width="match_parent" android:layout_height="wrap_content" android:layouT_Below="@+id/datatransfer_measure_list_row_data" android:BACkground="@color/priMaryColor" android:paddingBottom="10dp" android:paddingend="10dp" android:paddingStart="10dp" android:paddingTop="10dp"> <RelativeLayout android:id="@+id/datatransfer_measure_list_row_mood" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:lines="1" android:maxLines="1" android:singleLine="true" android:text="@String/text_mood" android:textColor="@color/textcolorsecundary" android:textSize="30sp" /> <ImageView android:id="@+id/datatransfer_measure_list_row_imageview_mood" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:contentDescription="@String/text_description" android:scaleType="fitCenter" /> </RelativeLayout> <ImageView android:id="@+id/datatransfer_measure_list_row_imageview_meal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layouT_Below="@+id/datatransfer_measure_list_row_mood" android:layout_centerInParent="true" android:contentDescription="@String/text_description" /> </RelativeLayout> </RelativeLayout> </android.support.v7.widget.CardView>
我在listadapter中设置了View.GONE:
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder,int position) { ... viewHolder.textViewTime.setText(timE); viewHolder.textViewValue.setText(value + " " + unitvalue); viewHolder.relativeLayoutExpand.setVisibility(View.GONE); // <-- HERE ... }
编辑3
也许重要的是要知道我的cardviews的容器是Recyclerview:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://scheR_886_11845@as.android.com/apk/res/android" xmlns:app="http://scheR_886_11845@as.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/datatransfer_measure_list_textview_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:BACkground="@color/priMaryColorDark" android:gravity="center" android:padding="10dp" android:textColor="@color/white" android:textSize="18dp" /> <android.support.design.widget.CoordinatorLayout android:id="@+id/datatransfer_measure_list_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layouT_Below="@+id/datatransfer_measure_list_textview_name"> <android.support.v4.widget.SwiperefreshLayout android:id="@+id/datatransfer_measure_list_swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/datatransfer_measure_list_row_parent" android:layout_width="match_parent" android:layout_height="match_parent" android:cliPTOPadding="false" android:padding="10dp" android:textColor="@color/textcolorpriMary" /> </android.support.v4.widget.SwiperefreshLayout> <android.support.design.widget.FloaTingActionButton android:id="@+id/datatransfer_measure_list_floaTing_action_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:layout_marginEnd="16dp" android:clickable="true" android:src="@drawable/ic_search_white_24dp" app:BACkgroundTint="@color/priMaryColorDark" app:borderWidth="0dp" app:elevation="6dp" app:layout_anchor="@id/datatransfer_measure_list_row_parent" app:layout_anchorGravity="bottom|right|end" app:layouT_Behavior="de.hof.ime_dc.idia_move.views.buttons.ScrollFABBehavIoUr" app:rippleColor="@color/accentColor" /> </android.support.design.widget.CoordinatorLayout> </RelativeLayout>
我真的需要一个解决方案.它扰乱了许多所需的@L_673_13@.
编辑4
=============================== EXPAND ========================================= 08-02 12:27:22.471 V/ExpandAnimation﹕ View is visible: 8 (GONE) 08-02 12:27:22.471 V/ExpandAnimation﹕ marginStart: 0 08-02 12:27:22.471 V/ExpandAnimation﹕ marginEnd: 0 08-02 12:27:22.472 V/ExpandAnimation﹕ View is visible: 0 (VISIBLE) ============================== COLLAPSE ======================================== 08-02 12:27:51.015 V/ExpandAnimation﹕ View is visible: 0 (VISIBLE) 08-02 12:27:51.015 V/ExpandAnimation﹕ marginStart: 0 08-02 12:27:51.015 V/ExpandAnimation﹕ marginEnd: -156 08-02 12:27:51.015 V/ExpandAnimation﹕ View is visible: 8 (GONE) =============================== EXPAND ========================================= 08-02 12:27:56.007 V/ExpandAnimation﹕ View is visible: 8 (GONE) 08-02 12:27:56.007 V/ExpandAnimation﹕ marginStart: -156 08-02 12:27:56.007 V/ExpandAnimation﹕ marginEnd: 0 08-02 12:27:56.008 V/ExpandAnimation﹕ View is visible: 0 (VISIBLE) ============================== COLLAPSE ======================================== 08-02 12:27:51.015 V/ExpandAnimation﹕ View is visible: 0 (VISIBLE) 08-02 12:27:51.015 V/ExpandAnimation﹕ marginStart: 0 08-02 12:27:51.015 V/ExpandAnimation﹕ marginEnd: -156 08-02 12:27:51.015 V/ExpandAnimation﹕ View is visible: 8 (GONE) =============================== EXPAND ========================================= 08-02 12:27:56.007 V/ExpandAnimation﹕ View is visible: 8 (GONE) 08-02 12:27:56.007 V/ExpandAnimation﹕ marginStart: -156 08-02 12:27:56.007 V/ExpandAnimation﹕ marginEnd: 0 08-02 12:27:56.008 V/ExpandAnimation﹕ View is visible: 0 (VISIBLE)
如您所见,展开的第@L_447_1@marginStart为0,但必须为-156.
以上是大佬教程为你收集整理的android – ListView展开项目动画仅在第二次点击后有效全部内容,希望文章能够帮你解决android – ListView展开项目动画仅在第二次点击后有效所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。