Android开发笔记

一.声明控件

1.按钮

<Button
        android:id="@+id/Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.766"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.215" />

2.文字

<TextView
        android:id="@+id/lab1"
        android:layout_width="132dp"
        android:layout_height="76dp"
        android:text="test"
        android:textSize="66sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.744" />

3.输入框

    <EditText
        android:id="@+id/Textbox"
        android:layout_width="115dp"
        android:layout_height="51dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.125"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.404" />

二.设置按钮

1.声明按钮

Button button = (Button) findViewById(R.id.SaveButton);

2.设置关联

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

三.读取数据

1.实例化输入框

EditText TextBox1 = (EditText) findViewById(R.id.Textbox1);

2.获取数据

String str = TextBox1.getText().toString();

四.界面

1.取消默认的头部显示

将res —>values —>themes.xml的 

parent="Theme.MaterialComponents.DayNight.DarkActionBar">

改为

parent="Theme.AppCompat.DayNight.NoActionBar">

五.数据

1.保存键值对

//获取一个 SharedPreferences对象
//第一个参数:指定文件的名字,只会续写不会覆盖
//第二个参数:MODE_PRIVATE只有当前应用程序可以续写
SharedPreferences.Editor editor=getSharedPreferences(path,MODE_PRIVATE).edit();
//向其中添加数据,是什么数据类型就put什么,前面是键,后面是数据
editor.putString(key,value);
//调用apply方法将添加的数据提交,从而完成存储的动作
editor.apply();

2.读取键值对

        //首先获取一个SharedPreferences对象
        SharedPreferences preferences=getSharedPreferences(key,MODE_PRIVATE);
        //然后通过键的方式取出,后边是如果找不到的默认内容
        String amount=preferences.getString(value,"");

3.读取所有键值对

SharedPreferences sharedPreferences = getSharedPreferences("your_prefs_name", MODE_PRIVATE);  
Map<String, ?> allEntries = sharedPreferences.getAll();  
  
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {  
    String key = entry.getKey();  
    Object value = entry.getValue();  
  
    // 根据值的类型进行转换和打印  
    if (value instanceof String) {  
        String stringValue = (String) value;  
        Log.d("SharedPreferences", "Key: " + key + ", Value: " + stringValue);  
    } else if (value instanceof Integer) {  
        int intValue = (Integer) value;  
        Log.d("SharedPreferences", "Key: " + key + ", Value: " + intValue);  
    } else if (value instanceof Boolean) {  
        boolean booleanValue = (Boolean) value;  
        Log.d("SharedPreferences", "Key: " + key + ", Value: " + booleanValue);  
    } else if (value instanceof Float) {  
        float floatValue = (Float) value;  
        Log.d("SharedPreferences", "Key: " + key + ", Value: " + floatValue);  
    } else if (value instanceof Long) {  
        long longValue = (Long) value;  
        Log.d("SharedPreferences", "Key: " + key + ", Value: " + longValue);  
    } else if (value instanceof Set<?>) {  
        // 对于Set类型,你可能需要进一步处理  
        Set<?> setValue = (Set<?>) value;  
        Log.d("SharedPreferences", "Key: " + key + ", Value (Set): " + setValue.toString());  
    }  
    // 注意:SharedPreferences不支持直接存储自定义对象,这里只是展示了可能的类型检查  
}

4.删除所有键值对

SharedPreferences sharedPreferences = getSharedPreferences("your_prefs_name", MODE_PRIVATE);  
SharedPreferences.Editor editor = sharedPreferences.edit();  
editor.clear(); // 清除所有的键值对  
editor.apply(); // 提交更改  
// 或者使用 editor.commit();,但 apply() 是异步的,通常更推荐使用

5.调用其他文件的类

添加引用  文件夹名称.类名

六.打包APK

1.点击导航栏的Build→Generate Signed Bundle / APK…

然后在项目文件夹中\app\release就可以找到了

### 关于 TFmini Plus 的概述 TFmini Plus 是一款高性能、小型化的激光雷达传感器,专为各种应用环境设计[^1]。该设备能够提供精确的距离测量数据,在机器人导航、无人机避障等领域有着广泛应用。 #### 主要特性 - 测量范围广:最远可达 12 米; - 高精度:&plusmn;3 厘米测距误差; - 小巧轻便:体积仅为 40mm × 17.8mm × 19.6mm; - 接口简单易用:支持 UART 和 IIC 数据传输协议; #### 获取官方文档和支持材料 为了帮助开发者更好地理解和使用这款产品,官方网站提供了详尽的产品规格书以及详细的用户指南。这些资源可以帮助使用者快速上手并充分利用其功能特点。 对于希望深入了解如何编程控制此设备的人士来说,可以访问官网提供的 SDK 及 API 文档来获取更多信息。此外,还有丰富的案例研究和技术文章可供参考学习。 #### 安装与配置指导 安装过程相对直观: ```bash # 访问制造商网站上的下载页面以获得最新版本固件和其他必要文件 wget http://www.benewake.com/download/tfmini_plus_firmware.zip unzip tfmini_plus_firmware.zip ``` 完成硬件连接之后,按照所提供的说明书设置通信参数即可开始测试基本功能。通常情况下,默认波特率为 115200 bps。 #### 示例代码片段 (Python) 下面是一个简单的 Python 脚本用于读取来自 TFmini Plus 的距离值: ```python import serial import time ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=1) time.sleep(2) # Wait for initialization def get_distance(): ser.write(b'\x5A\x05') # Send command to request distance data response = ser.read(9) if len(response) == 9 and response[0] == 0x59 and response[1] == 0x59: high_byte = response[2] low_byte = response[3] dist_cm = ((high_byte << 8) | low_byte)/100 return round(dist_cm, 2) if __name__ == '__main__': try: while True: print(f'Distance: {get_distance()} m') time.sleep(0.5) except KeyboardInterrupt: pass finally: ser.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值