Android Studio安卓开发入门第一天

1.用Button实现页面跳转

(1)在主页面activity_main.xml中添加Button:

<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/abd"android:text="hello!"android:layout_centerInParent="true"
/>
  • wrap_content表示让当前控件的大小能够刚好包含住里面的内容,match_parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小(fill_parent相同意义,官方更推荐match_parent)。
  • text指定按钮上显示的文字。
  • layout_centerInParent设置为true让按键放置在父布局的中间。
  • id的格式必须是@+id/XXX。(设置id以便调用事件)

(2)在MainActivity主页面活动中,给Button设置监听器并重写onClick事件:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
//        getSupportActionBar().hide();Button abc= findViewById(R.id.abd);abc.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, MainActivity2.class);startActivity(intent);}});}
}
  • getSupportActionBar().hide()表示让当前页面上侧的标题栏隐藏。
  • 新建Button来获取id为abd的按钮(采用findViewById(R.id.XXX)的方式获取)。
  • 使用按钮的setOnClickListener(匿名类)。
  • 在new View.OnClickListener()中重写onClick事件。
  • Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
  • 在onClick事件中首先构建了一个Intent,传入MainActivity.this作为上下文,传入MainActivity2.class作为目标活动,“意图”就是在MainActivity这个活动的基础上打开MainActivity2这个活动,然后通过startActivity(intent)来执行这个intent。

2.跳转后的页面中创建Textview并实现点击按钮修改文段

(1)在layout中的activity_main2中设置TextView和按钮:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity2"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="afcugdysvdskisdh"android:textSize="50dp"android:textAlignment="center"android:layout_marginTop="50dp"/><TextViewandroid:id="@+id/d2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="afcugdysvdskisdh"android:textSize="50dp"android:textAlignment="center"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/b3"android:text="change"android:textSize="25dp"/></LinearLayout>
  • 若使用LinearLayout线性布局,需要指明方向即orientation(一般手机的orientation为vertical竖直的)

(2)在MainActivity2中实现文段修改操作:

public class MainActivity2 extends AppCompatActivity {boolean isChanged=false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);TextView t2=findViewById(R.id.d2);Button b2=findViewById(R.id.b3);b2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (!isChanged){Date now=new Date();SimpleDateFormat s=new SimpleDateFormat("yyyy-年-MM-月-dd-日");String ss=s.format(now);t2.setText(ss);isChanged=true;}else {t2.setText("afcugdysvdskisdh");isChanged=false;}}});}
}
  • 首先在全局设置了isChanged的布尔变量,如果为false则对文段内容进行修改,否则则不修改。
  • 在onCarete中通过findViewById获取文段和按钮的id。
  • 对按钮设置监听器,如果需要修改则设置Date变量,并用SimpleDateFormat的format进行格式化,并格式化为字符串,文段textview再调用setText(此字符串)则可实现文段的修改。

3.有关文件相关操作

        File files=getExternalFilesDir("");File a=new File(files.getAbsolutePath()+"/time");try {a.createNewFile();} catch (IOException e) {throw new RuntimeException(e);}try {BufferedWriter w=new BufferedWriter(new FileWriter(a));Date now=new Date();SimpleDateFormat s=new SimpleDateFormat("yyyy-年-MM-月-dd-日");String ss=s.format(now);w.write(ss);w.flush();w.close();} catch (IOException e) {throw new RuntimeException(e);}
  • File files=getExternalFilesDir("");若为空字符串则默认在Android的data的file里进行操作。
  • 在创建新的文件夹时使用File a=new File(files.getAbsolutePath()+"/XXXX")表示在files文件下再创建一个文件夹叫“XXXX”。
  • 接着调用a.createNewFile()进行创建。(要使用try-catch捕获可能发生的异常)。
  • 接着进行文件写入操作,使用BufferedWriter w=new BufferedWriter(new FileWriter(a));写入刚刚得到的时间字符串w.write(ss);注意之后一定要用flush才能把缓冲区写入的内容真正写入到文件中去。(最后调用close,同时也要使用try-catch捕获可能发生的异常)。

4.在AndroidManifest.xml进行相关的注册

(1)对用户权限进行设置

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
  • CAMERA即用户在使用此应用时可以打开摄像头。
  • MANAGE_EXTERNAL_STORAGE即用户可以在外部存储对文件进行操作(一般都是在安卓内部存储操作,Android中data的文件夹中进行操作)。

5.对于app主题的修改

(1)在themes.xml中对主题风格进行设置

 <style name="Theme.Practice" parent="Theme.AppCompat.Light.NoActionBar">
  • 风格为Light,NoActionBar即app中的每一个页面都没有上侧标题栏

(2)关于相关颜色修改

  • 首先设置为#000000(默认黑色),再利用取色盘进行取色。

6.效果图:

(1)主页面                   (2)点击按钮进入此页面(3)点击按钮实现文段替换

(4)文件写入查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/241495.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷P5731 【深基5.习6】蛇形方阵(C语言)

思路感觉还是比较好想的。 从 1 到 n 依次算。先往右&#xff0c;走到头往下&#xff0c;再走到头往左&#xff0c;以此类推。 #include<stdio.h>int main() {int n, i, j, k1,t0;scanf("%d", &n);int a[100][100];if (n % 2 0)t n / 2;elset n / 2 …

【手撕C语言 第四集】分支和循环(上)

文章目录 一、什么是语句&#xff1f;二、分支语句&#xff08;选择结构&#xff09;1.if语句悬空elseif书写形式的对比 2.switch语句在switch语句中的 breakdefault子句 3.循环语句while循环while语句中的break和continue总结&#xff1a; continue介绍总结: 一、什么是语句&a…

16.桥接模式

桥接模式 介绍 桥接模式是一种结构型设计模式&#xff0c;它通过将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。这种模式通过组合的方式来实现&#xff0c;而不是继承。桥接模式通过将抽象和实现解耦&#xff0c;从而实现抽象和实现的分离&#xff0c;使得系统更加…

2023年全球软件架构师峰会(ArchSummit深圳站):核心内容与学习收获(附大会核心PPT下载)

本次峰会是一次重要的技术盛会&#xff0c;旨在为全球软件架构师提供一个交流和学习的平台。本次峰会聚焦于软件架构的最新趋势、最佳实践和技术创新&#xff0c;吸引了来自世界各地的软件架构师、技术专家和企业领袖。 在峰会中&#xff0c;与会者可以了解到数字化、AIGC、To…

Doris配置外表以及多个Hive外表的配置

1.场景分析 以Clickhouse、Doris、Starrocks等为代表的mpp分析数据库正在快速的兴起&#xff0c;以其高效查询、跨库整合能力收到广大技术人员的喜爱。本文主要浅显介绍下作者在使用Doris时&#xff0c;通过建立catlog进行跨库查询。 废话不多少&#xff0c;直接上代码 2.相关…

element-ui的el-upload组件实现上传拖拽排序图片顺序(sortablejs)

<template><!-- 省略其他配置 --><el-upload ref"upload" :file-list.sync"fileList"></el-upload></template><script>import Sortable from sortablejs;export default {data() {return {fileList: []};},mounted()…

transbigdata笔记:清理研究区域内的轨迹漂移

1 方法介绍 transbigdata 考虑了三种轨迹漂移&#xff0c;需要被清理 速度阈值&#xff1a;如果当前轨迹数据点与之前&#xff08;和后续&#xff09;轨迹数据点之间的速度超过阈值&#xff0c;则视为漂移。 距离阈值&#xff1a;如果当前轨迹数据点与上一个&#xff08;和后…

力扣每日一练(24-1-18)

经验一&#xff1a;不要把问题想复杂 Python&#xff1a; min_price float(inf)max_profit 0for price in prices:min_price min(min_price, price)max_profit max(max_profit, price - min_price)return max_profit C#&#xff1a; public int MaxProfit(int[] prices) {i…

Power BI - 5分钟学习新增自定义列

每天5分钟&#xff0c;今天介绍Power BI新增自定义列 我们在日常工作中有时需要对导入的数据进行额外处理&#xff0c;如两个字符串列拼接【产品编号】【产品名称】&#xff0c;或者【数据量】*【价格】得到销售值等等。 以计算产品销售为例&#xff0c;导入样例数据&#xff…

OpenGL Assimp加载各类型模型(.obj、.fbx、.glb、.3ds)

1.简介 本博客以.glb格式为例&#xff0c;加载glb格式的3d模型&#xff0c;网上找了一圈&#xff0c;基本上都是根据OpenGL官方示例&#xff0c;加载.obj格式的3d模型。 下面以.obj和.glb格式的3D模型简单介绍一下。 常见的.obj格式的3D模型如下所示&#xff1a;纹理都已经被…

Git一台电脑 配置多个账号

Git一台电脑 配置多个账号 Git一台电脑 配置多个账号 常用的Git版本管理有 gitee github gitlab codeup &#xff0c;每个都有独立账号&#xff0c;经常需要在一个电脑上向多个代码仓提交后者更新代码&#xff0c;本文以ssh 方式为例配置 1 对应账号 公私钥生成 建议&#…

计算机找不到msvcp120.dll的修复方法,总结五种可靠的方法

在计算机使用过程中&#xff0c;遭遇“找不到msvcp120.dll”这一问题的困扰是许多用户都可能遇到的情况。这一特定的系统文件msvcp120.dll&#xff0c;作为Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;对于运行某些应用程序至关重要。当系统提示无法…

统计学-R语言-6.1

文章目录 前言参数估计的原理总体、样本和统计量点估计区间估计评价估计量的标准有效性 总体均值的区间估计一个总体均值的估计&#xff08;大样本&#xff09;一个总体均值的估计&#xff08;小样本估计&#xff09; 练习 前言 本篇文章将开始介绍参数估计的相关知识。 参数估…

新手入门Java第二阶段 封装概念及包、访问修饰符和static修饰符介绍

第三章 封装 课前回顾 1.带参方法如何定义 访问修饰符 返回值类型 方法名(参数列表){//形式参数列表}对象名.方法名(实参列表);2.方法的参数是如何传递的 在java中&#xff0c;方法参数的传递都是值传递。只是基本数据类型作为参数传递时&#xff0c;传递的是值的拷贝。引用…

Linux--磁盘与文件系统

目录 1.什么是文件系统 2.磁盘 2.1什么时磁盘 2.2磁盘的物理存储结构 2.3磁盘的逻辑抽象结构 3.磁盘文件系统&#xff08;EXT2&#xff09; inode Table(i结点表) Data Block inode Bitmap(inode位图) Block Bitmap(块位图) 在Linux如何删除文件 Group Descriptor Ta…

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)

文章目录 1.计算日期到天数转换题目详情代码思路 2.KY111 日期差值题目详情代码思路 3.KY222 打印日期题目详情代码 4.KY258 日期累加题目详情代码思路 1.计算日期到天数转换 传送门 题目详情 代码 #include <iostream> using namespace std; int GetDay(int year,int…

【创作活动】ChatGPT 和文心一言哪个更好用?

文章目录 文心一言优点缺点 ChatGPT优点缺点 Java编码能力比较对人工智能的看法 ChatGPT是由OpenAI开发的交互式AI大模型&#xff0c; 文心一言是由百度研发的知识增强大语言模型&#xff0c;本文从Java开发的角度对比一下哪个更好用&#xff08;本文仅用于投稿CSDN创造活动&am…

虚拟线程探索与实践

优质博文&#xff1a;IT-BLOG-CN 一、简介 虚拟线程是轻量级线程&#xff0c;极大地减少了编写、维护和观察高吞吐量并发应用的工作量。虚拟线程是由JEP 425提出的预览功能&#xff0c;并在JDK 19中发布&#xff0c;JDK 21中最终确定虚拟线程&#xff0c;以下是根据开发者反馈…

中小企业股权质押融资(下)

股权质押融资的主要风险 由于股权资产的特殊性&#xff0c;较固定资产抵押和质押、第三方担保等方式&#xff0c;股权质押融资风险易受企业经营状况等因素的影响&#xff0c;主要包括股权价值下跌的风险、股权质押的道德风险、股权处置风险以及现行法律不完善导致的法律风险。…

30分钟带你深入优化安卓Bitmap大图

30分钟带你源码深入了解Bitmap以及优化安卓大图 一、前言二、Bitmap入门1. 如何创建Bitmap?2. Bitmap的堆内存分布在哪里3. 图片文件越大&#xff0c;Bitmap堆内存会越大吗&#xff1f;4. 如何管理Bitmap的内存&#xff1f;5. 实战修改Bitmap的堆内存&#xff0c;改变图片的图…