• 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
    

      

    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    async 异步协程进阶
    linux 磁盘100% 清理
    时间戳,日期,string互转
    ioutils
    logging basic
    【BZOJ5323】【JXOI2018】—游戏(组合数学+线性筛)
    【BZOJ5323】【JXOI2018】—游戏(组合数学+线性筛)
    【CodeChef】—Sum of Cubes(斯特林数+容斥+三元环计数)
    【CodeChef】—Sum of Cubes(斯特林数+容斥+三元环计数)
    【TopCoder SRM 686】—CyclesNumber(斯特林数)
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/7454742.html
Copyright © 2020-2023  润新知