Android Studio简易项目|随机选择器(类似转盘)

server/2024/10/21 14:59:39/

一、背景

为了强化对flowlayout流式布局的理解和简易安卓项目架构结构的理解,写一个小项目,随机选择器,控制可见等

二、项目代码

2.1流式布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="8dp"android:background="@drawable/item_background"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android:color/white"android:textSize="16sp"/>
</LinearLayout>
2.2布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/tip"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"><EditTextandroid:id="@+id/tip_title"android:layout_width="200dp"android:layout_height="50dp"android:hint="@string/btn_edit"android:gravity="center"app:layout_constraintStart_toStartOf="parent"app:layout_constraintBottom_toBottomOf="parent"></EditText><android.widget.Buttonandroid:id="@+id/btn_save"android:layout_width="80dp"android:layout_height="40dp"android:layout_marginStart="@dimen/margin_200"android:layout_marginBottom="8dp"android:background="@drawable/btn_background"android:text="@string/btn_save"android:textColor="@color/white"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toEndOf="@+id/tip_title"></android.widget.Button></androidx.constraintlayout.widget.ConstraintLayout><com.google.android.material.internal.FlowLayoutandroid:id="@+id/flowLayout"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"android:orientation="horizontal"app:lineSpacing="@dimen/margin_80"android:layout_marginTop="@dimen/margin_100"app:layout_constraintTop_toBottomOf="@+id/tip"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"></com.google.android.material.internal.FlowLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/selector"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/margin_100"app:layout_constraintTop_toBottomOf="@id/flowLayout"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"><android.widget.Buttonandroid:id="@+id/btn_random"android:layout_width="100dp"android:layout_height="80dp"android:textColor="@color/white"android:background="@drawable/btn_background"android:text="@string/btn_choose"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"></android.widget.Button><android.widget.Buttonandroid:id="@+id/btn_clear"android:layout_width="100dp"android:layout_height="80dp"android:textColor="@color/white"android:background="@drawable/btn_background"android:text="@string/btn_clear"android:layout_marginStart="60dp"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toEndOf="@+id/btn_random"></android.widget.Button></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/margin_400"app:layout_constraintTop_toBottomOf="@+id/selector"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"android:id="@+id/sel_show"><TextViewandroid:id="@+id/sel_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/sel_ans"android:visibility="gone"android:textColor="@color/black"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"></TextView><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/sel_ans"android:visibility="gone"android:layout_marginStart="@dimen/margin_400"android:background="@drawable/btn_background"app:layout_constraintStart_toEndOf="@+id/sel_text"app:layout_constraintTop_toTopOf="parent"></TextView></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout>
2.3 主要代码
package com.example.javatestwithleetcode.ui;import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.example.javatestwithleetcode.R;
import com.example.javatestwithleetcode.utils.StringUtils;
import com.example.javatestwithleetcode.utils.ToastUtils;
import com.google.android.material.internal.FlowLayout;
import java.util.ArrayList;
import java.util.Random;public class MainActivity extends AppCompatActivity {private FlowLayout flowLayout;private ArrayList<String> dataList;private Button button;private Button save_btn;private EditText editText;private Button clear_btn;private TextView sel_ans;private TextView sel_title;@SuppressLint("ResourceAsColor")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initDatas();//也可以用implements然后switch-case 也可以拆开放三个方法里button.setOnClickListener(view -> {Random random=new Random();int i= random.nextInt(dataList.size());
//            ToastUtils.showToast(dataList.get(i));sel_ans.setText(dataList.get(i));sel_ans.setVisibility(View.VISIBLE);sel_title.setVisibility(View.VISIBLE);});save_btn.setOnClickListener(v->{editText=(EditText) findViewById(R.id.tip_title);if(StringUtils.isNotEmpty(editText.getText().toString()) ){dataList.add(editText.getText().toString());editText.setText("");// 将数据添加到FlowLayoutaddDataToFlowLayout(dataList);}else{ToastUtils.showToast("请输入后再保存");}});clear_btn.setOnClickListener(v->{dataList.clear();flowLayout.removeAllViews();sel_ans.setVisibility(View.GONE);sel_title.setVisibility(View.GONE);});}private void addDataToFlowLayout(ArrayList<String> dataList) {if(dataList.isEmpty()){return;}flowLayout.removeAllViews();LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);layoutParams.setMargins(0, 0, getResources().getDimensionPixelSize(R.dimen.margin_100), 0);LayoutInflater inflater = LayoutInflater.from(this);for (String data : dataList) {View view = inflater.inflate(R.layout.item_flowlayout, flowLayout, false);TextView textView = view.findViewById(R.id.textView);textView.setText(data);textView.setPadding(getResources().getDimensionPixelSize(R.dimen.margin_40), getResources().getDimensionPixelSize(R.dimen.margin_40), getResources().getDimensionPixelSize(R.dimen.margin_40), getResources().getDimensionPixelSize(R.dimen.margin_40));textView.setSingleLine();textView.setTextColor(getResources().getColor(R.color.white));textView.setLayoutParams(layoutParams);flowLayout.addView(view,layoutParams);}}private void initDatas(){setContentView(R.layout.activity_main);dataList = new ArrayList<>();flowLayout = findViewById(R.id.flowLayout);sel_ans=(TextView) findViewById(R.id.sel_ans);sel_title=(TextView) findViewById(R.id.sel_text);sel_ans.setPadding(getResources().getDimensionPixelSize(R.dimen.margin_80),getResources().getDimensionPixelSize(R.dimen.margin_80),getResources().getDimensionPixelSize(R.dimen.margin_80),getResources().getDimensionPixelSize(R.dimen.margin_80));button =(Button) findViewById(R.id.btn_random);save_btn=(Button) findViewById(R.id.btn_save);clear_btn=(Button) findViewById(R.id.btn_clear);}
}

资源文件和mainfest还有工具类不作详细解释。

三、项目截图

图片放不出来。。。

四、重点

添加flowlayout,以及设置可见性,加强了对android studio>android studio项目中的textview edittext button的更深的认知,点击触发条件等,以及对constraintlayout,linerlayout和flowlayout也有了更深刻的认知


http://www.ppmy.cn/server/133654.html

相关文章

Windows下搭建VUE开发环境

Windows下搭建VUE开发环境 文章目录 Windows下搭建VUE开发环境第一步 安装nodejs下载nodejs安装nodejs配置环境变量安装测试配置npm的路径配置npm的国内代理安装必要工具测试工具安装的使用 第二步 安装vscode下载vscode安装插件Chinese (Simplified) (简体中文) Language Pack…

两个字符串的最长 公共子序列

给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;也可以…

如何得到两个蛋白质序列的一致性和相似性

一、概念辨析 &#xff08;1&#xff09;一致性 一致性&#xff08;identity&#xff09;&#xff1a;如果两个序列&#xff08;蛋白质或核酸&#xff09;长度相同&#xff0c;那么它们的一致性定义为它们对应位置上相同的残基&#xff08;一个字母&#xff0c;氨基酸或碱基&…

Spring Boot为大创项目提供智能报表解决方案

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【C语言】字符函数和字符串函数(上)

本篇博客将讲解以下知识&#xff1a; &#xff08;1&#xff09;字符分类函数 &#xff08;2&#xff09;字符转换函数 &#xff08;3&#xff09;strlen的使用和模拟实现 1、字符分类函数 C语言中有一一系列的函数是专门做字符分类的&#xff0c;就是字符是属于什么类型的字符…

解析Gitxray:一种新的基于GitHub REST API的网络安全解决方案

关于Gitxray Gitxray是一款基于GitHub REST API的网络安全工具&#xff0c;支持利用公共 GitHub REST API 进行OSINT、信息安全取证和安全检测等任务。 Gitxray&#xff08;Git X-Ray 的缩写&#xff09;是一款多功能安全工具&#xff0c;专为 GitHub 存储库而设计。它可以用于…

3D Slicer 教程二 ---- 数据集

上一章下载3d slicer的软件,这章从加载数据集来弄清楚3dslicer怎么使用. 一. 加载数据集 如果没有数据集,也可用用样本数据. (1) "File" --> "add Data" 可以添加图片文件夹,(试了MP4不行,内镜的视频估计不支持),添加单个图片的话,会出现一些选项, …

管理沟通的艺术:跨越挑战,迈向卓越

在复杂多变的管理环境中&#xff0c;沟通不仅是信息传递的桥梁&#xff0c;更是管理工作的核心载体。它承载着所有管理活动的推进&#xff0c;是协同多人完成任务的基石。然而&#xff0c;沟通并非易事&#xff0c;尤其在技术管理者转型为全面管理者时&#xff0c;面临的挑战尤…