【Android Trainning 翻译】创建自定义View之创建一个自定义View类

cadence allegro - E A assembly :n. 装配;集会,集合 n. 汇编,编译 R r :res 电阻 resister :电阻 阅读详情

原文地址http://developer.android.com/training/custom-views/create-view.html

说在前面的话:第一次翻译,自知翻译得不是很好,所以请读者(如果有读者的话)不要责怪,我相信以后会做得更好的。

为什么我要去翻译,我想原因有以下几点吧:

  1. 锻炼我的英语阅读的能力
  2. 通过认真地翻译,让我可以对翻译的内容有更深入的了解,可以很好的学习其中的知识。
  3. 将英文翻译为中文,可以帮助其他一些英语阅读有困难的人来学习文中的知识(当然了,我现在能力有限委屈,翻译的东西都是很简单的,但我希望以后能翻译一些很好的文中)

创建一个View类

一个设计良好的自定义View就像其它任何精心设计的类一样。它封装了一组特定的功能,并且有一个容易使用的界面,它还能有效地使用CPU和内存等等。尽管如此,除了是一个设计精心的类之外,一个自定义的view还应该
  • 符合Android标准
  • 提供可以在Android XML布局中使用的自定义属性
  • 发送可访问的事件(这个翻译得不是很好,纠结中抓狂。。。)
  • 能够兼容多个Android平台
Android框架提供了一组基类和XML 标签来帮助你创建一个可以满足所有这些要求的自定义view。这节课讨论的如何使用Android框架来创建一个自定义view的核心功能。

继承一个View

Android框架中定义的所有视图类都是继承View类的。你的自定义view也可以直接的继承View类,或者你可以通过继承一个已经存在的View的子类比如Button类来节省时间。为了允许Android Developer Tools 与你的view相互配合,你至少提供一个含有一个Context对象和一个AttributeSet对象为参数的构造方法。这个构造方法允许布局编辑器来创建和编辑一个你的视图的实例。

class PieChart extends View {
    public PieChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

定义自定义属性

为了添加一个内置的View到你的用户界面,你要指定一个XML元素和控制其外貌和行为的元素属性。精心编写的自定义视图也可以通过xml来添加和设置样式。为了让你的自定义视图能够有这个效果,你必须做到:
  • 在一个<declare-styleable>资源元素中为你的视图自定义属性
  • 在xml布局中制定属性的值
  • 在运行的时候获取属性的值
  • 使用获取到的属性值

这一节将讨论如何定义属性和为它们指定属性值。下一节将说明在运行的时候处获取和应用这些属性值。

要定义自定义的属性,需要添加 <declare-styleable>资源到你的项目中。习惯性的将这些<declare-styleable>资源放到一个 res/values/attrs.xml中  。下面是一个attrs.xml的例子:
<resources>
   <declare-styleable name="PieChart">
       <attr name="showText" format="boolean" />
       <attr name="labelPosition" format="enum">
           <enum name="left" value="0"/>
           <enum name="right" value="1"/>
       </attr>
   </declare-styleable>
</resources>

以上代码声明了两个自定义属性,即 showText 和 labelPosition,这两个属性都属于一个名叫PieChart的styleable 实体。按照惯例,这个styleable实体的名字应和自定义view类的类名一样。尽管这不是严格要求你必须要遵循这个惯例,但是许多流行的代买编辑器都依靠这种命名约定来提供代码提示。

一旦你自定义的属性,你就可以像内置的属性一样在xml 文件中使用它们。唯一区别是你自定义的属性属于一个不同的命名空间。它们不是属于http://schemas.android.com/apk/res/android命名空间,而是属于http://schemas.android.com/apk/res/[your package name],举个例子,下面是如何使用这些属性来声明PieChart

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews">
 <com.example.customviews.charting.PieChart
     custom:showText="true"
     custom:labelPosition="left" />
</LinearLayout>

为了避免必须使用很长的命名空间URI,这个例子中使用了一个 xmlns 的指示符,这个指示符分配了一个别名 custom给命名空间 http://schemas.android.com/apk/res/com.example.customviews  ,你可以为你的命名空间取任意的别名。

注意将自定义view添加到layout布局中的xml 标签的名字,它是完全限定自定义view类的名字的。如果你的view类是一个内部类,你需要通过视图的外部类的名字来进一步限定。进一步,例如,这个 PieChart 类有一个内部类 PieView,为了使用自定义属性,你应该使用标签  com.example.customviews.charting.PieChart$PieView 。

应用自定义的属性


当一个视图由一个XML布局创建的时候,XML标签中的所有属性都从资源束中读取,并且作为一个 AttributeSet对象传递到视图类的构造方法中。虽然可以直接从AttributeSet对象中读取value值,但是那样做有一些缺点:
  • 属性值的资源引用还没有解决
  • 样式没有被应用
可以将 AttributeSet 传递给 obtainStyledAttributes() 来代替,这个方法返回一个已经被引用和添加样式的 TypedArray  数组值。

Android资源编译器为你做了许多事情来让你更容易的调用 obtainStyledAttributes() 。对于每一个<declare-styleable>资源,在R.java文件中产生了定义了一组属性id和一组定义了数组中每个元素索引的常量。你用预先定义好的常量来从TypedArray   对象中读取属性值。接下来是PieChart类读取它的属性值的例子:

public PieChart(Context context, AttributeSet attrs) {
   super(context, attrs);
   TypedArray a = context.getTheme().obtainStyledAttributes(
        attrs,
        R.styleable.PieChart,
        0, 0);

   try {
       mShowText = a.getBoolean(R.styleable.PieChart_showText, false);
       mTextPos = a.getInteger(R.styleable.PieChart_labelPosition, 0);
   } finally {
       a.recycle();
   }
}

注意这个 TypedArray    对象是一个共享的资源,用完之后要回收(recycle)

添加属性和事件

属性是一种很有力的控制view的行为和界面的方法,但是它们只能在view初始化时被读取。为了提供动态的行为,需要显示的提供每一个自定义属性的getter 和 setter方法。下面的代码片段展示了 PieChart如何暴露 showText的属性:

public boolean isShowText() {
   return mShowText;
}

public void setShowText(boolean showText) {
   mShowText = showText;
   invalidate();
   requestLayout();
}

注意在 setShowText中调用了 invalidate() 和 requestLayout() 方法,这些调用时至关重要的,用来确保view的行为可靠。在任何可能改变视图外观的属性发送改变之后,你必须invalidate 视图,以至于让系统知道它需要重新绘制,同样的,如果一个可能影响视图的大小或者形状的属性改变了,你就需要请求一个新的layout。忘记了这两个方法的调用,会引起一些难以查找的bug。

自定义view也应该支持事件监听来传达重要的事件。例如,PieChart提供了一个叫  OnCurrentItemChanged的自定义的事件来通知监听者用户已经旋转了饼图从而专注于新的饼图。

很容易忘记提供属性和事件,特别是当你只是使用自定义view时。请花一些时间来仔细的定义你的接口来减少以后维护的开销。一个好的可以遵循的规则是总是提供可以影响自定义视图的形状或者行为的特性。

为体验设计

你自定义的view应该可以支持大范围的用户,这些用户包括那些看不见或者无法触摸的残疾人。为了支持这些残疾用户,你应该:
  • 用android:contentDescription 属性标注你的输入框
  • 在适当的时候通过调用 sendAccessibilityEvent() 方法来发送可访问的事件
  • 支持备用控制器,比如 D-pad 和 trackball

更多关于创建可访问的视图的信息,你查阅Android Developer Guide中的   Making Applications Accessible 

VLOOKUP_fixed.py 立即下载

相关推荐

D打卡签到,蓝牙中继,广播信号模拟器

模拟WIFI或蓝牙,有如下4种运行模式 1、WIFI模式:指定SSID、BSSID名称等,模拟WIFI,供设备连接。 2、蓝牙静态模式:指定MAC地址,广播固定的RAW数据。 3、蓝牙动态主机模式:扫描周围蓝牙设备,获取指定MAC地址的蓝牙及其RAW数据,实时发送至Cloud云端,可以设定时间段,只在设定的时间段内发送。 4、蓝牙动态从机模式:指定MAC地址,从Cloud云端获取动态主机模式实时上传的该MAC地址的RAW数据,并广播RAW数据。 准备工作: 1、板子:选择ESP32C3或ESP32C3 Supermini 2、nRF Connect手机app:用于扫描获取待模拟蓝牙设备的MAC和RAW数据。 Wifi分析仪或WiFi魔盒手机APP:用于扫描获取待模拟WIFI设备的SSID和BSSID。 3、可使用官方flash_download_tool_3.9.11工具来固件烧录。 使用说明: 上述完成后,设备首次上电,RESET一侧的指示灯会常亮,可以把它理解成电源指示灯; BOOT一侧的灯会亮,该灯常亮,表示设备开启了AP模式,此时设备会发射一个WIFI信号源,名称为ESPWIFI_AP,密码为12345678,手机或电脑连接该WIFI,浏览器输入192.168.4.1,进入设备的配置页面,进行相应的配置,其中动态主机模式和动态从机模式的SSID、Pwd 及要模拟的蓝牙MAC地址。配置完成并保存后,会重启,重启后设备会按照保存的配置运行。若下次要修改设备配置,可以长按BOOT按键,等待BOOT一侧的灯常亮,即进入AP模式,再按照上述流程配置即可。 仅用于蓝牙设备的开发与调试,请勿用于签到等违法违纪用途。

orcad怎么创建convert view,同一个元器件多种原理图符号表示

先创建一个olb 文件放原理图库的图形文件 再在olb文件里面创建一个新的part,就是你要建的这个原理图symbol 在弹窗里面填上必要信息后勾上create covert view点击ok就可以开始创该symbol的常用图形文件了 这里我先画了一个最简单的三个pin 的元器件 然后点击view---->convert就可以开始绘制另外一个样子的图形文件了 这边可以画一个relay的形...

weixin_42913640的博客 3096

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

使用CREATE VIEW创建视图

13.1 使用CREATE VIEW创建视图(2) 代码13-2 创建视图列出那些居住在有出版社的城市的作者。注意视图使用了列名au_city和pub_city。重命名这些列避免了两列从基础表继承相同的列名city CREATE VIEW cities    (au_id, au_city, pub_id, pub_city)    AS   SELECT a.au_id, a.city,

martin2350的专栏 2660

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

基础-使用视图(CREATE VIEW....AS....)

什么是视图 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询; 输入:SELECTcust_name,cust_contact FROMcustomers,orders,orderitems WHEREcustomers.cust_id = orders.cust_id ANDor...

u010112268的博客 1159

【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)

内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。

ListView与Adapter使用要点

项目用到ListView,由于要用到 ImageView ,图片源不是在资源里面的,没法使用资源 ID,因此无法直接使用SimpleAdapter,要自己写一个Adapter。 在使用ListView和Adapter需要注意以下几点:   1. Adapter.getView()   public View getView(int position, View conv...

Haking的博客 438

从硅到氮化镓:用Sentaurus TCAD仿真GaN HEMT功率器件,我踩过的那些坑

本文分享了使用Sentaurus TCAD仿真GaN HEMT功率器件的实战经验,详细解析了从硅基到氮化镓的技术转型中遇到的五大关键挑战:材料参数设置、极化效应建模、网格划分策略、陷阱模型校准以及仿真与实测数据匹配。通过具体案例和参数优化方法,帮助工程师避开常见陷阱,提升TCAD仿真精度与效率。

weixin_28726671的博客 379

PADS VX2.4差分对设置避坑指南:常见错误与解决方案

本文深度解析了在PADS VX2.4中进行高速PCB设计时,差分对设置的核心要点与常见陷阱。针对Layout规则设置、Router布线实战中的阻抗控制、线长匹配等关键环节,提供了具体的避坑指南和解决方案,帮助工程师确保信号完整性,提升设计质量。

weixin_29216049的博客 359

android配适器Listview的ViewHolder和ConvertView的用法和原理

这两天一直在查listview 和ViewHolder和ConvertView,网上好多都是一篇文章转载n次,现今终于大致的明白一点,写下,待以后补充。 这个是网上转载次数最多的那篇文章的配的原理图。 现在来解释一下:一个手机屏幕上有第一列那1-7,只要你往上滑一下,1就没了,没了去哪了呢?就去了安卓给的recycle这个回收里了。这个回收是在ConvertView里的。也就是说Item1这个视...

鹅弍的博客 1380

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1536

【java】用eclipse怎么创建一个类的继承

eclipse 中类的继承创建有两种方式: 1、手动敲代码通过 extends 关键字来继承 public class A extends B { } 2、在创建类的时候就选择好继承关系 点击 Finish,就自动创建好了继承关系 package com.example.activitytest; import android.app.Activity; pub......

XiaoChen~Coder 1万+

高通8155车机系统里,安卓和QNX是怎么‘打电话’的?聊聊HAB通信框架那些事

本文深入解析了高通8155车机系统中HAB通信框架如何实现安卓与QNX的高效协同。作为异构系统的通信桥梁,HAB通过共享内存和中断信号机制,在多媒体数据传输中展现出零拷贝、硬件加速等优势,成为智能座舱实现实时性与生态丰富性平衡的关键技术。

weixin_42715608的博客 381

从Mate到Mate40 Pro+:华为旗舰核心配置演进与选购避坑指南

本文回顾了华为Mate系列从初代到Mate40 Pro+的核心配置演进历程,重点分析了处理器性能、影像系统、屏幕设计及续航快充的技术突破。针对选购需求,提供了区分版本、5G选择及存储配置的实用避坑建议,帮助消费者明智选择华为旗舰机型。

weixin_30015371的博客 494

android是如何创建一个view

View视图框架源码分析之一:android是如何创建一个view 分类: android 框架解析 2012-11-22 11:58 1989人阅读 评论(4) 收藏 举报 androidAndroid框架 View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类。只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他

freemind 617

华为OD 面试手撕代码真题【岛屿的周长】

0代表水,1代表陆地,岛由陆地组成且岛内不允许有湖,让你求岛的周长。

MISAYAONE的博客 8416

android 自定义view,在xml中引用内部类View

android如何在xml中引用内部类View,静态内部类view 比如在类com.example.ClassA中定义了一个类ViewB,那么怎么样在xml中引用ViewB呢?     首先要注意的是ViewB定义的时候,必须定义成静态的,就是public static ViewB   1.假设ViewB 继承自View,那么在xml中可以这样定

学习记录 3500

交通规划仿真软件:TransCAD_(7).公交系统规划与分析

通过TransCAD进行公交系统规划与分析,可以有效地评估公交网络的性能,优化线路设计,提高服务质量。数据准备、模型建立、仿真运行和结果分析是公交系统规划与分析的关键步骤。在实际应用中,规划者和分析师可以根据仿真结果提出具体的优化建议,不断完善公交系统的运行效率和乘客体验。

kkchenjj的博客 955

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

执行手眼校准有助于操作配备末端执行器(简称 “手”)的机械臂,该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准,机械臂就能准确地移动到摄像头识别的特定像素位置。这种能力是执行精确拾放任务(如分类、堆垛和分拣)的基础,即使在摄像机的确切位置和方向未知的情况下也是如此。机器人-摄像机系统有两种构型:眼在手内和眼在手外。在眼在手内构型中,摄像头直接安装在机器人手臂的末端执行器上。相反,在眼在手的构型中,摄像头固定在一个静止的物体上,机器人手臂在其视野内。

机器人控制与仿真应用 3347

Java内部类的定义、如何创建内部类、内部类的分类、内部类与外部类的关系

文章目录1 内部类的基本概念1.1 内部类的定义1.2 内部类的优缺点2 创建内部类2.1 在外部类外部创建非静态内部类2.2 在外部类外部创建静态内部类2.3 在外部类内部创建内部类语法3 内部类的分类3.1 成员内部类3.2 静态内部类3.3 方法内部类3.4 匿名内部类4 内部类与外部类的关系 1 内部类的基本概念 1.1 内部类的定义   内部类: 所谓内部类就是在一个类内部进行其他类结构...

zhao_miao的博客 11万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android开发:创建自定义视图–创建一个View类

Android开发:创建自定义视图–创建一个View类 作者 admin 在 21 四月 2014, 11:39 上午 翻自:http://developer.android.com/training/custom-views/create-view.html 设计良好的定制视图与其他精心设计的类相似。它用一种易于使用的接口封装了一些特殊的方法集合,它高效使用内存和CPU等等

廿四桥明月夜的博客 2755

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java内部类(1):java内部类的创建以及对外提供的访问方式,匿名内部类详解

前言我们在描述事物的时候,事物的内部还有事物,这个内部事物还要访问外部事物中的内容时。那么,这个内部事物就可以用内部类来描述。内部类也叫内置类,嵌套类。正文顾名思义,内部类就是一个类嵌套在另一个类中。内部类可以在外部类的成员位置,也可以在外部类的局部位置,也就是成员函数中。一般,我们在定义内部类时设置其访问权限为私有private,并在外部类中提供访问它的方法。下面来看例子:package com.

欢迎来到Jimmy的博客 2040

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android2.3 View视图框架源码分析之一:android是如何创建一个view的?

View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类。只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已。  这一篇文章把所有的layout和widget都统称为view,那么android是如何创建一个view的呢?  一。在代码中直接new出来。  比如说你要创建一个TextView的实

xu_song的专栏 1055

【Java】内部类(Inner Class)如何创建(new)

简单来说,内部类(inner class)指那些类定义代码被置于其它类定义中的类;而对于一般的、类定义代码不嵌套在其它类定义中的类,称为顶层(top-level)类。对于一个内部类,包含其定义代码的类称为它的外部(outer)类。 那么对于内部类,该如何去使用呢?下面给出静态成员类(Static Member Class)和普通成员类(Member Class)使用的方式。package cuc;

Mlib 1万+
上一篇: 终于打开ndk的第一扇门了:Hello World
下一篇: 说在翻译前面的话
HeyNine
博客等级 码龄14年 33粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值