Android应用界面开发(一) - Go语言中文社区

Android应用界面开发(一)


一、Android studio的下载与配置

Android Studio是Google发布的用于Android的开发平台。系统基于 IntelliJ IDEA。类似 EclipseADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。Android Studio的开发环境和模式更加的丰富和便捷,能够支持多种语音,还可以为开发者提供测试工具和各种数据分析。(以上来源于百度百科)
因此,他的下载页面www.android.com也是一个外国网站需要翻墙才能进行下载。但是在网络发达的当下,有什么资源是在网上找不到的呢?在这里,自己就先贴一个百度软件中心的下载地址。百度软件中心

二、Android的界面-activity

在Android的运行过程中,我们首先看到的会是一个接一个的页面,点一下某个地方就会跳到某个页面上去。这一个个的页面,常常被称作一个个的activity。但这并不是指每一个界面都是一个activity的文件,activity也不仅仅只是一个页面。activity是一个容器,它是一个view类的派生类(比如Button, listview,imageview)的container。自己并不喜欢这样的解释方法,过度的专业显得对人十分的不友好。
activity直译过来就是“活动”。与其去追究其深层的意义,不如就使用它的直译显得更加直观与明确。activity就像是进行现实中各式各样的活动的举办一样。举个例子的话,就像是策划一场晚会。如果你要中规中矩的策划一场晚会,最不可或缺的就是晚会的策划案和晚会的会场。对于activity来说,用class文件就相当于是晚会的策划书,而xml则像是会场。接下来,就让我们从class文件开始,一点一点的来探索activity。

1.activity的生命周期

在写晚会策划的时候我们先想的是什么呢?对,晚会的流程,你得邀请他人、准备酒水、布置会场、准备节目,以及晚会结束后的收拾等等。一个party有一个从准备到收拾的过程,一个activity也有一个从 onCreate(Bundle icicle)到onDestory()生命周期。具体来说,是有
- protected void onCreate(Bundle icicle);
- protected void onStart();
- protected void onRestart();
- protected void onResume();
- protected void onFreeze(Bundle outIcicle);
- protected void onPause();
- protected void onStop();
- protected void onDestroy();
onCreate就是晚会的准备阶段,晚会会从准备开始,activity也会从onCreate方法开始。对button、bar等等组件的设置就是写在这个方法中的,就像是在晚会的准备阶段布置会场、检查开关一样。
onStart不用我说,小伙伴们都能看的出来,晚会开始啦,此时我们再进行一些事情,比如致辞。之后我们就会一直进行晚会,即是onResume();的阶段
在一场大的晚会中,我们可能会不止一个会场,可能会跑去另外的会场进行别的活动。这个时候,这里的会场活动就会暂停,就是activity的onPause的阶段。具体来说,就是在别的activity遮盖在这个activity之上的时候,这个activity会处于onPause的阶段。等我们回来后就会继续进行,返回到onResume的方法。
这里用一张不知道被多少人用过的图来详细描述这一过程。
activity的生命周期图

2.activity 之间的数据传输—Intent

在上面我们曾经说过,我们activity中是可以跳到别的activity中的,而且是可以带着参加晚会的人们一起去,回来的时候也能带着人们一块回来。而带着他们在activity之间跑来跑去的小车,就是我们的Intent。

页面跳转时发送数据代码
Intent intent = new Intent(MainActivity.this, SplashActivity.class);/*新建intent对象,两个参数分别是context和要跳转到的class*/
intent.putExtra(USER_INFO, userInfo);//传输对象。这里传输的对象都需要序列化(即对象需要继承Serializable)
intent.putExtra("TITLE", title);//调用intent的函数,两个参数是String格式的Key(或者说是一个ID标志)和你要传输的数据
startActivity(intent);//启动intent
接受其他页面发来的数据代码
Intent intent = getIntent();//与new时不同的方法。
if(intent != null){
String title=intent.getStringExtra(SplashActivity.TITLE);//使用get方法获得数据。
UserInfo userInfo =(UserInfo)intent.getSerializableExtra(SplashActivity.USER_INFO);//获得对象的方法。注意需要序列化
}

值得一提的是,除了上面所使用的getStringExtra以外,根据数据的不同还有getIntExtra等方法,他们的两个参数一个是在传输时输入的Key,一个是default。

3.在activity中与其他activity进行数据互动

在一场晚会之中,总会有人离开会场去做一些别的事情,比如上厕所,比如“不可描述”。这个时候,显示的activity还是原来的activity,只是有几个数据出去啪啪啪了,这个时候,我们在Java文件中setResult(RESULT_CODE,intent);的方法会专门显示这一情况这个方法有两个参数,一个是RESULT_CODE,这是一个int型的值,是数据的名牌,方便我们找到他进行操作的时候使用的的,另外一个就是我们在上面写的小车Intent,发送的方式和上面的也是一模一样的。用这个方法,我们就可以把这些要出去的数据发送出去。
到了这些数据要到的activity的时候,我们则需要使用startActivityForResult(intent, REQUEST_CODE); 方法来接收发送过来的数据。跟发送的一方一样,也是一个int型的REQUEST_CODE的名牌和一个Intent小车构成的。不过要注意的是,这回的Intent是放在前面的。
有了名牌,我们就需要对这名牌来处理这些发送的文件了,这是就需要重写父类中的onActivityResult()方法,具体如下:

数据传输的分类处理方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == REQUEST_CODE && resultCode == MainActivity.RESULT_CODE){
           if(data != null){
               String title = data.getStringExtra(TITLE);
               mTextView.setText(title);
           }
        }
    }

从代码里我们可以看到,只有当两个名牌是我们设定的值的时候才会进行相应的处理,这就保障了针对不同的数据的传输进行不同的处理。

4.附注:页面运行的调控方法——Handler

在进行变成的时候,我们常常需要让一些操作停滞一段时间,就像是应用正式运行前的广告页面那样。
此时我们就需要使用Handler的postDelayed()方法,方式如下:

延时器
        Handler mHandler = new Handler();
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //这里放你要运行的代码
            }
        }, 1000);//这里的数字是你要停滞的时间,此处为一秒

迷の下期预告:这一篇,自己写了与布局相关的组件代码,在下一篇中,自己将更系统而详细的谈一谈关于布局和组件的二三事。将会写出如何将布局文件和Java文件相连接、各个组件的属性及使用方法、还会写一写布局的优化。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_34939549/article/details/51364114
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 15:22:26
  • 阅读 ( 1257 )
  • 分类:Go应用

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢