ListView的Item动画

1.效果图

2.需求就是点击item歌曲时,实现一种飞入到预约按钮处的效果

3.思路:在布局文件中加入了一个条目布局,和listView的item一样,点击listView的item时,使用给条目布局执行动画。

code:

xml布局

  <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/recycleView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:gravity="center"
                android:text="this is a songfragment"
                android:textSize="21sp" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:id="@+id/anim_layout"
                android:gravity="center_vertical"
                android:orientation="horizontal">

                <RelativeLayout
                    android:layout_width="50dp"
                    android:layout_height="50dp">

                    <com.multak.cookaraclient.RippleImageView
                        android:id="@+id/anim_typeImage"
                        android:layout_width="40dp"
                        android:layout_height="40dp"
                        android:scaleType="centerCrop"
                        android:layout_centerInParent="true" />

                    <ImageView
                        android:id="@+id/anim_imageLike"
                        android:layout_alignParentRight="true"
                        android:layout_height="15dp"
                        android:visibility="gone"
                        android:layout_width="15dp"/>
                </RelativeLayout>

                <ImageView
                    android:id="@+id/image_SongTitle"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:clickable="true"
                    android:src="@mipmap/mp3"
                    android:visibility="gone" />

                <LinearLayout
                    android:id="@+id/layout"
                    android:layout_width="0dp"
                    android:layout_height="50dp"
                    android:layout_marginLeft="@dimen/imagemagintext"
                    android:layout_weight="1"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/anim_textView_SongName"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:paddingTop="5dp"
                        android:textColor="@color/colorSongName"
                        android:textSize="@dimen/songnamesize" />

                    <TextView
                        android:id="@+id/anim_textView_SongSinger"
                        android:layout_width="match_parent"
                        android:layout_height="20dp"
                        android:textColor="@color/colorSongName"
                        android:textSize="@dimen/songsingersize" />
                </LinearLayout>

                <RelativeLayout
                    android:layout_width="50dp"
                    android:layout_height="50dp">

                    <com.multak.cookaraclient.RippleImageView
                        android:id="@+id/image_SongPro"
                        android:layout_width="30dp"
                        android:layout_height="30dp"
                        android:visibility="gone"
                        android:layout_centerInParent="true"
                        android:src="@mipmap/favono" />
                </RelativeLayout>
            </LinearLayout>

        </RelativeLayout>

code: 给条目布局赋值数据

               /*** 加个预约动画 */
                    String anim_SongName=ClickSongIndex.getSongName();
                    String anim_SingerName=ClickSongIndex.getSingerName();
                    anim_textView_SongName.setText(anim_SongName);
                    anim_textView_SongSinger.setText(anim_SingerName);
                    int anim_Type=ClickSongIndex.getFileType();
                    if(anim_Type==3){
                        anim_typeImage.setImageResource(R.mipmap.mtv1);
                    }else if(anim_Type==4){
                        anim_typeImage.setImageResource(R.mipmap.circle1);
                    }else if(anim_Type==5){
                        anim_typeImage.setImageResource(R.mipmap.movie1);
                    }else{
                        anim_typeImage.setImageResource(R.mipmap.midi1);
                    }
                    if(listFavo.contains(ClickSongIndex.getSongIndex())){
                        anim_imageLike.setVisibility(View.VISIBLE);
                    }else{
                        anim_imageLike.setVisibility(View.GONE);
                    }
                    if(MainActivity.DayOrNight==1){
                        anim_typeImage.ChangeColor(context.getResources().getColor(R.color.lightStyle_TextColor));
                    }else{
                        anim_typeImage.ChangeColor(context.getResources().getColor(R.color.darkStyle_TextColor));
                    }
                    itemClickOrderAnim(anim_layout,FromX,FromY,Max_X,Max_Y);
                    /*** 预约动画结束*/

code:执行动画

  private  void itemClickOrderAnim(LinearLayout layout,int fromX,int fromY,int toX,int toY){

        ObjectAnimator animator1 = ObjectAnimator.ofFloat(layout, View.ALPHA, 1, 0);
        ObjectAnimator animator2 = ObjectAnimator.ofFloat(layout, "translationY", fromY-240, toY);
        ObjectAnimator animator3 = ObjectAnimator.ofFloat(layout, "translationX", fromX, toX);
        ObjectAnimator animator4 = ObjectAnimator.ofFloat(layout,"scaleY",1f,0f);
        ObjectAnimator animator5 = ObjectAnimator.ofFloat(layout,"scaleX",1f,0f);
        AnimatorSet set = new AnimatorSet();
        set.playTogether( animator2, animator3,animator4,animator5);
        set.setDuration(1200);
        set.start();
    }

示例:

https://pan.baidu.com/s/1bN2cJ8

  

时间: 2024-10-20 21:21:44

ListView的Item动画的相关文章

给Android ListView添加删除item动画

给Android ListView添加删除item动画 给listview删除一个item的时候加上一个折叠动画,感觉效果会好一点. 步骤是当删除一个view,先用动画把view的高度改变,看上去就是折叠的效果.当动画完成的时候,再真正把item移除. private void deletePattern(final View view, final int position) { Animation.AnimationListener al = new Animation.AnimationL

android listview中item通过viewpager实现

android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项目主要介绍多个viewpager加载图片和listview 上下滑动不卡顿问题.本项目由作者Flyco分享的分享地址:https://github.com/H07000223/FlycoBanner_Master.本项目找对应id封装一个ViewFindUtils类,通过如下代码找id    /**

6.设置ListView的Item的高度无效

问题: 设置ListView的Item的高度无效. 解决方式: 设置ListView的Item的minHeight属性.

Android自定义ListView的Item无法响应OnItemClick的解决办法

转: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了 我们可以通过对Item Layout的根控件设置其Android:descendantFocusability=”bl

改变listview中item选中时文字的颜色

当listview的某个item选中时,默认有个选中的高亮显示,如果你要自定义选中时的高亮显示效果,可以在listview中设置属性 1 android:listSelector="@drawable/item_selector" 其中item_selector是在drawable目录下定义的一个xml文件,这种用于突出不同状态下显示效果的xml文件我们称之为selector: 1 2 3 4 5 6 7 <?xml version="1.0" encodin

Android学习笔记之ListView与Item的焦点冲突处理

由于ListView的Item需要焦点,Item里面的子控件(如ImageButton,Button,CheckBox等等)也需要焦点的时候,就会出现焦点冲突问题,导致Item无法获得焦点,无法相应Item的事件无法触发.这是就需要为其分配焦点,通常我们是屏蔽Item里面的子控件(暂时学的都是这样的,以后还不知道),有三种解决方案: (1)XML中对Item的子控件设置属性:                          android:focusable="false" (2)在

安卓Android控件ListView获取item中EditText值

可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写BaseAdapter.getView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView中动态更新EditText和动态获取EditText中的值.因为ListView中的item是复用的,如果不动态清空或动态获取EditText中值,就会出现数据紊乱,或者没数

解决 listview的item超过屏幕显示出现滚动的全选问题

1.listview的getcount与getchildcount,getcount>=getchildcount.getcount为所有的listdata的size值,getchildcount获得的是显示的值: 当itemsize<=显示屏的显示数量,getcount()=getchildcount(), 当itemsize >显示屏的显示数量,getcount> getchildcount; 2.问题原因: ListView+CheckBox数据超过一屏时数据乱序的原因主要是

Android SwipeToDismiss:左滑/右滑删除ListView条目Item

?? <Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github上的项目链接地址:https://github.com/romannurik/Android-SwipeToDismiss ).该开源项目旨在:使得一个ListView的item在用户的手指在屏幕上左滑或者右滑时候,删除当前的这个ListView Item. 此种特效在新版的Android中应用不少.比方在