AnimationUtils.loadAnimation animation-list

AnimationUtils.loadAnimation方法,不能用来加载  animation-list类型的xml的

记录备查

if (position == currentPlayingPosition){ try { if (mediaPlayer != null) { mediaPlayer.release(); } mediaPlayer = new MediaPlayer(); AssetFileDescriptor afd = context.getAssets().openFd(songBean.getSongFilePath()); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); mediaPlayer.prepare(); // 设置播放完成监听器 mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { isPlaying = false; lyricUpdateHandler.removeCallbacks(lyricUpdateRunnable); // 可选:将歌词重置到开始位置 if (holder.lyricView != null) { holder.lyricView.seekLrcToTime(0); } } }); mediaPlayer.start(); isPlaying = true; // 启动歌词更新任务 startLyricUpdate(holder); // 执行黑胶唱片机臂从 -10 度旋转到 0 度的动画 Animation armAnimation = AnimationUtils.loadAnimation(context, R.anim.arm_up); holder.ivArm.startAnimation(armAnimation); } catch (IOException e) { e.printStackTrace(); } } // 初始化唱片旋转动画 recordAnimator = ObjectAnimator.ofFloat(holder.ivSong, "rotation", 0f, 360f); recordAnimator.setDuration(5000); recordAnimator.setInterpolator(new LinearInterpolator()); recordAnimator.setRepeatCount(ObjectAnimator.INFINITE); if (isPlaying) { recordAnimator.start(); } else { recordAnimator.pause(); } if (armUpAnimation == null) { armUpAnimation = AnimationUtils.loadAnimation(context, R.anim.arm_up); armDownAnimation = AnimationUtils.loadAnimation(context, R.anim.arm_down); // 设置动画保持最终状态 armUpAnimation.setFillAfter(true); armDownAnimation.setFillAfter(true); } // 设置点击事件 holder.ivRecord.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mediaPlayer != null) { if (isPlaying) { mediaPlayer.pause(); recordAnimator.pause(); // 重置唱片机臂的旋转角度 holder.ivArm.startAnimation(armDownAnimation); } else { if (recordAnimator.isPaused()) { mediaPlayer.start(); recordAnimator.resume(); holder.ivArm.startAnimation(armUpAnimation); } } isPlaying = !isPlaying; } } }); 音乐停止时动画未停止
最新发布
11-15
package com.weixxkjsd.singkingcgzw.fragment.Adapter; import android.animation.ObjectAnimator; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.media.MediaPlayer; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.LinearInterpolator; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.hfd.common.util.DensityUtil; import com.hw.lrcviewlib.LrcDataBuilder; import com.hw.lrcviewlib.LrcRow; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout; import com.weixxkjsd.singkingcgzw.R; import com.weixxkjsd.singkingcgzw.bean.SongBean; import com.weixxkjsd.singkingcgzw.utils.ImageUtils; import com.weixxkjsd.singkingcgzw.utils.OnMultiClickListener; import com.weixxkjsd.singkingcgzw.view.NonScrollableLrcView; import java.io.IOException; import java.util.List; public class MusicPagerAdapter extends RecyclerView.Adapter<MusicPagerAdapter.MusicViewHolder> { private Context context; private List<SongBean> musicList; List<LrcRow> lrcRows; private MediaPlayer mediaPlayer; private int currentPlayingPosition = 0; private ObjectAnimator recordAnimator; private boolean isPlaying = false; public MusicPagerAdapter(Context context, List<SongBean> musicList) { this.context = context; this.musicList = musicList; } @NonNull @Override public MusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_music, parent, false); return new MusicViewHolder(view); } @Override public void onBindViewHolder(@NonNull MusicViewHolder holder, int position) { SongBean songBean = musicList.get(position); if (songBean.getIcon() == 1) { Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song1); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 2){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song2); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 3){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song3); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 4){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song4); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 5){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song5); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 6){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song6); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 7){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song7); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 8){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song8); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 9){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song9); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else if(songBean.getIcon() == 10){ Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song10); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); }else { Bitmap squareBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.song11); Bitmap circularBitmap = ImageUtils.getCircularBitmap(squareBitmap); holder.ivSong.setImageBitmap(circularBitmap); } lrcRows = new LrcDataBuilder().BuiltFromAssets(context, songBean.getLrcPath()); holder.lyricView.getLrcSetting() .setTimeTextSize(40)//时间字体大小 .setSelectLineColor(Color.parseColor("#ff0000"))//选中线颜色 .setSelectLineTextSize(25)//选中线大小 .setNormalRowColor(Color.parseColor("#919191")) .setHeightRowColor(Color.parseColor("#ff0000"))//高亮字体颜色 .setNormalRowTextSize(DensityUtil.sp2px(context, 17))//正常行字体大小 .setHeightLightRowTextSize(DensityUtil.sp2px(context, 17))//高亮行字体大小 .setTrySelectRowTextSize(DensityUtil.sp2px(context, 17))//尝试选中行字体大小 .setTimeTextColor(Color.parseColor("#ff0000"))//时间字体颜色 .setTrySelectRowColor(Color.parseColor("#ff0000"));//尝试选中字体颜色 holder.lyricView.commitLrcSettings(); holder.lyricView.setLrcData(lrcRows); if (position == currentPlayingPosition){ try { if (mediaPlayer != null) { mediaPlayer.release(); } mediaPlayer = new MediaPlayer(); AssetFileDescriptor afd = context.getAssets().openFd(songBean.getSongFilePath()); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); mediaPlayer.prepare(); mediaPlayer.start(); isPlaying = true; // 执行黑胶唱片机臂从 -10 度旋转到 0 度的动画 Animation armAnimation = AnimationUtils.loadAnimation(context, R.anim.arm_up); holder.ivArm.startAnimation(armAnimation); } catch (IOException e) { e.printStackTrace(); } } // 初始化唱片旋转动画 recordAnimator = ObjectAnimator.ofFloat(holder.ivSong, "rotation", 0f, 360f); recordAnimator.setDuration(5000); recordAnimator.setInterpolator(new LinearInterpolator()); recordAnimator.setRepeatCount(ObjectAnimator.INFINITE); if (isPlaying) { recordAnimator.start(); } else { recordAnimator.pause(); } // 设置点击事件 holder.ivRecord.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mediaPlayer != null) { if (isPlaying) { mediaPlayer.pause(); recordAnimator.pause(); Animation armAnimation = AnimationUtils.loadAnimation(context, R.anim.arm_down); holder.ivArm.startAnimation(armAnimation); } else { mediaPlayer.start(); recordAnimator.resume(); Animation armAnimation = AnimationUtils.loadAnimation(context, R.anim.arm_up); holder.ivArm.startAnimation(armAnimation); } isPlaying = !isPlaying; } } }); } @Override public int getItemCount() { return musicList.size(); } public void pauseMusic() { if (mediaPlayer != null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); isPlaying = false; if (recordAnimator != null) { recordAnimator.pause(); } } } public void resumeMusic(int position) { currentPlayingPosition = position; notifyDataSetChanged(); } public static class MusicViewHolder extends RecyclerView.ViewHolder { NonScrollableLrcView lyricView; QMUIRoundLinearLayout qmuiRoundLinearLayout; ImageView ivRecord,ivArm,ivSong; public MusicViewHolder(@NonNull View itemView) { super(itemView); lyricView = itemView.findViewById(R.id.lyricView); qmuiRoundLinearLayout = itemView.findViewById(R.id.qmButton_start); ivRecord = itemView.findViewById(R.id.iv_record); ivArm = itemView.findViewById(R.id.iv_arm); ivSong = itemView.findViewById(R.id.iv_song); } } } 如上代码设置arm_down,手臂没有回到arm_up原位置
11-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值