我的风采——android studio

目录

    • 实现“我的风采”页面
      • 要求
      • 理论
      • 代码
      • 生成apk文件

实现“我的风采”页面

要求

要求利用’java框架的边框布局实现“找的风采
”页而,其中中间为你的生活照,左右和下面为按钮,上面为标签
在这里插入图片描述

理论

Java GUI编程是Java程序设计的重要组成部分,它通过使用图形用户界面(GUI)提供给用户一个可视化的环境,使用户能够更轻松地操作软件。GUI编程中使用边框布局、按钮、标签等GUI组件,可以让用户更好地操作软件,下面将对Java GUI编程中边框布局、按钮、标签等组件进行详细介绍。

代码

ContentFragment中代码如下:


package com.example.y;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class ContentFragment extends Fragment {
    private TextView mTxtTitle;
    private TextView mTxtContent;

    private String TAG="";

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.fragment_content, container, false);
        initView(view);
        TAG=getClass().toString();
        Log.d(TAG, "onCreateView: ");
        return view;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.d(TAG, "onAttach: ");
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.d(TAG, "onActivityCreated: ");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: ");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: ");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: ");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: ");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.d(TAG, "onDestroyView: ");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.d(TAG, "onDetach: ");
    }

    private void initView(View view) {
        mTxtTitle = (TextView) view.findViewById(R.id.txt_title);
        mTxtContent = (TextView) view.findViewById(R.id.txt_content);
    }

    public void setData(String strTitle,String strContent)
    {
        mTxtTitle.setText(strTitle);
        mTxtContent.setText(strContent);
    }

TitleFragment的代码部分:


package com.example.y;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class TitleFragment extends Fragment implements View.OnClickListener {
    private Button mBtnFrag1;
    private Button mBtnFrag2;
    private Button mBtnFrag3;
    private Button mBtnFrag4;
    private String[] strTitle =
            {
                    "春天",
                    "夏天",
                    "秋天",
                    "冬天"
            };
    private String[] strContent =
            {
                    " 春天,农民伯伯在田野里播下了希望的种子,微风用手轻轻地抚摸着秧苗的嫩芽,帮助它们苗壮成长,希望它们快快长大。" + "\n",
                    " 夏天,太阳公公热情似火,热风也成了它的伙伴,让人们汗流浃背,小狗被热风吹得直吐舌头,鸟儿一直扑扇着翅膀降温,蝉儿也不停地叫着'知了,知了'" + "\n",
                    " 秋天,金风把小麦吹成金色的,远看,麦田里一片金黄,像是金黄色的海洋.  " + "\n",
                    " 冬天,寒风带着雪花来到人间,风雪交加的时候,人们都躲在屋子里不敢出门." + "\n"
            };

    private String TAG = "";

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view =
                inflater.inflate(R.layout.fragment_title, container, false);
        initView(view);
        TAG = getClass().toString();
        Log.d(TAG, "onCreateView: ");
        return view;
    }


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.d(TAG, "onAttach: ");
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
    }


    @Override
    public void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: ");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: ");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: ");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: ");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.d(TAG, "onDestroyView: ");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.d(TAG, "onDetach: ");
    }


    private void initView(View view) {
        mBtnFrag1 = (Button) view.findViewById(R.id.btn_frag1);
        mBtnFrag2 = (Button) view.findViewById(R.id.btn_frag2);
        mBtnFrag3 = (Button) view.findViewById(R.id.btn_frag3);
        mBtnFrag4 = (Button) view.findViewById(R.id.btn_frag4);


        mBtnFrag1.setOnClickListener(this);
        mBtnFrag2.setOnClickListener(this);
        mBtnFrag3.setOnClickListener(this);
        mBtnFrag4.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_frag1:
                setContent(strTitle[0], strContent[0]);
                break;
            case R.id.btn_frag2:
                setContent(strTitle[1], strContent[1]);
                break;
            case R.id.btn_frag3:
                setContent(strTitle[2], strContent[2]);
                break;
            case R.id.btn_frag4:
                setContent(strTitle[3], strContent[3]);
                break;
        }
    }

    private void setContent(String strTitle, String strContent) {
        ContentFragment mContentFragment = (ContentFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_content);
        mContentFragment.setData(strTitle, strContent);
    }
}

fragment组件,页面的显示部分就在这里,代码如下所示:


package com.example.y;

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private String TAG="";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TAG=getClass().toString();
        Log.d(TAG, "onCreate: ");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: ");
    }
    @Override
    protected void onResume() {
        /**
         * 设置为竖屏
         */

        if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        }


        super.onResume();
        Log.d(TAG, "onResume: ");
    }

      @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: ");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: ");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG, "onRestart: ");
    }
}



生成apk文件

代码,布局等设计完成后就可以打包并运行这个软件了,而且可以打包为release发行版本,安装到手机上,步骤如下:

  • (一) 设置build

在build构建里面点击generate signed bundle or apk,选择apk后并设置相关内容,最后选择release并点击完成。

在这里插入图片描述

  • (二) 设置project structure

在file中找到project structure并点击,选择modules在其中的signing configs中添加release密钥,并在default config中选择应用,在build variants中也一样如此,如下图所示:

在这里插入图片描述

  • (三) 设置build variants

Android studio中的Build variants的作用主要是用来打包不同版本app。这里我们需要将build variants中的活动创建改为release发行版本,如下:

在这里插入图片描述

设置完成后就打包成功了,可以在生成的apk文件目录下找到发行release版本的apk,可以直接安装到手机里面使用。

 
 
—————————————————————
以上就是今日博客的全部内容了
创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式(十二):中介者模式(行为型模式)

Mediator,中介者模式:用一个中介对象封装一些列的对象交互。属于行为型模式 Facade,外观模式:为子系统中的一组接口提供一致的界面,facade 提供了一高层接口,这个接口使得子系统更容易使用。属于结构型模式…

数据结构的概念大合集06(树和二叉树)

概念大合集06 1、树1.1 树的相关定义1.2 树的基本运算1.3 树的基本术语1.3.1 结点的度,树的度1.3.2 分支结点,叶子节点1.3.3 路径,路径长度1.3.4 孩子结点,双亲结点,兄弟结点1.3.5 结点层次,树的高度1.3.6 …

sentinel中StatisticSlot数据采集的原理

StatisticSlot数据采集的原理 时间窗口 固定窗口 在固定的时间窗口内,可以允许固定数量的请求进入;超过数量就拒绝或者排队,等下一个时间段进入, 如下图 时间窗长度划分为1秒 单个时间窗的请求阈值为3 上述存在一个问题, 假如9:18:04:…

C语言 数组指针 指针数组

指针数组 什么是指针数组&#xff0c;他是一个数组&#xff0c;数组的元素是指针。但是指针也有多种数据类型&#xff0c;有数组指针、函数指针、整形指针、字符串指针。 现在我就使用函数指针来写代码&#xff0c;也就是函数指针数组的应用代码&#xff1a; #include <s…

基于SpringBoot和Vue的课程作业管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的课程作业管理系统的设计与实现。 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&am…

权限提升-Windows权限提升篇数据库篇MYSQLMSSQLORACLE自动化项目

知识点 1、Web到Win-数据库提权-MSSQL 2、Web到Win-数据库提权-MYSQL 3、Web到Win-数据库提权-Oracle 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 0、为什么我们要学习权限提升转移技术&#xff1…

ST表和并查集【2024蓝桥杯0基础】-学习笔记

文章目录 ST表-用于优化RMQ问题状态分析例题分析代码复现 并查集例题分析1代码复现 例题分析2状态分析代码复现 合并并查集的方法启发式合并&#xff1a;按照子树的节点大小按秩合并&#xff1a;按照子树的深度 可撤销并查集带权并查集代码复现 例题分析思路分析 感悟 ST表-用于…

android emulator windows bat启动

android emulator windows bat启动 先上结果 // 模拟器路径 -netspeed full -avd 模拟器名称 C:\Users\name\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -netspeed full -avd Pixel_3a_API_34_extension_level_7_x86_64一般来说 windows 如果不做…

小游戏-扫雷

扫雷大多人都不陌生&#xff0c;是一个益智类的小游戏&#xff0c;那么我们能否用c语言来编写呢&#xff0c; 我们先来分析一下扫雷的运行逻辑&#xff0c; 首先&#xff0c;用户在进来时需要我们给与一个菜单&#xff0c;以供用户选择&#xff0c; 然后我们来完善一下&#…

Mac电脑高清媒体播放器:Movist Pro for mac下载

Movist Pro for mac是一款专为Mac操作系统设计的高清媒体播放器&#xff0c;支持多种常见的媒体格式&#xff0c;包括MKV、AVI、MP4等&#xff0c;能够流畅播放高清视频和音频文件。Movist Pro具有强大的解码能力和优化的渲染引擎&#xff0c;让您享受到更清晰、更流畅的观影体…

疫情居家办公OA系统设计与实现| Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

Netty剖析 - Why Netty

文章目录 Why NettyI/O 请求的两个阶段I/O 模型Netty 如何实现自己的 I/O 模型线程模型 - 事件分发器&#xff08;Event Dispather&#xff09;弥补 Java NIO 的缺陷更低的资源消耗网络框架的选型Netty 发展现状Netty 的使用 Why Netty I/O 模型、线程模型和事件处理机制优化&a…

Spring Cloud四:微服务治理与安全

Spring Cloud一&#xff1a;Spring Cloud 简介 Spring Cloud二&#xff1a;核心组件解析 Spring Cloud三&#xff1a;API网关深入探索与实战应用 文章目录 一、服务注册中心的选型与最佳实践1. 主流服务注册中心概述2. 最佳实践建议(1)、选型建议(2)、高可用性与稳定性1). 高可…

游戏引擎中的地形系统

一、地形的几何 1.1 高度图 记录不同定点的高度&#xff0c;对每个网格/顶点应用高度、材质等信息&#xff0c;我们每个顶点可以根据高度改变位移 但是这种方法是不适用于开放世界的。很难直接画出几百万公里的场景 1.2 自适应网格细分 当fov越来越窄的时候&#xff0c;网格…

学习SpringBoot笔记--知识点(1)

目录 SpringBoot介绍 创建一个最基础的springbooot项目 使用Spring Initializr创建springboot项目 Spring Boot 自动配置机制 SpringBoot常用注解 1.组件注册 2.条件注解 3.属性绑定 SpringBoot自动配置流程​编辑 学习SpringBoot的方法 ​编辑 SpringBoot日志配置…

机器学习周记(第三十一周:文献阅读-GGNN)2024.3.18~2024.3.24

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文模型 1.2.1 数据处理 1.2.2 门控图神经网络 1.2.3 掩码操作 2 相关知识 2.1 图神经网络&#xff08;GNN&#xff09; 2.2 图卷积神经网络&#xff08;GCN&#xff09; 3 相关代码 摘要 本周阅读了一篇利用图神…

银行监管报送系统介绍(六):客户风险数据报送系统

【概念定义】 银监会决定从2013年起实行新版客户风险统计制度&#xff0c;对各政策性银行、国有商业银行、股份制商业银行进行客户信息汇总统计。 客户风险统计信息&#xff0c;是指新版客户风险统计报送信 息。客户风险统计报送信息包括但不限于对公及同业客户授信和 表内外业…

ClickHouse--11--物化视图

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.物化视图什么是物化视图? 1.1 普通视图1.2 物化视图1.3 优缺点1.4 基本语法1.5 在生产环境中创建物化视图1.6 AggregatingMergeTree 表引擎3.1 概念3.2 Aggregat…

【Linux】Linux工具学习之git

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言一、账号注册1.1 GitHub与Gitee 二、构建仓库三、安装git 四、配置git五、克…

树状数组原理和代码

树状数组 求下标的对应 求i管着的下标的范围 方法&#xff1a;拆掉最右侧的1然后1 到你自己 query sum 1-i的和 拆掉最右侧的1 再把下一个数值吸收到sum 重复这个过程直到全变0为止 add 方法&#xff1a;加上最右侧的1 到上限为止 lowbit方法 单点增加范围查询模板 #inc…