精华内容
下载资源
问答
  • 本文是学习过程记录,包含页面跳转功能的实现,...新建名称为app01的Empty Activity项目之后,留意底部状态条提示,稍等gradle完成初始化。在项目文件列表右击【app/java/com.xxx.app01】文件夹,依次选择【New/Acti...

    本文是学习过程记录,包含页面跳转功能的实现,以及项目结构的初步理解。

    创建新的Activity

    我们假设有两个页面,一个Main作为默认启动页面,上面有一个按钮,点击可以跳转到另一个home页面。

    新建名称为app01的Empty Activity项目之后,留意底部状态条提示,稍等gradle完成初始化。

    在项目文件列表右击【app/java/com.xxx.app01】文件夹,依次选择【New/Activity/Empty Activity】创建一个新的Activity。

    14885c73f1b2ca74164078229202b8d8.png

    在弹出的窗口中设置Activity Name为HomeActivity,下面的Layout Name自动变为activity_home,下面Source Langua选java。

    720923f407237c955b000fe1adb276d1.png

    这个操作实际上还会产生两个效果:

    • 在【app/mainifests/AndroidMainiFest.xml】中自动添加一行,缺失这一行的话会出错。
    • 在【app/res/layout】下面生成一个activity_home.xml界面文件。

    我们可以打开界面文件activity_home.xml,在Design模式下,先从Palette面板拖拽一个【Layouts/LinearLayout】,再拖拽一个【TextView】到layout上面,修改下文字显示这是第二个页面。

    5cdf1cec428c6fe5c09cbd2063231efa.png

    注意代码中的只保留了三个属性,并且width和height都设置成了match_parent,即横竖向都是充满页面。如果我们要使它在边缘留有边距,可以使用android:layout_margin="8sp"或者android:padding="4sp"这样的语法,注意打字时候不要输入andro...,而是直接输入paddi然后从下拉提示选择即可。

    注意使用Design预览窗口左上角的眼睛,选Show system UI可以显示画面顶部的状态条和标题栏。

    很多属性可以在Design界面中修改,如下图所示,注意textView处于Linearlayout的子层,这样组织是为了方便修改。

    8ef0fd378ef761383ea5f9b3def0ffec.png

    点击上图中textView右侧的黄色感叹号,点击下面弹出的文字底部的【Fix】按钮,弹出Extract Resource窗口。这是由于在按钮中的文字不应直接使用文字,而应该使用变量,这是为了适配不同的语言,比如英文中按钮是Start中文是开始,那么应该用哪个呢?都不用!而是用一个叫btnLabel的变量,在英文系统中btnLabel='Start'中文系统中自动btnLabel='开始'。下面设置了一个home_welcome的变量,它默认值等于这是Home页面!.

    e9c90b042e79c95f6a07727b6cc23c10.png

    按钮设置

    返回到activity_main.xml,添加一个linearLayout,里面添加一个TextView和一个Button。可以在代码里利用Margin和Padding调整边距。我们设置按钮的id为btn_go_home。

    99bdc58e97e3dec41d0d306f4340a68e.png

    修改MainActivity.java,我们把整个Activity改为可点击,并添加一个点击函数,代码如下:

    package com.zhyuzh.app01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public void onClick(View view) {    }}

    注意新增的implements View.OnClickListener这是让这个页面点击可被处理,它必须配合下面的onClick(View view)函数才行。注意这里不用输入@Override...只要输入onClick(小写on开头)就能自动提示完成。

    如何让按钮被点击时候执行这个onClick函数呢?当然我们可以从Design页面中找到onClick下拉菜单修改。但这里我们不用这个方法,而是直接修改代码。

    上面代码中的onCreate函数就是创建的时候就会运行的函数,我们在这里添加下面的代码。

    @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    findViewById(R.id.btn_go_home).setOnClickListener(this);}

    上面代码中setContentView(R.layout.activity_main)其实是和【res/layout/activity_main.xml】建立关联。我们新加的findViewById是利用我们之前设置的按钮id来获取到按钮,然后添加监听器setOnClickListener(this)。

    跳转函数

    我们需要使用Intent意图才能实现跳转。换而言之,就是Android禁止我们直接向页面跳转,而是必须把页面包裹成为一个Intent意图才能跳。

    修改onClick代码如下。

    @Overridepublic void onClick(View view) {    Intent go_home=new Intent();    go_home.setClass(this,HomeActivity.class);    startActivity(go_home);}

    保存之后,在模拟器内运行代码,就可以默认打开activity_main页面布局,点击按钮跳转到activity_home页面。

    如果有多个按钮,分别跳转到不同的页面,怎么办?我们可以在onClick函数中使用switch分支,根据不同的按钮的id执行不同的操作。代码如下所示:

    @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    findViewById(R.id.btn_go_home).setOnClickListener(this);    findViewById(R.id.btn_go_category).setOnClickListener(this);}@Overridepublic void onClick(View view) {    switch (view.getId()){        case R.id.btn_go_home:            Intent go_to1=new Intent();            go_to1.setClass(this,HomeActivity.class);            startActivity(go_to1);            break;        case R.id.btn_go_category:            Intent go_to2=new Intent();            go_to2.setClass(this,CategoryActivity.class);            startActivity(go_to2);            break;    }}

    注意onCreate中也要新增findViewById(R.id.btn_go_category)...。注意switch每个case后面要有break终止。

    修改Toolbar标题

    在onCreate中添加代码getSupportActionBar().setTitle("Welcome!");修改标题。完整一点如下:

    ActionBar actionBar = getSupportActionBar();if(actionBar != null){    actionBar.setTitle("Main");}

    所有元素居中

    修改LinearLayout属性,添加android:gravity="center_horizontal"属性可以使所有元素居中。同样android:gravity="center_vertical"可以实现页面竖向居中。

    b9b245f398ee5d99665ce7ca527d5fc4.png

    重命名文件

    由于很多变量都依赖于文件名称索引,所以在AndroidStudio中不能直接重命名文件,而应该使用右键【Refactor/Rename…】。


    未完待续。
    欢迎批评指正,交流学习。

    展开全文
  • 1、选择Empty Activity 2、配置工程的一些基本信息,最小的API选择API19,再低就不支持BLE了

    1、选择Empty Activity

     2、配置工程的一些基本信息,最小的API选择API19,再低就不支持BLE了

     

    展开全文
  • 创建一个新的项目工程MyPlayer,选择Empty Porject空模板,新建的工程只有一个Main Activity。(AS有Login模板,不选择是因为一张白纸好写字) Splash Screen 通常一个App运行后,会显示一个splash scree...

    Java转身系列之安卓4: Splash Screen 与 Login 登录——初识Android布局、多线程及Activity切换

    创建一个新的项目工程MyPlayer,选择Empty Porject空模板,新建的工程只有一个Main Activity。(AS有Login模板,不选择是因为一张白纸好写字)

    Splash Screen

    通常一个App运行后,会显示一个splash screen(欢迎界面),给MyPlayer添加一个这样的Activity,要选择”Launcher Activity”选项。

    splash activity gen

    将该activity设置为启动activity(app入口),由于Empty Project模板把Main Activity作为启动界面,需要在AndroidManifest.xml中将对应的启动设置进行去除或注释:

    set launcher

    Splash Screen可以做成酷炫的图片形式,简便起见做成一个渐变。以下是一个渐变色,自上而下从蓝色渐变到白色:

    blue gradient

    css3做渐变比较简单,写法如下:

    background: linear-gradient(to bottom, blue, white); 

    android的渐变可以通过在res/drawable下建立xml描述文件进行描绘,drawable 是安卓提供的图片(image)和图形(graphic)处理接口,或者更统一的说法就是graphic处理,因为image只是graphic的一种表现形式。drawable可以通过xml声明,或者编程方式进行绘制,这样就给开发带来更多的简便灵活性。

    res/drawable/splash_gradient.xml,描述了渐变起始为白色,自下而上(angle=90)的线性(linear)渐变到“#076585”:

    splash gradient

    在activity_splash.xml中将渐变设置为splash activity的背景,使用了特殊写法“@drawable/splash_gradient”表示对drawable资源的引用,这里layout与drawable res通过xml进行了关联。

    activity_splash在设计视图中预览:

    splash design

    在splash中央放置“我的播放器”TextView文本,文本通过布局(Layout)和定位来确定位置,通过设计器的属性侧栏,对UI组件进行样式修饰,属性命名和值与HTML样式有很高相似度。

    splash title

    Splash使用了RelativeLayout相对定位,即其位置根据与其他组件的相对位置来决定。“我的播放器”文本相对于整个父组件容器水平和垂直居中。/res/layout/splash_activity.xml:

    splash relativelayout

    Login登录

    新增LoginActivity.java,AS自动生成代码和layout文件,使用设计器设计登录界面:

    login design

    登录界面组件元素有四个,使用了RelativeLayout进行简单布局。用户和密码输入框通过hint提示属性设置,省略了label标签,类似html text输入组件的placeholder属性。

    用户输入组件使用了Plain Text,在设计器的预览显示中可以看出,它通过设置与父容器的顶部(layout_alignParentTop)和左右(layout_centerHorizontal)居中来进行定位。

    activity_login.xml:

    login xml

    Splash与Login切换

    欢迎界面在显示几秒钟之后,自动切换到Login登录界面,主要技术点是定时与activity之间的切换。

    一般定时可以用Thread.sleep(millies)实现,在android中是否如此?

    Android App多线程

    用过java swing或者其他技术做桌面开发的人都知道,桌面程序技术要解决UI渲染、重绘、事件响应等问题,主要工作由主线程/UI线程处理,界面程序除此之外还有相当大部分工作是后台处理,比如文件、数据、网络资源的访问和计算,这些工作通常耗时耗资源,为了确保界面与用户交互的即时性,后台工作要交给worker工作线程。

    也就是说,Android App是多线程应用,只要是多线程都会涉及线程安全问题。

    为确保安全,android界面编程有一个重要原则:对界面元素的变更,只能在主线程即UI线程中进行

    android.os.handler

    参考官方文档

    A Handler allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue. Each Handler instance is associated with a single thread and that thread’s message queue. When you create a new Handler, it is bound to the thread / message queue of the thread that is creating it – from that point on, it will deliver messages and runnables to that message queue and execute them as they come out of the message queue.

    There are two main uses for a Handler: (1) to schedule messages and runnables to be executed as some point in the future; and (2) to enqueue an action to be performed on a different thread than your own.

    Handler通过一个线程的MessageQueue,发送及处理Message消息和Runnable对象。每个Handler实例与一个线程及该线程的消息队列关联,当你新建一个Handler,它即与创建它的线程或消息绑定——在创建后,它将入栈消息和runnables到该消息队列,当它们出栈时进行处理。

    Handler有两种主要用法:(1)调度消息和runnables,在未来某个时间点执行;(2)将一个操作入栈,以在handler绑定线程之外的其他线程中执行。

    从api文档可以看出,handler的用法(1)可以满足要求,安全地实现Splash显示几秒后,切换到登录Activity。

    通过Intent进行Activity切换

    SplashActivity.java:

    splash to login code

    在onCreate方法中,一个Handler被创建,它与主线程绑定,postDelayed方法新建了一个匿名内部Runnable,经过3秒延迟后,这个Runnable被主线程执行,run方法主体创建Intent,启动LoginActivity,并把当前Splash终结。

    运行效果

    run

    小结

    1. MyPlayer工程初始新增了两个Activity,Splash和Login,一个App有一个启动Activity,在App的AndroidManifest.xml中设置;
    2. Activity由Java代码、layout和res资源文件组合构成,在layout文件中引用了drawable res资源,实现了Splash的背景颜色渐变;
    3. Layout是Android UI开发的重要概念和界面组织技术,需要重视和掌握;Android界面设计倚重于对布局和组件进行XML定义,有HTML和CSS基础可以帮助理解和掌握;
    4. 通过Intent实现Activity之间切换;
    5. Android App开发涉及多线程,需要建立主线程/UI线程概念,注意只在UI线程中处理与界面相关的操作;
    6. Android开发学习的好地方是官网https://developer.android.com/,对于开发过程中使用到的类和接口,尤其是属于Android特有的,需要认真研读其Api Reference参考文档,例如这一章中涉及到的Handler。
    展开全文
  • 1.laucher has stopped 一启动安卓模拟器就报错怎么破??? 请检查给模拟器分配的VM Heap内存是否过小? 建议分配到256 ...解决办法:新建activity类型选择empty activity而不要选择blank activity

    1.laucher has stopped

    一启动安卓模拟器就报错怎么破???

    请检查给模拟器分配的VM Heap内存是否过小?

    建议分配到256

    2.新建的Android project项目src和layout目录下为空???

    解决办法:新建activity类型选择empty activity而不要选择blank activity

    展开全文
  • 大家好,我是SKODE。 小提示:选中右侧目录,可快速找到所需内容 本系列博客地址:传送门 本章从AndroidStudio新建工程开始讲解,包含导入unity class.jar、AS配置、Java交互代码... ActivityEmptyActivity...
  • 安卓开发学习——day2

    千次阅读 热门讨论 2021-01-08 20:18:15
    今天主要使用的布局:LinerLayout 使用的控件有:TextView ListView EditView RadioGroup RadioButton Button Spinner 首先第一步新建模板 File -> New ->...Empty Activity 这样就能直接生成文件:
  • 安卓开发-推送通知

    2019-12-31 15:55:14
    1. 新建一个Empty Activity工程 工程名为:TestNotification02 2. 在对应的Layout文件中加入三个控件 两个EditText分别用来输入通知的标题和内容,按钮用来推送消息; 3. MainActivity.java中实现代码 package...
  • 安卓开发套壳APP

    千次阅读 2019-03-29 13:36:15
    2、选择Empty Activity 3、打开主界面activity_main.xml,在里面放一个WebView 代码如下 <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height...
  • Unity与安卓丨调用手机的震动功能

    千次阅读 2019-06-08 01:26:12
    Empty Activity 工程名ClickShake, 包名:com.hhq.clickshake 语言:Java API:17(该17版本会自动引入兼容包,后面会进行处理) 2、建立Unity和安卓通讯的桥梁 a、AS切换到Project视图 b、将Unit...
  • 选择empty activity name写APP的名字,选择文件夹储存项目,语言选择Java,API的版本根据连接手机版本来定,博主的手机是安卓9.0,所以这里选择了9.0 二、项目结构 其中mainActivity是项目提前构建好的,我们...
  • 安卓第四次课

    2020-07-06 17:47:29
    Feil→newproject→EmptyActivity→工程的相关设置 二、项目的目录结构 Manifests(清单文件、全局的资源控制、APP图标、名字设置、活动页面) Java (逻辑业务代码) Res(静态资源文件) 图片 布局 静态资源文件...
  • 1.androidStudio创建新项目(参数:API选16,Empty Activity) 2.创建新模块: 3.创建MainActivity: 4.删除res/layout文件夹下的activity_main.xml,删除MainActivity中setContentView(R…)这一行。 5.复制Unity...
  • 首先新建工程,创建两个empty activity,此处名称都采用默认的名称。 目的是:实现从MainActivity传参数给Main2Activity(value1和value2),然后计算两个参数的和为sum,之后再返回给MainActivity。activity的转换...
  • 一个炫酷的抽屉菜单——JPSpringMenu GitHub地址:传送门 看到这个,本来想搜搜它的穿件方式,就是应用,结果查找了一番,都是github的那一点解释 ...选择 Empty Activity 创建成功 在app目录下的build grad...
  • 1.安装AS(androidStudio)百度很多简单 ...并给这这module加上一个emptyActivity 4.导入unity的的classes.jar 地址:Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classe
  • 目录前言真机测试步骤实战移动端测试 前言 用IntelliJ IDEA自带的模拟器遇到问题始终没有解决,这个报错死磕几天了,谷歌+百度的各种方法都试了一遍(总感觉是哪里的细节没有... 选中Empty Activity ——> 点击Next
  • 1. 打开AndroidStudio,选择新建工程,...点击next,进入选择EmptyActivity模板,如图 5.点击next,输入活动名称和布局名称,如图 6.点击finish,项目就开始自动创建,如图 7.点击运行项目,如图 8.选
  • 3.接下来就会出现以下这样的页面 ,这个时候我们只需要选则Empty Activity, 4之后出现这个页面这个时候你们看按照老师要求或是自己来给这个工程来命名。然后我们看到Language这一个选项我们我们要进行修改 把它...
  • 这边来记录一下这个盲人指示红绿灯 蓝牙app的制作过程。... newProject,选择Empty Activity [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EC6anZFL-1586166531716)(https://...
  • 第二章 探究活动首先新建一个项目,最后一步记得选择Add No Activity,手动创建活动。右击com.example.activitytest包-new-activity-Empty Activity,弹出对话框,命名为FirstActivity,并且不...
  • Unity 编写并使用Android包 Author: ziang.hu Date: 19.1.15 15:39 使用软件版本: Unity : 2017.4 Android Studio : v3.2.1 编写Android的aar包 ...选好对应的SDK后新建项目,Activity选择Empty Activ...
  • 初入Android创建第一个安卓项目HelloWorld 首先说明,我使用的编译器是Andriod Studio,版本号是3.6.1 for Windows...2.选择模板,这里选择的Empty Activity,然后点击Next。 3.新建一个名为HelloWorld的工程,语言...
  • Android入门基础教程(小白速成1)

    千次阅读 2021-01-11 17:56:04
    项目新建按照需求来就好,我这里选用空的界面(Empty Activity)和Android 4.0.3,大家一定要注意安卓版本匹配问题鸭,之前每次新建项目都报错,最后才发现是版本匹配问题。 话不多说,进入正题吧! Hello World! ...
  • 在当前应用这点下载SDK,添加AI能力(添加新服务),选择语音听写...2、打开Android Studio,新建一个项目(选Empty Activity即可),打开该项目,点击菜单【File—New—Import Module】,导入的模块路径是刚才下载...
  • Android studio创建项目 — 简单实现 一、首先安装好Android ...选择:Empty Activity 之后点击 Next 出现这个界面可以在Name中对项目重命名,重命名包名,选择项目存储的位置和使用的语言,最后点击Finish 三、各
  • uni-app项目离线打包 ...当我们需要使用原生开发时,需要对uni-app项目使用离线打包方式进行调试运行及打包。 以下将简单整理uni-app项目离线打包Android应用相关流程,让你对整个流程有一个大体的... Empty Activity >
  • currentActivity : 获取当前affinity栈顶Activity closeActivity : 关闭Activity closeAllActivity : 关闭所有Activity closeActivityByName : 通过传入完整包.类名,关闭Activity closeOtherActivities : 通过传入...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

activity安卓新建empty