日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓入门系列-03安卓的开发方式(逻辑与视图分离)

發布時間:2024/4/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓入门系列-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)
    • 修改如下。
    • 此時運行代碼,得到想要的結果了。
  • 初寫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);}}
    • 運行結果如下。
  • 這次已經了解了app開發的最基礎的流程和文件編輯結構。

總結

以上是生活随笔為你收集整理的安卓入门系列-03安卓的开发方式(逻辑与视图分离)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。