首页 > 其他分享 >Android开发学习之路--Activity之初体验

Android开发学习之路--Activity之初体验

时间:2023-01-15 16:06:57浏览次数:40  
标签:xml 初体验 layout -- app Activity android first


    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看android源码,终有一天可以让自己提高到另外一个高度。

    好了,言归正传,真正地开始android开发学习之路了。

    相信很多人都知道android四大组件,它们分别是活动(Activity),服务(Service),广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。这里就先学习下第一个组件Activity。

    一个Activity就类似一个页面,像打开例如拨号、拍照、微信、看地图等。每一个Activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。

    一个应用程序包含了很多Activities,通常一个应用有一个Main Activity用来启动的时候呈现给用户的第一个界面,每一个Activity可以启动另一个Activity,为了完成不同的功能。每一次一个Activity启动后,前一饿Activity就停止了,但是系统保留Activity在一个栈上。当一个新的Activity启动时,它会被推送到栈顶,取得用户焦点,当用户完成当前Activity然后点击了back按钮,或者toolbar的回退按钮的时候,它就被弹出栈,然后之前的Activity就恢复了。所以我们可以通过Activity的生命周期来实现一些需要的功能,创建,暂停,停止,销毁等,这个在后面再研究。

    就像日历app一样如下图就是两个Activity,第一个是进入到的主界面的Activity,第二个设置的Activity了,当在第二个Activity的时候按back按钮,那么就会销毁第二个Activity,从而恢复到第一个Activity了。

Android开发学习之路--Activity之初体验_Android

       

Android开发学习之路--Activity之初体验_Android_02

    讲了这么多原理,其实看得肯定听不知所措的,不管这些了,下面还是在Android Studio下创建一个工程,然后实现简单的Activity功能了,关于Activity还有很多需要学习研究的,后面再慢慢学习好了。

    打开Android Studio软件,然后新建工程,Application name就命名为ActivityStudy,点击next

Android开发学习之路--Activity之初体验_xml_03

    然后选择sdk,这里我的测试真机是android4.0.3的所以选择了API15,接着点击next

Android开发学习之路--Activity之初体验_Android_04

    接着就是选择Activity模板了,这个和ios的也有点像,估摸着是学习ios的吧,这里选择一个空的Empty Activity,点击next。

Android开发学习之路--Activity之初体验_Android_05

    接着就是设置Activity的名字以及layout的xml了。这里命名为FirstActivity,layout命名为activity_first。点击Finish就完成了Activity 的创建了。

Android开发学习之路--Activity之初体验_Android_06

    然后进入工程如下图:

Android开发学习之路--Activity之初体验_xml_07

    好了,工程创建完成了,主要和Activity相关的就是FirstActivity.java,AndroidManifest.xml和activity_first.xml了,这些都在篇博文​​Android开发学习之路--Android Studio项目目录结构简介​​做过简单的介绍,这里再描述下,当作温故而知新了。

    首先FirstActivity.java,这里继承了AppCompatActivity,需要重写onCreate方法,主要这里只是个Empty Activity,所以也没有什么代码,setContentView函数呢,主要是实现mvc的v。m就是模块,很多代码可以抽象为模块;v就是视图,也就是那个layout的xml,这里就是activity_first.xml了,c是控制,这里也类似于FirstActivity.java了,用来控制显示。

package com.example.jared.activitystudy;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class FirstActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
}
}

    接着是activity_first.xml,这里就不多做说明了,我们来添加一个button,button是view的一个widget。切换到Desin模式选择Buton,拖到手机的界面当中去,然后切换回Text模式。

Android开发学习之路--Activity之初体验_android_08

    看到了xml文件中自动添加了一些代码,然后修改代码如下:

Android开发学习之路--Activity之初体验_Android_09

    其中android:id就是唯一标识符,这个在代码中需要用到,match_parent主要是填充父view,wrap_content是包含内容。

    最后就是注册AndroidManifest.xml了,这里基本是都是自动生成的,其中有@mipmap/ic_launcher表示的是app的图标。@string/app_name就是app显示的名字,@style/AppTheme是app的主题。这里用的@*符号主要的内容都在res下面。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.jared.activitystudy" >

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".FirstActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

    其中res下面的mipmap

 

Android开发学习之路--Activity之初体验_Android_10

  

    res下面的strings.xml:

<resources>
<string name="app_name">ActivityStudy</string>
</resources>

    res下面的styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

</resources>

    好了,基本的都已经介绍完了,那么接下去就运行下看看效果了。点击运行按钮,弹出了对话框,主要这里我开启了一个模拟器,又连接着真机,这里选择模拟器好截图说明,真机的效果其实也一样的。

Android开发学习之路--Activity之初体验_android_11

    运行效果如下图,有没有觉得很奇怪,为什么明明在button的android:text中既有大写又有小些,为什么这里都变成了大写了呢?

Android开发学习之路--Activity之初体验_android_12

         

Android开发学习之路--Activity之初体验_xml_13

    解决上述办法如下,在最后加上一行textAllCaps="false",运行如上图所示。

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="FirstActivity Button 1"
android:id="@+id/button1"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textAllCaps="false"/>

    至此,新建一个Activity,以及添加一个button等功能,相信都会操作了。

    很多app都不再显示标题栏的,这里怎么隐藏掉app的标题栏呢?网上有传统的方法就是在在setContentView上面加上如下代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_first);
}

    但是这里继承的不是Activity,而是继承了AppCompatActivity,其中AppCompatActivity又继承了Toolbar,所以上述代码编译是没有问题的,一旦运行就会出现异常的,那么正确的做法是什么呢?修改代码如下:

package com.example.jared.activitystudy;

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class FirstActivity extends AppCompatActivity {

@Overrid
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//requestWindowFeature(Window.FEATURE_NO_TITLE);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
setContentView(R.layout.activity_first);
}
}

    再次运行,就有如下的显示了,标题栏北隐藏掉了。

    

Android开发学习之路--Activity之初体验_android_14

    好了,Activity先就学习到这里了。接下去再学习别的内容了。

标签:xml,初体验,layout,--,app,Activity,android,first
From: https://blog.51cto.com/u_15940062/6008781

相关文章

  • Android开发学习之路--MAC下Android Studio开发环境搭建
       一些资源可以参考如下网站,个人觉得不错:   资源提供网站: ​​http://www.androiddevtools.cn/​​   1、下载androidstudio。  下载好之后解压缩后,打......
  • 和菜鸟一起学linux之linux性能分析工具oprofile移植
    一、内核编译选项makemenuconfigGeneralsetup--->[*]Profilingsupport<*>OProfilesystemprofiling二、popt移植      下载源码:​​http://rpm5.org/files/p......
  • 和菜鸟一起学linux之upnp协议的学习记录
    UPnP全名是UniversalPlugandPlay,主要是微软在推行的一个标准。简单的来说,UPnP最大的愿景就是希望任何设备只要一接上网络,所有在网络上的设备马上就能知道有新设备加入,这......
  • 和菜鸟一起学linux之bluez学习记录1
    关于蓝牙协议栈体系结构 底层硬件模块 RF1、利用2400M~2483.5M频带2、采用调频方式传输数据,一共有79/EDR,40/BLE个hops,每秒3、采用GFSK(DQPSK和8DPSK)调制方式4、信道间隔(1......
  • 和菜鸟一起学android4.0.3源码之wifi direct的简单分析
    关于wifidirectWifidirect的连接 下面的图表示的是wifidirect的发现过程。 整个过程可以见下图。关于android上的wifidirect首先上层通过调用p2pmanager的接口来实现......
  • 和菜鸟一起学linux之bluez学习记录2
    这里主要摘取对于hci,l2cap,sdp和rfcomm的一些应用编程。 关于hci 一、HCI层协议概述 1、HCICommandPackets详见bluez源码:lib/hci.h/*LinkControl*/#defineOGF_LINK_......
  • 和菜鸟一起学linux内核源码之基础准备篇
        注:以下大部分内容摘自linux内核编程入门篇和linux内核完全注释       在工作的这段时间,发现我的visio画图熟悉了点点,总喜欢把什么源码啊,结构啊之类的就......
  • 和菜鸟一起学android4.0.3源码之wifi的简单分析
     关于wlan的组成 关于wifi应用层的接口的调用    首先从上层androidwifi的应用开始,首先会根据android的wifimanager的类,实例化一个mwifimanager的对象,这个对象处......
  • 和菜鸟一起学OK6410之ADC模块
    android上跑起来时也比较灵敏了,GPIO模拟的SPI也可以工作了,看了会书,修正了会,回到宿舍也已经9点多了。想想,OK6410上还有个AD模块呢。网上找了找资料,发现还是可以去尝试下可不......
  • 和菜鸟一起学算法之三分法求极值问题
    7年,唉,可是他错了,女孩根本不爱他,不过期间他的执着和付出,很让我感动,也许自己不太像他那样,才会让自己有现在的处境吧。也许吧。小感慨下。不过现在也挺好的,上上班,写写文章,然后......