Android开发学习之路--Activity之初体验
环境也搭建好了,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 Studio下创建一个工程,然后实现简单的Activity功能了,关于Activity还有很多需要学习研究的,后面再慢慢学习好了。
打开Android Studio软件,然后新建工程,Application name就命名为ActivityStudy,点击next
然后选择sdk,这里我的测试真机是android4.0.3的所以选择了API15,接着点击next
接着就是选择Activity模板了,这个和ios的也有点像,估摸着是学习ios的吧,这里选择一个空的Empty Activity,点击next。
接着就是设置Activity的名字以及layout的xml了。这里命名为FirstActivity,layout命名为activity_first。点击Finish就完成了Activity 的创建了。
然后进入工程如下图:
好了,工程创建完成了,主要和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模式。
看到了xml文件中自动添加了一些代码,然后修改代码如下:
其中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
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>
好了,基本的都已经介绍完了,那么接下去就运行下看看效果了。点击运行按钮,弹出了对话框,主要这里我开启了一个模拟器,又连接着真机,这里选择模拟器好截图说明,真机的效果其实也一样的。
运行效果如下图,有没有觉得很奇怪,为什么明明在button的android:text中既有大写又有小些,为什么这里都变成了大写了呢?
解决上述办法如下,在最后加上一行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);
}
}
再次运行,就有如下的显示了,标题栏北隐藏掉了。
好了,Activity先就学习到这里了。接下去再学习别的内容了。
Android开发学习之路--Activity之初体验的更多相关文章
- Android开发学习之路--Service之初体验
android最后一个组件便是service了,终于学习到最后一个组件了,从年前的开发环境的搭建,到现在学到最后一个组件花了三周的时间,期间记录的点点滴滴,照着书本学习编写的代码都受益匪浅,这里要感谢 ...
- Android开发学习之路--React-Native之初体验
近段时间业余在学node.js,租了个阿里云准备搭建后端,想用node.js,偶尔得知react-native可以在不同平台跑,js在iOS和android上都可以运行ok,今天就简单学习下rea ...
- Android开发学习之路--传感器之初体验
说到传感器,还是有很多的,有加速度啊,光照啊,磁传感器等等.当然android手机之所以称为智能手机,少不了这几款传感器的功劳了.下面就学习下了,这里主要学习光照,加速度和磁. 新建工程emSenso ...
- Android开发学习之路--UI之初体验
之前都是学习Activity,对于布局都没有做过学习,这里就简单学习下吧.下面看下Android Studio下有哪些控件: 这里分为Widgets,Text Fields,Containers,Da ...
- Android开发学习之路--RxAndroid之初体验
学了一段时间android,看了部分的项目代码,然后想想老是学基础也够枯燥乏味的,那么就来学习学习新东西吧,相信很多学java的都听说过RxJava,那么android下也有RxAndroid. Rx ...
- Android开发学习之路--Camera之初体验
顾名思义Camera就是拍照和录像的功能,像微信里面,我们想拍照传一下照片,就可以通过camera来拍照,然后存储照片,发送给好友.那么微信的app里面是不会直接通过camera api来实现的,因为 ...
- Android开发学习之路--Notification之初体验
一般当我们收到短信啊,微信啊,或者有些app的提醒,我们都会在通知栏收到一天简单的消息,然后点击消息进入到app里面,其实android中有专门的Notification的类可以完成这个工作,这里就实 ...
- Android开发学习之路--Activity之四种启动模式
后天终于可以回家了,马上就要过年了,趁着年底打酱油的模式,就多学习学习,然后记录记录吧.关于Activity已经学习了七七八八了,还有就是Activity的四种启动模式了,它们分别为,standard ...
- Android开发学习之路--Activity之Intent
窗外再次飘起了小雪,还有1周就过年了,2016年即将到来,来年不知道自己将身处何处,船到桥头自然直吧.还是继续学习吧,上次学习了Activity,那么如果是两个Activity之间,怎么从一个Acti ...
随机推荐
- [bzoj4868][Shoi2017]期末考试
来自FallDream 的博客,未经允许,请勿转载,谢谢. 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在 ...
- 勤拂拭软件 java web 开发教程(1) - 开发环境搭建
勤拂拭软件系列教程 之 Java Web开发之旅(1) Java Web开发环境搭建 1 前言 工作过程中,遇到不少朋友想要学习jsp开发,然而第一步都迈不出,连一个基本的环境都没有,试问,如何能够继 ...
- Java面试题—初级(8)
基本表结构: student(sno,sname,sage,ssex)学生表 course(cno,cname,tno) 课程表 sc(sno,cno,score) 成绩 ...
- Android SDK下载安装及配置教程
2017年12月07日 13:33:32 4942 转载自:http://blog.csdn.net/dr_neo/article/details/49870587 Android开发环境搭建可以分为 ...
- Python从入门到实践 学习笔记(二)元祖686gffs
列表是可以修改的,而不可变的列表被称为元组 . 定义 * 用圆括号来标识.定义元组后,使用索引来访问其元素,就像访问列表元素一样 修改变量 * 不能修改元组的元素,但可以给存储元组的变量赋值 修改元素 ...
- Mac Webview OC与JS交互实现
1.首先,需要定义一个JS可识别的变量(如external)用于OC与JS交互 - (void)webView:(WebView *)sender didClearWindowObject:(WebS ...
- 线性表 linear_list 顺序存储结构
可以把线性表看作一串珠子 序列:指其中的元素是有序的 注意last和length变量的内在关系 注意:将元素所占的空间和表长合并为C语言的一个结构类型 静态分配的方式,分配给一个固定大小的存储空间之后 ...
- dnc开源梦之队2018 开源项目精选集
dnc开源梦之队2018 dnc开源项目选择标准 dnc = .NET Core.dotnet core 1.支持dnc 2.x,Github star数量100以上,最近2月活跃更新 2.轻量级.示 ...
- mongo索引
索引自动创建和手工创建 db.stu.drop(); db.stu.insert({"name":"张三","sex":"男&qu ...
- 蚂蚁代理免费代理ip爬取(端口图片显示+token检查)
分析 蚂蚁代理的列表页大致是这样的: 端口字段使用了图片显示,并且在图片上还有各种干扰线,保存一个图片到本地用画图打开观察一下: 仔细观察蓝色的线其实是在黑色的数字下面的,其它的干扰线也是,所以这幅图 ...