IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 安卓学习列表效果与动画篇 Android studio -> 正文阅读

[游戏开发]安卓学习列表效果与动画篇 Android studio

ListView(列表效果)

第一步:构建初始化

在这里插入图片描述

第二步:创建listItem格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OLs29f5s-1650984462765)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220425235414969.png)]

第三步:创建准备得测试类

在这里插入图片描述

第四步:创建视图与数据得桥梁MyAdpater并继承BaseAdapter

public class MyAdpater  extends BaseAdapter {

    private List<Test> testList;
    private Context context;

    //获取总数
    @Override
    public int getCount() {
        return testList.size();
    }

    //获取实例
    @Override
    public Object getItem(int i) {
        return null;
    }

    //获取实例ID
    @Override
    public long getItemId(int i) {
        return i;
    }

    //返回得View
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        //优化方法使用ViewHolder
        ViewHolder viewHolder;
        if (view == null){
            viewHolder = new ViewHolder();
            view= LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);
            viewHolder.textView=view.findViewById(R.id.listItem);
            view.setTag(viewHolder);
        }else{
            viewHolder=(ViewHolder) view.getTag();
        }
        //基本方法设值
//        TextView textView= view.findViewById(R.id.listItem);
//        System.out.println("testList.get(i).getName():"+testList.get(i).getName());

        viewHolder.textView.setText(testList.get(i).getName());
        return view;
    }

    public MyAdpater(List<Test> testList, Context context) {
        this.testList = testList;
        this.context = context;
    }
    
    private final  class ViewHolder{
        TextView textView;
    }
}

效果图:

在这里插入图片描述

RecyclerView(灵活列表效果)

整体架构

在这里插入图片描述

item代码

在这里插入图片描述

MainActivity中代码

在这里插入图片描述

此处监听Item被点击与ListView有所差别,MyAdpater中代码

public class MyAdpater  extends RecyclerView.Adapter<MyAdpater.MyViewHolder> {

    private List<Test> testList;

    private Context context;


    //创建ViewHolder
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view=View.inflate(context,R.layout.recyclerview_item,null);
        return new MyViewHolder(view);
    }

    //绑定数据
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.tv.setText(testList.get(position).getName());
    }
    @Override
    public int getItemCount() {
        return testList == null? 0 : testList.size();
    }
    public class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView tv;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            tv=itemView.findViewById(R.id.listItem);

            //设置监听
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (mOnItemClickListener !=null ){
                        mOnItemClickListener.onRecyclerItemClick(getAdapterPosition());
                    }
                }
            });
        }
    }

    public MyAdpater(List<Test> testList, Context context) {
        this.testList = testList;
        this.context = context;
    }

    private OnRcyclerItemClickListener mOnItemClickListener;

    public void setRecyclerItemClickListener(OnRcyclerItemClickListener listener){
        mOnItemClickListener =listener;
    }


    public  interface OnRcyclerItemClickListener{
        void onRecyclerItemClick(int postion);
    }
}

动画类型

  1. 逐帧动画(frame-by-frame animation)
  2. 补间动画(tweened animation)
  3. 属性动画(property animation)

逐帧动画

animation-list

在这里插入图片描述

动画的启动和停止

//获取动画的Drawable资源

AnimationDrawable anim=(AnimationDrawable)relativeLayout.getBackground();

//启动动画

anim.start();

//停止动画

anim.stop;

在这里插入图片描述

补间动画

  1. alpha 透明度
  2. rotate 旋转
  3. scale 缩放
  4. translate 平移

透明
在这里插入图片描述

旋转

在这里插入图片描述

缩放
在这里插入图片描述

平移

在这里插入图片描述

activtiy

在这里插入图片描述

最终效果

在这里插入图片描述

属性动画

ValueAnimator

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T03V17on-1650984462770)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220426222707424.png)]

ObjectAnimator

在这里插入图片描述

在这里插入图片描述

监听器

onAnimationStart()动画开始的时候调用

onAnimationEnd()动画结束的时候调用

onAnimationCancel()动画被取消的时候调用

onAnimationRepeat()动画重复执行的时候调用

在这里插入图片描述
此处主要效果就是字体渐渐显示出来,由透明转显示

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:26:54  更:2022-04-29 12:29:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:10:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码