Android 详解基本布局以及ListView和RecyclerView

Android列表布局专题(一)RecyclerView 前言:RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。 本文目的:通过简单的例子,讲解RecyclerView的使用、自定义RecyclerView子项的点击事件以及长按事件 本文Demo下载地址:https://github.com/ShaoWangYun/SlideViewDemo 最终效果图: 一、布局文件: 1.activity_recycler_view.xml <?xml .. 阅读详情

前言

一个丰富的界面有很多个控件组成,那么就需要布局来实现控件有条不紊的摆放。

一 LinearLayout 线性布局

LinearLayout 又称作线性布局,是一种常用的布局。有横向和竖向两个方向。

通过下面的属性进行设置

android:orientation="vertical"
android:orientation="horizontal"
 1 

1 layout_gravity

控制该组件在父组件的对齐方式

2 gravity

控制组件所包含的子元素的对齐方式

3 layout_weight 

使用比例的方式来指定控件的大小。这个权重是分配的屏幕剩余空间

下面的三个方块,如若只有一个设置这个属性为的话,那么他会占满屏幕

如果两个都设置的话 那么两个均分剩下的空间

如若三个都设置为1的话,那么三个均分全部的空间

 

 

    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="0dp"
        android:background="@color/purple_200"
        android:layout_weight="1"
        />
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="0dp"
        android:background="#ee00dd"
        android:layout_weight="1"
        />
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="0dp"
        android:background="#00a000"
        android:layout_weight="1"
        />

 

 

 二 RelativeLayout 相对布局

主要通过定位的方式让控件出现在布局的任何位置。

1 相对于父容器而言

1> layout_alignParentLeft

左对齐

2> layout_alignParentRight

右对齐

3> layout_centerInParent

在父容器中间

2 相对于兄弟容器而言

1>layout_toLeftOf

放置于参考组件的左边

2> layout_above

放置于参考组件的上方,就是我的Bottom对着你的Top

3> layout_alignLeft

对齐参考组件的左边

 

 

  <RelativeLayout
      android:id="@+id/btn"
      android:layout_width="100dp"
      android:layout_height="100dp"
      android:background="@color/purple_200"
      android:layout_centerInParent="true"
      />

    <RelativeLayout
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#00ff00"
        android:layout_above="@+id/btn"
        android:paddingBottom="100dp"
        android:layout_alignLeft="@+id/btn"
        />

三 FrameLayout 帧布局

相比前两种比较少用,所有空间都会默认放置在布局的左上角。

有两个属性可以用 
foreground  设置前景
foregroundGravity 前景的位置

 

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp"
        android:background="#00ff00"
        />
    <FrameLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:foreground="@drawable/demo1"
        android:foregroundGravity="bottom|right"
        android:background="#ffff00"
        />
    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#ff0000"
        />

四 TableLayout 表格布局

就像是一个表格,每个TableLayout 由多个TableRow 构成

1 常见属性

1> collapseColumns 需要隐藏的列号 从0 开始

2> stretchColumns 需要拉伸的列号

3> shrinkColumns 允许被收缩的列号

2 子控件常见的属性

1> android:layout_span 横向夸两列显示 
2> layout_column 显示在第几列

 

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:collapseColumns="0"
    android:stretchColumns="1"

    >

    <TableRow>
        <Button android:text="你好"
            android:layout_span="2"
            android:layout_column="1"
            />
        <Button android:text="你好"/>
    </TableRow>

    <TableRow>
        <Button android:text="你好"/>
        <Button android:text="你好"/>
        <Button android:text="你好"/>
        <Button android:text="你好"/>

    </TableRow>

    <Button android:text="1 行"/>
    <Button android:text="2 行"/>




    </TableLayout>

五 网格布局 GridLayout

1 常见属性

1> orientation方向设置

2> columnCount 每一列的数量

3> rowCount 行的数量

2 子控件常见属性

1 > layout_column 显示在第几列

2> layout_columnSpan 横向跨几列

3> layout_columnWeight 横向剩余空间分配方式

 

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:columnCount="3"
    >

    <Button android:text="第一个"
        android:layout_column="2"
        />
    <Button android:text="第二个"
        android:layout_columnSpan="1"
        android:layout_columnWeight="0"
        />
    <Button android:text="第三个" />
    <Button android:text="第四个" />
    <Button android:text="第五个" />



</GridLayout>

六 ConstraintLayout 约束布局

可视化的方式来编写界面

七  ListView

非常常用的组件,以列表的形式显示具体内容

提升运行的效率,对加载好的布局进行缓存。

基本使用

xml

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

Bean

package com.example.leonardoday1;

public class Bean {

    String name;

    public Bean(String name) {
        this.name = name;
    }


    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

adapter

package com.example.leonardoday1;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

public class MyAdapter extends BaseAdapter {

    private Context context;
    private List<Bean> datas;

    public MyAdapter(Context context, List<Bean> datas) {
        this.context = context;
        this.datas = datas;
    }

    @Override
    public int getCount() {
        return datas.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        // Tag从本质上来讲是就是相关联的view的额外的信息。它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。
        // 用View中的setTag(Onbect)给View添加1个格外的数据,再用getTag()获得到对应的View。
        if (view == null){
            view =  LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);
            viewHolder = new ViewHolder();
            viewHolder.textView =  view.findViewById(R.id.tv);
            view.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder) view.getTag();
        }
//        TextView tv = view.findViewById(R.id.tv);
        String name = datas.get(i).name;
//        tv.setText(name);
        viewHolder.textView.setText(name);
        return view;
    }


    private  final  class ViewHolder{
        TextView textView;
    }


}

调用

  for (int i = 0; i < 100; i++) {
            Bean bean = new Bean("ok i find you" + i);
            datas.add(bean);
        }

        ListView lv = findViewById(R.id.lv);
        // 配置数据
        lv.setAdapter(new MyAdapter(this,datas));
        // 点击监听
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Log.e(TAG, "onItemClick: ");
            }
        });

八  RecyclerView

更为强大的滚动组件

因为ListView 只能实现纵向滚动。要是实现横向滚动的时候就不行了 。

首先想要使用这个控件,必须在build.gradle 中添加相应的依赖库才行

implementation 'androidx.recyclerview:recyclerview:1.3.0'

xml

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

adapter

package com.example.leonardoday1;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import org.w3c.dom.Text;

import java.util.List;

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


    private List<Bean> datas;
    private Context context;

    public MyRecyclerAdapter(List<Bean> datas, Context context) {
        this.datas = datas;
        this.context = context;
    }

    @NonNull
    @Override
    public MyRecyclerAdapter.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 MyRecyclerAdapter.MyViewHolder holder, int position) {
        // 绑定数据方法设置值
        holder.tv.setText(datas.get(position).name);

    }

    @Override
    public int getItemCount() {
        // 这个方式显示多少item
        return datas == null ?  0 :  datas.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView tv;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            tv = itemView.findViewById(R.id.tv);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
//             Google废弃了getAdapterPosition()方法,但是却又提供了getBindingAdapterPosition()和
//             getAbsoluteAdapterPosition()这两个方法。从方法名可以看出来,一个是用于获取元素位于当前绑定Adapter的位置
//             一个是用于获取元素位于Adapter中的绝对位置(一般常用的就是这个)。
                    // 调用自己的监听方法
                    mItemClickListener.onReceiveItemClick(getBindingAdapterPosition());
                }
            });

        }
    }
    private  OnRecyclerItemClickListener mItemClickListener;
    public void setRecyclerItemClickListener(OnRecyclerItemClickListener listener){
        mItemClickListener = listener;
    }
    // 创建一个接口 回调点击事件
    public interface OnRecyclerItemClickListener{
        void onReceiveItemClick(int position);
    }
}

调用

package com.example.leonardoday1;

import android.os.Bundle;
import android.util.Log;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "Leonardo";
    private List<Bean> datas = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        for (int i = 0; i < 100; i++) {
            Bean bean;
            if (i % 4 != 0){
                bean = new Bean("ok i need u and you" + i);
            }else{
                bean = new Bean("ok ok BalaBalaBalauBalaBalaBalauok BBalaBalaBalauBalaBalaBalaualaBalaBalauBalaBalaBalau" + i);
            }
            datas.add(bean);
        }

        RecyclerView rv = findViewById(R.id.rv);
        MyRecyclerAdapter adapter =  new MyRecyclerAdapter(datas,this);
        // 设置adapter
        rv.setAdapter(adapter);
        // 设置布局
        // 这里设置为线性的布局
//        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
//        rv.setLayoutManager(layoutManager);

        // 网格布局
//         Context context,
//    int spanCount, 一行显示3个
//    int orientation,
//    boolean reverseLayout
//        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
//        rv.setLayoutManager(gridLayoutManager);

//         int spanCount, 一行几个
//    int orientation
        // 瀑布流布局
        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, LinearLayout.VERTICAL);
        rv.setLayoutManager(staggeredGridLayoutManager);

        // 设置监听 自己实现的监听方法
        adapter.setRecyclerItemClickListener(new MyRecyclerAdapter.OnRecyclerItemClickListener() {
            @Override
            public void onReceiveItemClick(int position) {
                Log.e(TAG, "onReceiveItemClick: " + position);
            }
        });


    }

}

 

Android的ListView和RecyclerView的基本用法 在Android 5.0 版本之前,为了方便的显示多行数据,形如QQ聊天信息主界面,最常用的选择无非是ListView控件,但是ListView控件本身就有很大的局限性和效率问题(相对于RecyclerView控件)来说,比如说ListView只能竖向滚动显示数据,不能横向滚动显示数据,在一些特殊的需求中,ListView就无能为力了。在Android5.0版本之后,Android官方推出了一个新的 阅读详情

相关推荐

Android Filter ListView, RecyclerView

今天整理的是之前项目中写的一个首页针对于列表进行条件过滤的效果。相关描述: 此次省略xxx字… 。 还是来看一下效果图吧(稍微有那么一点点大,1.5M左右,注意看好操作之后的变化):废话就不多说了,接下来直奔主题,先看一下我们的界面布局:<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schema

发强 3207

Android 基础知识4-2.8 TableLayout(表格布局)详解

表格布局是以行数和列数来确定位置进行排列。就像一间教室,确定好行数与列数就能让同学有序入座。注意:我们需要先添加

yyxhzdm的博客 4366

RecyclerView和ListView的区别

ListView和RecyclerView最大的区别在于数据源改变时的缓存的处理逻辑,ListView是"一锅端",将所有的mActiveViews都移入了二级缓存mScrapViews,而RecyclerView则是更加灵活地对每个View修改标志位,区分是否重新bindView。2). ListView缓存View。dispathLayoutStep3():计算布局前后各个ItemView的状态,如Remove,Add,Move,Update等,如有必要执行相应的动画.

weixin_40387773的博客 960

Android Studio系列之ListView

Android Studio系列之ListView

千天夜的博客 2506

RecyclerView和ListView使用对比分析

又到了更新博文的时间了,最近在看一本很不错的心理学书籍,名字叫做 《拖延心理学》,封面长下面这样子书的内容主要是分析拖延症患者是如何把一件事一拖再拖,最后引发最终心里的焦虑和不安,甚至找了各种借口来做一些然并卵的自我安慰,最后再告诉你如何去改善自己的拖延症。目前我看了这书大约六分之一,就被各种心理分析打脸无数次,奈何此书写得太好,所以分享给有需要的童鞋(拖延症患者做好被无情打脸的心理准备)。刚好本...

D_clock爱吃葱花 1481

(六)Android布局类型(表格布局TableLayout)

Android布局类型(表格布局TableLayout)

以秘 1857

【Android】ListView和RecyclerView知识总结

SimpleAdapter是Android中用于将数据模型转换成ListView或其他视图组件的适配器。它简化了数据绑定过程,通过映射数据集中的字段到布局文件中的视图。是 Android 中的一种视图组件,用于显示可滚动的垂直列表。它通常用于显示一组相似的数据,比如联系人列表、消息列表等。是 Android 提供的一个更高级和灵活的列表视图控件,相对于。它引入了一些新的概念,如。模式,更高效的滚动和动画支持,以及更灵活的布局管理器(和数据源之间的桥梁,将数据源转换为可以显示在。中的字符串显示在列表视图中。

Patrick_yuxuan的博客 2621

Android RecyclerView的网格布局展示

在上述代码中,我们定义了一个GridAdapter类,它接收一个字符串列表作为数据源。然后,在onBindViewHolder方法中,我们根据position获取对应位置的数据,并将其绑定到ViewHolder中的TextView上。在上述代码中,我们首先找到RecyclerView控件,并为其设置一个GridLayoutManager作为布局管理器,用来控制网格布局的显示方式。完成以上步骤后,运行应用程序,你将看到一个以网格布局展示的RecyclerView,每个网格项都包含一个文本视图显示相应的数据。

DevGlider的博客 1343

【Android面试】Listview和Recyclerview的区别

请你谈谈Listview和Recyclerview的区别Listview和Recyclerview的区别(阿里一面,滴滴一面,被问到)简单比较布局上局部刷新item view的重用ViewHolder嵌套滑动机制空数据处理Listview的二级缓存ActiveViewsScrapViewsRecyclerview的四级缓存RecyclerRecycledViewPoolViewCacheExtension Listview和Recyclerview的区别(阿里一面,滴滴一面,被问到) 简单比较 listvi

Rose J 的博客 5931

ROBOGUIDE教程:FANUC机器人X型焊枪气动点焊焊接

FANUC机器人X型焊枪气动点焊焊接虚拟仿真实现方法。

IndRobSim 4384

新手工程师必看:搞定EMI传导干扰,从理解差模和共模开始(附实战案例)

本文深入解析EMI传导干扰中的差模与共模问题,为新手工程师提供从诊断到治理的完整方法论。通过实战案例展示如何通过频谱分析、近场探头扫描等技术精准定位干扰源,并分享PCB布局、滤波器设计等系统级解决方案,帮助工程师高效解决传导干扰问题,提升EMC设计能力。

weixin_26757925的博客 469

Android ListView 和 RecyclerView

ListView 和 RecyclerView 都是用于 Android 开发中列表展示时所用的常见控件。 ListView 和 RecyclerView 使用的大致相同点 1.使用前都需要准备适配器 Adapter :其实这两个控件的使用在初学者眼里之所以看起来复杂,最大的原因就是需要根据自己的业务来写一个Adapter类 2.使用前都需要准备 item 的 layout :除了准备一个适配器 Adapter 之外,还需要为列表中的每一项准备一个共用的 layout 。 3.使用时都是先初始化一个

yang451212的博客 3380

SAP FAGLFLEXT 是 SAP 新总账的核心余额表,存储多维度的汇总余额数据。核心结论:该表按 “科目 + 会计年度 + 期间 + 维度” 存储累计余额,字段可分为基础标识

FAGLFLEXT是SAP新总账的核心余额表,采用"科目+年度+期间+维度"结构存储多维汇总数据。其字段分为基础标识(科目、年度等)、维度细分(公司代码、利润中心等15个维度)、金额数值(本外币余额)、辅助控制(状态标识)四大类,支持新总账的灵活核算。该表通过凭证自动更新,与旧总账GLT0相比显著扩展了维度核算能力,各维度需在科目主数据或Ledger配置中启用才能使用。

金牌架构师 454

ListView和RecyclerView的使用和区别

达到

qq_39899087的博客 1万+

Untiy之如何实现AI+MR (Pico4u 相机推流MR画面给Server做实时AI图像识别)

本文介绍了基于Pico4U企业版开发AI+MR应用的实现方案。文章详细说明了硬件准备步骤,包括购买企业版设备、申请相机权限和注册管理平台。重点讲解了Unity开发中获取摄像头画面的两种技术方案:通过Overlay直接渲染到Android Surface,或使用API获取图像数据转换为Texture。提供了完整的代码示例和权限配置说明,并揭示了底层通过JNI调用Android原生API的技术原理。该方案适用于带电操作等实习场景,可提升安全性和学习趣味性。

TxNet 1335

Qt EGLFS 图形后端详解

EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。

浩瀚之水的专栏 511

【Android】ListView与RecyclerView的基础使用

简单介绍了 ListView 和 RecyclerView 的基本用法

LiuYaoheng的博客 935

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然后在下拉的System中选择导弹的类型,这里我们选择远程。(4)输出数据文件到STK,任务窗口里选择Export Manager项,飞行数据输出到STK。项目可以命名为Test;(1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图。首先看世界地图中间的红圈,是一个导弹形状的图标,这个图标表示的是导弹的发射点。选择下面的Export Manager,依次勾选红框的选项。我们拖动这个导弹的图标,

weixin_44184852的博客 1630

【Android】ListView与RecyclerView基础运用

接着我们需要创建一个自定义的适配器,这个适配器继承自ArrayAdapter,并将泛型是定位Fruit类@NonNull@Override定义了一个名为的公共类,它继承自类,并且指定了泛型参数Fruit,这意味着这个适配器是专门为处理Fruit类型对象的列表而设计的。声明了一个私有的整型变量resourceId,用于存储列表项的布局资源ID。定义了的构造函数,它接受三个参数::上下文对象,用于访问系统服务和资源。:列表项的布局资源ID。:一个包含Fruit。

2301_79344902的博客 1022

Python 爬虫实战:爬取知乎问答与评论数据并分析

摘要:本文以Python为核心工具,系统讲解知乎问答与评论数据爬取的技术方案。通过分析知乎API接口结构,详细阐述Requests库结合正则表达式的数据获取方法,涵盖请求头构造、鉴权参数处理等关键技术。文章对比了HTML解析、API调用和Selenium模拟三种爬取方案的优劣,提供完整的代码实现,包括问题信息获取、回答列表爬取和评论数据提取。同时介绍了数据存储(JSON/Excel)和基础文本分析(词云生成)方法,并给出合规使用建议和技术优化方向,为开发者提供了一套可落地的知乎数据爬取与分析解决方案。

2503_91057718的博客 1818

计算图像哈希SHA-512

上述需要将lena.jpg放在当前目录下。

计算机视觉之光 960

[Android] ListView 和 RecyclerView 的简单使用

ListView 和 RecyclerView 的简单使用 文章目录ListView 和 RecyclerView 的简单使用- ***ListView 和 RecyclerView 使用的大致相同点***- ***ListView的基本使用***- ***ListView的基本优化***- ***RecyclerView 的基本使用***- ***ListView 和 RecyclerView 的对比***- ***总结*** 在安卓App中,列表展示的功能十分常见。ListView 和 Recycler

qq_39121188的博客 1806

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android ListView 和 RecyclerView 详解

1、ListView 由于手机屏幕空间有限,能够一次性在屏幕上显示的内容并不多,当程序中有大量的数据需要展示的时候,就可以借助 ListView 来实现。ListView 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内。 (1)、ListView 的简单用法 首先新建一个项目,修改 activity_main.xml 中的代码,如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an

LLL_foever的博客 516

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

分别使用RecyclerView和ListView实现Android购物商城

activity_main.xml <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" android:listSelector="#B5DCFA"> </ListView> listview2.xml <?xml version="1.0"

weixin_43916678的博客 4295

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

RecyclerView和ListView的区别、RecyclerView优化

一 ListView和RecyclerView区别 ListView 1.Adapter继承的是BaseAdapter。 2.可以直接在布局中设置分割线。 3.点击事件自带setOnItemClickListener方法 4.自带增加头部尾部方法 addHeaderView和addFooterView...

无与伦比的猪 4144

Android Studio开发App:ListView和RecyclerView的使用

由于我们在实际使用过程中希望使用一些其他的展现方式,例如图文混排,因此我们需要自定义一个适配器FruitAdapter来继承ArrayAdapter。List泛型中既包括图片又包括文本,因此我们需要自定义一个Fruit类,并将所有我们希望展示的物品属性罗列其中。

weixin_54953109的博客 2262
上一篇: Android Textview Button 等基础组件学习
下一篇: Android 动画相关
Leonardo_Fibonacci
博客等级 码龄10年 110粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值