为什么应用的包名要用公司域名倒写呢?如何区分不同的安卓应用?高版本的应用装了之后会把低版本的应用覆盖掉。如果是不同的应用跟其他应用没关系只要装上去就可以了。区别不同的应用用的比较关键的东西是一个是应用的包名,还有一个比较关键的是打包的时候的签名。包名和签名这两个东西确定了唯一的应用。如果你的应用的包名和别人的应用的包名发生冲突了,如果你们俩签名是一样的,那你就会把后面装的覆盖掉;如果签名不一样,后面装的装不上。所以为了避免包名冲突都是使用公司域名的倒写。因为域名肯定是唯一不重复的。
每一个activity就是安卓的界面。
每一个界面都对应一个布局,这个布局就决定了我这个界面长成什么样。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
名称空间xmlns的名字是android。android:layout_width、android:layout_height是布局的宽度、高度。用到了schema约束技术。schema在这里用的都是属性,每一个标签都可以添加属性。
package com.itheima.day02_01_helloworld; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
MainActivity.java是对应的界面的java代码。
MainActivity.java是把activity_main.xml写出的界面加载进来。首先MainActivity.java把activity_main.xml里面的东西解析一下之后把对应的东西转换成java对象。通过代码的方式给它加载到咱们的界面上。
运行工程代码Day02_01_helloworld
应用的名字和项目的名字保持一致,包名:公司域名倒写+项目名字。注意项目名字千万不能有中文。