1. 程式人生 > >Android學習之路(2)--UI設計實驗——手機資訊頁面

Android學習之路(2)--UI設計實驗——手機資訊頁面

UI設計實驗——手機資訊頁面
實驗目的
1.掌握相對佈局、線性佈局的使用
2.掌握樣式的使用
3.掌握如何對程式進行國際化

實驗環境
裝有Android開發環境的計算機

實驗任務
任務:手機資訊頁面

實驗目的介面
執行效果介面

  1. 設計思路(實現原理)
    1)將準備好的八個圖示複製到res/drawable資料夾下
    2)建立一個垂直的線性佈局,並在線性佈局中建立4個相對佈局
    3)在相對佈局中新增相應的TextView
    4)在values檔案下的style.xml檔案中存放抽取出來的樣式
    5)建立values-zh-rCN、values-en-rUS資料夾,並在資料夾中建立strings.xml檔案
    3.案例實現
    (1)建立“手機資訊頁面”程式
    建立一個名為“手機資訊頁面”的程式,該程式用於展示手機設定頁面的資訊。程式介面對應佈局檔案activity_mian.xml如下所示:
    程式碼介面
    程式碼介面
    相對佈局
<LinearLayout 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:background="@android:color/darker_gray"
    android:orientation="vertical"
    tools:context=".MainActivity"
> <RelativeLayout style="@style/h_wrap_content" android:layout_marginTop="10dp"> <TextView style="@style/tv_style" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:drawableTop="@drawable/clound"
android:text="@string/_cloud" /> <TextView style="@style/tv_style" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:drawableTop="@drawable/bluetooth" android:text="@string/_bluetooth" /> </RelativeLayout> <RelativeLayout style="@style/h_wrap_content" android:layout_marginTop="10dp"> <TextView style="@style/tv_style" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:drawableTop="@drawable/gesture" android:text="@string/_gesture" /> <TextView style="@style/tv_style" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:drawableTop="@drawable/gps" android:text="@string/_gps" /> </RelativeLayout> <RelativeLayout style="@style/h_wrap_content" android:layout_marginTop="10dp"> <TextView style="@style/tv_style" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:drawableTop="@drawable/info" android:text="@string/_system_info" /> <TextView style="@style/tv_style" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:drawableTop="@drawable/internet" android:text="@string/_internet" /> </RelativeLayout> <RelativeLayout style="@style/h_wrap_content" android:layout_marginTop="10dp"> <TextView style="@style/tv_style" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:drawableTop="@drawable/language" android:text="@string/_language" /> <TextView style="@style/tv_style" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:drawableTop="@drawable/notifycation" android:text="@string/_set_notifycation" /> </RelativeLayout> </LinearLayout>

(2)抽取樣式
由於編寫佈局檔案時,相同控制元件之間的外邊距和寬高都是固定的。因此會產生大量重複的佈局程式碼,為了程式碼簡潔和重複使用可以將相同程式碼抽取為樣式單獨放在一個style.xml檔案中。style.xml檔案如下所示:
style.xml程式碼介面

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light"></style>
    <style name="AppTheme" parent="AppBaseTheme"></style>
    <!-- 寬 match——parent 高  wrap_content-->
    <style name="h_wrap_content">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
     <!-- 寬高都 match——parent -->
    <style name="tv_style">
        <item name="android:layout_width">145dp</item>
        <item name="android:layout_height">90dp</item>
        <item name="android:gravity">center</item>
        <item name="android:paddingTop">8dp</item>
        <item name="android:paddingBottom">8dp</item>
        <item name="android:drawablePadding">5dp</item>
        <item name="android:background">@android:color/white</item>
    </style>
</resources>    

(3)建立values-zh-rCN、values-en-rUS資料夾
在res目錄下建立values-zh-rCN、values-en-rUS資料夾,並在這兩個資料夾下建立相應的strings.xml檔案。
values-zh-rCN資料夾下的strings.xml檔案如下所示:
values-zh-rCNvalues-en-rU

values-zh-rCN

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">手機資訊頁面</string>
    <string name="menu_settings">設定</string>
    <string name="hello_world">你好,世界!</string>
    <string name="_cloud">雲通訊</string>
    <string name="_bluetooth">藍芽</string>
    <string name="_gesture">自定義手勢</string>
    <string name="_gps">定位</string>
    <string name="_system_info">系統資訊</string>
    <string name="_internet">網路</string>
    <string name="_language">語言設定</string>
    <string name="_set_notifycation">通知欄設定</string>
</resources>

values-en-rUS

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">phoneInfo</string>
    <string name="menu_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="_cloud">Cloud</string>
    <string name="_bluetooth">Bluetooth</string>
    <string name="_gesture">Gesture</string>
    <string name="_gps">Gps</string>
    <string name="_system_info">SystemInfo</string>
    <string name="_internet">Internet</string>
    <string name="_language">Language</string>
    <string name="_set_notifycation">Notifycation</string>
</resources>

4)編寫與介面互動的程式碼
接下來需要在MainActivity中編寫與使用者互動的邏輯程式碼,MainActivity對應的程式碼如下所示:
MainActivity

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

實驗完成後執行效果圖:
中文英文

實驗總結:在本試驗中,重點在佈局的使用和屬性的設定,還有在各個檔案之間的屬性關係。

遇到的問題:
問題
資原始檔名命名重複導致不能執行
解決方法,更改一個資原始檔的app_name。

相關推薦

Android學習2--UI設計實驗——手機資訊頁面

UI設計實驗——手機資訊頁面 實驗目的 1.掌握相對佈局、線性佈局的使用 2.掌握樣式的使用 3.掌握如何對程式進行國際化 實驗環境 裝有Android開發環境的計算機 實驗任務 任務:手機資訊頁面 實驗目的介面 執行效果介面

USB小白學習2端點IN/OUT互換

speed 9.png 現在 script des 裏的 宋體 dir info 端點2(out)和端點6(in)的out_in互換 註:這裏的out和in都是以host為標準說的,out是host的out,在設備(Cy7c68013)這裏其實是輸入端口;in是host的i

Python學習2——Python種類介紹

VM 種類 廣泛 分享 java字節碼 流程 字節碼 基礎上 python Python的種類 Cpython Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然後運行在Python虛擬

Panda的學習2——pandas選擇數據

定義 對比 pan panda pri 學習之路 進行 strong 比較 首先定義panda dates=pd.date_range(‘20130101‘,periods=6) # print(dates) df=pd.DataFrame(np.arange(24).r

LTE學習2——概述

【LTE的設計目標】 頻寬靈活配置:支援1.4MHz, 3MHz, 5MHz, 10Mhz, 15Mhz, 20MHz 峰值速率(20MHz頻寬):下行100Mbps,上行50Mbps 控制面延時小於100ms,使用者面延時小於5ms 能為速度>350km/h的

ESP8266 WIFI模組學習2——模組與微控制器連線進行遠端操作

上一個部落格:ESP8266 WIFI模組學習之路(1)是關於對串列埠連線的,簡單驗證ESP8266是怎麼樣連線及其功能驗證,下面將通過微控制器連線,和手機進行遠端操作。 ESP8266和微控制器的連線,我這裡的微控制器型號為:STC12C5A60S2 ESP8266

Sklearn學習2——圍繞評估器轉換器展開討論

1. 寫在前面 在上一講中,我們對於Sklearn框架有了一個較為直觀的認識,但是對於其中的細節部分,可能還是不知甚解。這次,我們將會詳細的介紹其中的一些知識,包括:Sklearn版本注意事項、最基本的評估器與轉換器、fit、transform與fit_tra

Common lisp 學習2

相關快捷鍵 C-x C-f 建立檔案 C-c C-c 編譯函式 C-c C-z(C-x b) 進入命令列 C-c C-s 儲存檔案 M-x slime 開啟一個命令列 相關命令之理解: (list :a 1 :b 2 :c 3)其中list相當與宣告一種資料結構,:a相當於

es6學習2:作用域,不存在變數提升,避免暫時性死區,與全域性物件的屬性脫鉤

1、ES6 新增了let命令,用來宣告變數。它的用法類似於var.        const宣告一個只讀的常量。一旦宣告,常量的值就不能改變.const宣告的變數不得改變值,這意味著, const 一旦宣告變數,就必須立即初始化,不能留到以後賦值。     這2個都是在所在

ZooKeeper學習 ZooKeeper設計特點及典型應用場景

目錄 正文 回到頂部 ZooKeeper 特點/設計目的 ZooKeeper 作為一個叢集提供資料一致的協調服務,自然,最好的方式就是在整個叢集中的 各服務節點進行資料的複製和同步。 資料複製的好處 1、容錯:一個節點出錯,不至於讓整個叢集無法提供服務

Android破解學習十三—— 另類的破解VIP思路

前言 一般按照以往,我們想要獲得某個軟體的VIP,一般是通過修改支付寶的支付流程,原本購買失敗的,我們修改程式碼,從而使得失敗變成了成功,不花費金錢 另類思路 有些軟體將判斷使用者是否為VIP的程式碼寫在了本地,這樣我們就可以修改這個程式碼獲得VIP,注意是有些軟體,並不是所有 判斷VIP也是一個簡單

Android破解學習—— 我們戀愛吧 三色繪戀 二次破解

前言 好久沒有寫破解教程了(我不會告訴你我太懶了),找到一款戀愛遊戲,像我這樣的宅男只能玩玩戀愛遊戲感覺一下戀愛的心動了。。 這款遊戲免費試玩,但是後續章節得花6元錢購買,我怎麼會有錢呢,而且身在吾愛的大家庭裡,不破解一波怎麼對得起我破解渣渣的身份呢! 喲,還是支付寶購買的,直接9000大法,但是破解的時候沒

ABP框架asp.net core 2.X+Vue模板專案學習

      前言:   第一次接觸ABP的專案是在2018年6月份,但是當時沒有深入具體的研究,而今天因為工作的需要,需要學習、瞭解這個框架,在時隔半年之後,今天重新下載了這個專案,雖然在園子裡有很多前輩們寫的這類的文章,但是我還是會在部落格園中記錄一下學習的過程,一是希

react學習2.2-----資料傳遞props(子傳父級),context

react學習之路,資料傳遞(props,context); 再講props子父級之前,先學習一下context這個非常NB的資料接收容器,如何正確的使用,接下來為大家介紹, 用它之前,我們必須要知道有個叫prop-types的東西,從英文我們就知道意思就是叫我們定義資料型

Struts2 學習2.2 完成簡單的統計使用者線上人數小功能

實時更新使用者線上人數(通過將使用者人數資料放入application的域屬性裡實現) 使用者登入後,顯示使用者名稱和當前線上人數+1 使用者登出後,當前線上人數-1 程式碼 1.前臺請求頁面

組合語言學習7------------輸入10進位制數,將其轉換為2進位制數,存放在ax中,再將其轉換為ASCII碼並輸出

data segment        inf1 db "please input a number(1-361):$"        ibuf db 7,0,6 dup(0)        obuf db 6 dup(0)        data ends        c

我的android多執行緒程式設計2RxJava Schedulers原始碼分析

寫在伊始 上一篇介紹了執行緒的一些基礎知識和工作這麼久以後對於多執行緒部分的使用經驗之路,這篇主要對RxJava執行緒控制部分進行分析。 RxJava(本文就RxJava2.0分析) 說實話,近一年多一直在用rxjava進行專案架構的編寫及封裝及一些非

AI學習10: 張量的常量2

tf.fill(dims, value, name=None)建立一個張量填充指定的常數。引數:dims: 整數型別的列表物件,或者一維張量,表示行列形式。value: 填充的常量(0維張量)返回值:填充指定的張量常量。例子:#python 3.5.3 蔡軍生 #htt

Android外掛化學習使用外掛中的R資源

res裡的每一個資源都會在R.java裡生成一個對應的Integer型別的id,APP啟動時會先把R.java註冊到當前的上下文環境,我們在程式碼裡以R檔案的方式使用資源時正是通過使用這些id訪問res資源,然而外掛的R.java並沒有註冊到當前的上下文環境,所

Android 學習原始碼網站及書籍

Android 開源專案分類彙總 https://github.com/Trinea/android-open-project Android官方培訓課程中文版(v0.9.5) http://hukai.me/android-training-course-in-chin