安卓入门系列-03安卓的开发方式(逻辑与视图分离)
生活随笔
收集整理的這篇文章主要介紹了
安卓入门系列-03安卓的开发方式(逻辑与视图分离)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
安卓視圖邏輯分離的開發方式
- App的控制方式
- 一般而言,App的控制由兩部分組成:界面和邏輯。
- 這里界面的布局由資源文件(res文件夾)來控制,其中主要的布局文件是res下layout文件夾下的xml文件,安卓開發使用xml控制布局,res其他文件均為其服務。其中,xml文件是一種結構化數據存儲的文件形式,在開發中很是常用,與json類似。
- 而邏輯也就是業務邏輯的主要處理由java目錄下的java代碼來控制,java豐富的包以及虛擬機的運行方式,提高了安卓開發的速度和效率。
- 初寫layout布局文件
- 在原來的默認項目的基礎上,雙擊res下的layout里的目前唯一的一個文件,activity_main.xml文件,其實這是IDE幫開發者生成的一個MainActivity的布局文件。我們看到如下的界面。
- 顯然,這是一個圖形拖動的布局設計界面,這種圖形化的絕對設計方法是不合理的,因為安卓的手機版本很多,屏幕分辨率各不相同,代碼控制的相對布局方法才是合適的。(這里建議且只建議這么書寫布局文件)
- 點擊下方的Text即切換編輯方式為代碼控制。
- 經過上面的操作,看到了如下的代碼文件。(右側是預覽效果通過最右側的Preview決定是否開啟,新手建議開啟)
- 可以看到,這個文件的xml配置在第一行。(xml語法可以在w3cschool上學習,很簡單)
- 隨即的就是一個安卓第三方包的布局,ConstraintLayout布局標簽。(后面會介紹兩種基本布局:Relativelayout和LinearLayout,這是比較基礎的)我們修改布局文件為Linearayout(指定線性布局方向為垂直)。運行程序。
- 代碼如下
- <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 1"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 2"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 3"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 4"/></LinearLayout>
- 此時通過預覽發現,頂部的bar不是我們想要的,修改mainfests目錄下AndroidManifest.xml,在根節點中找到application節點有這樣一個屬性。
- android:theme="@style/AppTheme"
- 顯然,可以看到這個主題是來自res下的style里面的定義。(這里兩種處理:1.修改style的定義,不改動mainfest這個文件;2.修改manifest文件為其他主題,這個主題自己定義在style里面。我選擇法1)
- 修改如下。
- 此時運行代碼,得到想要的結果了。
- 在原來的默認項目的基礎上,雙擊res下的layout里的目前唯一的一個文件,activity_main.xml文件,其實這是IDE幫開發者生成的一個MainActivity的布局文件。我們看到如下的界面。
- 初寫java代碼已經綁定組件
- 選擇非測試的java代碼包中的MainActivity.java文件,打開。
- package com.zc.helloworld;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}
- 這個代碼比較簡單,繼承了安卓開發支持包里的AppCompatActivity?,F在來讓組件關聯到java代碼里面,以便業務邏輯的處理。
- 要想獲得組件的控制,必須要唯一確定組件,這里開發為每一個組件提供了id這個屬性,且封裝到了R中。(R是資源文件)
- 修改xml布局文件如下。(為了方便演示加了一個按鈕組件)
- <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zc.helloworld.MainActivity"android:orientation="vertical"><TextViewandroid:id="@+id/tv_01"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 1"/><TextViewandroid:id="@+id/tv_02"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 2"/><TextViewandroid:id="@+id/tv_03"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 3"/><TextViewandroid:id="@+id/tv_04"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World 4"/><Buttonandroid:id="@+id/btn_01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am Button"/></LinearLayout>
- java代碼修改后的。(已經注釋)
- package com.zc.helloworld;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity {private Button btn;private TextView tv_01,tv_02,tv_03,tv_04;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bindViews();// 綁定得到組件后,為按鈕添加點擊事件btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 獲得當前文本內容,并添加一個字符串后設置新的文本內容String t1 = tv_01.getText().toString();tv_01.setText(t1+"Java is beautiful");String t2 = tv_02.getText().toString();tv_02.setText(t2+"Java is beautiful");String t3 = tv_03.getText().toString();tv_03.setText(t3+"Java is beautiful");String t4 = tv_04.getText().toString();tv_04.setText(t4+"Java is beautiful");}});}private void bindViews() {// 使用AppCompatActivity的findViewById方法找到指定的組件并且和變量綁定btn = (Button) findViewById(R.id.btn_01);tv_01 = (TextView) findViewById(R.id.tv_01);tv_02 = (TextView) findViewById(R.id.tv_02);tv_03 = (TextView) findViewById(R.id.tv_03);tv_04 = (TextView) findViewById(R.id.tv_04);}}
- 運行結果如下。
- 選擇非測試的java代碼包中的MainActivity.java文件,打開。
- 這次已經了解了app開發的最基礎的流程和文件編輯結構。
總結
以上是生活随笔為你收集整理的安卓入门系列-03安卓的开发方式(逻辑与视图分离)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓入门系列-02创建一个项目
- 下一篇: 安卓入门系列-04常见布局之Linear