emmmm其实这篇博客应该是昨天写的,但是由于某人太懒了,所以只好拖到今天了。
在学习了一段时间的Java后,我深感只是单纯依靠记忆的知识是不靠谱的,必须在实践中学习。于是我开始学习Android开发。学习Android的目的很明确,一是参加国创(或者其他类型比赛),二是在参加这个比赛之前做一款App(目前有两个设想,一是西电全家桶,二是个人日程管理),三是积累工程项目经验。
在这里我先简述一下西电全家桶的设想。由于超级课程表实在是太慢了,而且作为一款商业软件不得已要加入很多广告,使得我们查看课程表的代价很高(时间上的),而且也加入了很多我们用不到的功能,很糟心。于是我设想做一款真正属于西电学子的App,通过它可以查课表、成绩、流量、水电等等。由于我目前才刚刚开始学习,所以我也不知道会遇见多大的阻力,不过可以确定的是,我需要学习Android开发(这部废话)以及服务器和数据库管理,当然我打算做出内测版之后邀请更同学一起来做。
在前声明,学习所用书籍为郭霖所编写的第一行代码(Android)第二版,Java学习所用资料为B站求知讲堂Java入门(av76235341)
在前生命,文章的所有内容均为自己学习感悟,初学者难免有不严谨的地方,如果您是小白不小心看到了这篇文章,emmmm看看就好,如果您是大佬emmmmm笑笑就好,还望您不吝赐教
学习必要的环境搭建以及项目创建在此不再赘述,首先说一下项目创建后的目录。
项目创建后Android Studio会自动帮你生成很多文件,其中大部分是你不需要改动或者关心的。
Android Studio提供之至少两种文件视图模式(我只用到两种),一种是Project,一种是Android,分别如图:
左侧为项目真实的目录结构,右侧为Android Studio转换过的目录结构,适合快速开发。
以左侧视图为例讲解
当然这么多文件我也不知道有什么用,因为我也还没有用到,就目前我所知的来说一下吧:
其他的我也不是很了解了,下面详细说一下app里面的内容,如图:
Android讲究逻辑和视图分离,在Java文件中编写逻辑,在res中存放视图资源,在活动中可以引用这些资源.引用的语法为:
R.string.name 在代码中
@string/name 在xml文件中
就比如一个简单的应用程序,界面只有一行字:"Hello World",其Java文件如下:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
MainActivity类继承了AppCompatActivity,Activity是Android系统提供的一个基类,AppCompatActivity是它的一个子类,代表这是一个兼容活动.项目中的所有活动都必须是它或者它的子类才能拥有活动的特性.
这里重写了一个方法:onCreate,这个方法在一个活动被创建时自动调用,这个方法的第二行调用了setContentView方法,为当前活动引入了一个activity布局,我们在res/layout目录下找到这个布局文件,打开如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 9 <TextView 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:text="Hello World!" 13 app:layout_constraintBottom_toBottomOf="parent" 14 app:layout_constraintLeft_toLeftOf="parent" 15 app:layout_constraintRight_toRightOf="parent" 16 app:layout_constraintTop_toTopOf="parent" /> 17 18 </androidx.constraintlayout.widget.ConstraintLayout>
在12行定义了一个text为"Hello World!",App中的显示的字符就是这一个,其他的我也不大清楚,不过"wrap_content"的意思时刚好包起来.
打开这个文件:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.helloworld"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/AppTheme"> 12 <activity android:name=".MainActivity"> 13 <intent-filter> 14 <action android:name="android.intent.action.MAIN" /> 15 16 <category android:name="android.intent.category.LAUNCHER" /> 17 </intent-filter> 18 </activity> 19 </application> 20 21 </manifest>
看第5~19行
icon为这个项目的应用图标,可以看到是引用的mipmap里面的ic_launcher文件,label为应用的名称,引用的string里面的app_name文件
注意到12~19行,这里对MainActivity活动进行了注册,里面有一个子标签<intent-filter>,里面的两行代码表示这是一个主活动,即打开App就是运行这个活动.
最后再说一下Log方法(日志工具),自低级别到高级别如下:
用法如下:
Log.d("MainActivity", "onCreate: execute");
这个方法有两个参数,tag和msg,标签和信息,里面的内容在语法上应该是不限定的,在实际应用中第一个一般填入当前类名,第二个是你想打印的内容,如该语句执行结果如下:
方便快捷,时间什么的都打印出来了,岂不快哉?用什么System.out.println()
而且在Android Studio中输入logt,按下Tab键,自动帮你设置一个常量:
常量的值为当前类名,心动不如行动,快快使用吧!
(知宇过滤器什么的就不说了,自行摸索吧)
原文:https://www.cnblogs.com/RainCurtain/p/12213665.html