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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

003 Android之线性布局与基础控件

發布時間:2025/3/21 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 003 Android之线性布局与基础控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • Android快速入門三步
    • 布局介紹
      • LinearLayout布局屬性
      • 代碼示例
    • 基礎控件
      • TextView和EditText
        • 使用TextView與EditText
      • ImageView
        • ImageView屬性
        • 使用ImageView
      • Button與ImageButton
        • Button與ImageButton的使用
        • RadioButton和CheckBox
      • 四種按鈕響應方式
      • onClick事件
        • 監聽事件實現方式-內部類實現接口
        • 監聽事件實現方式-匿名內部類方式
        • 監聽事件實現方式-外部類方式
      • 電話本小例子
        • 界面設計
        • 完成打電話功能
        • 完成短信發送功能
        • SmsManager

Android快速入門三步

  • 畫界面-操作的是資源(布局 字符串 控件等)
  • 響應界面(寫代碼)-操作的是Android封裝的類對象
  • 打包運行(編譯代碼生成程序)-SDK工具包
  • 布局介紹

    • 當界面有多個控件時,需要按照需求將他們擺放
    • 布局就是用來安排他們內部控件所在位置
    • 這時布局也稱為容器,可以稱為父控件
    • 布局內部的控件被稱為布局的子控件
    • 一個布局也可以稱為另一個布局的子控件

    Android基礎布局

  • LinearLayout(線性布局) 將內容按照一列或者一行擺放
  • RelativeLayout(相對) 子控件相互依賴而決定位置
  • FrameLayout(幀布局)默認不做加工
  • TableLayout(表格) 包含若干列若干行組成
  • GridLayout(網格) 如同單元格一樣
  • ConstraintLayout(約束布局)
  • 對于安卓開發來說,以上的所有布局都需要能熟練掌握,但是對于安卓逆向來說,只需要會最簡單的LinearLayout就足夠了。

    LinearLayout布局屬性

    設置方向

    android:orientation="horizontal" 設置方向,horizontal代表水平,vertical代表垂直,默認值horizontal

    設置寬度和高度

    屬性:layout_width="wrap_content" 內容多大就是多大 match_parent 與父控件一致 屬性:layout_height="wrap_content" 內容多大就是多大 match_parent 與父控件一致

    設置控件位置

    android:gravity="right"

    設置自身在父布局的權重

    android:layout_weight="1"

    內邊距和外邊距

    padding指的是內邊距:控件內部內容與控件的邊距 margin指的是外邊距 控件與子控件的邊距

    代碼示例

    <?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:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn1"android:text="開始游戲"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn2"android:text="游戲設置"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn3"android:text="結束游戲"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

    實際效果如圖:

    基礎控件

    TextView和EditText

    TextView常見屬性

    屬性說明
    android:id控件的ID
    android:layout_width控件寬度
    android:layout_height控件的高度
    android:text文本內容
    android:textSize文本大小
    android:textColor文本顏色
    android:background控件背景

    EditText常見屬性

    屬性說明
    android:id控件的ID
    android:layout_width控件寬度
    android:layout_height控件的高度
    android:text文本內容
    android:textSize文本大小
    android:textColor文本顏色
    android:background控件背景
    android:hint輸入提示的文本
    android:inputType輸入文本類型

    使用TextView與EditText

  • 新建一個工程
  • 刪除默認生成的activety_main.xml中的內容
  • 新添加一個layout
  • 新添加一個TextView和EditText并設置屬性,代碼如下:
  • <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="horizontal"android:layout_margin="5dp"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="牛人:"android:textSize="18dp" /><EditTextandroid:id="@+id/edt1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:hint="請在此輸入您的大名"/></LinearLayout>
  • 將入口類中默認加載的layout修改為新建的layout
  • 實際效果如圖:

    ImageView

    ImageView屬性

    屬性說明
    android:src="@drawable/ic_launcher"ImageView的內容圖像
    android:background="@drawable/ic_launcher"ImageView背景圖片
    android:background="#0000ff"ImageView的RBG顏色

    使用ImageView

    <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:layout_gravity="center"android:src="@mipmap/ic_launcher"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:layout_gravity="center"android:src="@mipmap/ic_launcher"android:background="@drawable/3"android:layout_width="wrap_content"android:layout_height="wrap_content" /> </LinearLayout>

    Button與ImageButton

    Button與ImageButton特征

    共有特征:都可以作為一個按鈕產生點擊事件

    不同點:Button有text屬性,ImageButton沒有;ImageButton有src屬性,Button沒有

    Button與ImageButton的使用

    <Buttonandroid:id="@+id/btn1"android:text="我是一個按鈕"android:layout_width="match_parent"android:layout_height="wrap_content" /><ImageButtonandroid:src="@drawable/1"android:layout_width="match_parent"android:layout_height="wrap_content"/>

    RadioButton和CheckBox

    代碼示例:

    <RadioGroupandroid:layout_width="wrap_content"android:layout_height="wrap_content"><RadioButtonandroid:id="@+id/rbtn1"android:text="單選框1"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RadioButtonandroid:id="@+id/rbtn2"android:text="單選框2"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RadioGroup><CheckBoxandroid:id="@+id/cbtn1"android:text="復選框"android:layout_width="wrap_content"android:layout_height="wrap_content" />

    響應事件

    RadioButton rbtn1=findViewById(R.id.rbtn1);//rbtn1.setChecked(true);rbtn1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {Toast.makeText(MainActivity.this,"單選框改變",Toast.LENGTH_LONG).show();}});CheckBox chbox=findViewById(R.id.cbtn1);chbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {Toast.makeText(MainActivity.this,"復選框改變",Toast.LENGTH_LONG).show();}

    四種按鈕響應方式

    了解了基礎控件的使用,接下來還需要掌握四種按鈕的響應事件

    onClick事件

    <Buttonandroid:id="@+id/btn1"android:onClick="onClick1"android:text="我是一個按鈕"android:layout_width="match_parent"android:layout_height="wrap_content" />

    添加一個onClick屬性,綁定onClick1方法

    按Alt+Enter鍵

    會自動在MainAvtivity中創建響應事件,在函數里面編寫響應代碼即可

    監聽事件實現方式-內部類實現接口

    首先創建按鈕控件

    <Buttonandroid:id="@+id/btn2"android:text="按鈕2"android:layout_width="match_parent"android:layout_height="wrap_content" />

    接著在入口類中編寫代碼,首先獲取按鈕對象

    Button btn2=findViewById(R.id.btn2);

    然后設置監聽事件

    //1.2 設置監聽事件//參數是一個接口 傳入的參數應該是實現了這個接口的對象btn2.setOnClickListener();

    由于setOnClickListener的參數是一個接口,所以我們需要一個實現了這個接口的對象

    創建類,實現View.OnClickListener接口

    public class MyOnClickListener implements View.OnClickListener{@Overridepublic void onClick(View view) {//這里是響應代碼Toast toast=Toast.makeText(MainActivity.this,"按鈕2",Toast.LENGTH_LONG);}}

    最后傳入實現了接口的對象

    btn2.setOnClickListener(new MyOnClickListener());

    監聽事件實現方式-匿名內部類方式

    首先獲取控件對象

    Button btn3=findViewById(R.id.btn3);

    接著設置監聽事件

    btn3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast toast=Toast.makeText(MainActivity.this,"按鈕3",Toast.LENGTH_LONG);toast.show();}});

    由于監聽事件為匿名類,所以可以直接在括號內寫實現代碼

    監聽事件實現方式-外部類方式

    獲取按鈕對象并設置響應事件

    //3.外部類方式Button btn4=findViewById(R.id.btn4);btn4.setOnClickListener(this);

    然后重寫Onclick方法

    @Overridepublic void onClick(View view) {}

    即可綁定按鈕事件

    電話本小例子

    界面設計

    接著我們通過一個電話本的例子,深刻了解整個安卓開發過程。首先設置打電話的一個文本框和按鈕

    //文本框<EditTextandroid:id="@+id/edit1"android:inputType="phone"android:hint="請在此輸入電話號碼"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn1"android:text="打電話"android:onClick="OnCall"android:layout_width="match_parent"android:layout_height="wrap_content" />

    接著設置發短信的文本框和按鈕

    <EditTextandroid:id="@+id/edit2"android:inputType="textMultiLine"android:minLines="6"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn2"android:text="發短信"android:onClick="OnSendMsg"android:layout_width="match_parent"android:layout_height="wrap_content" />

    并分別給兩個按鈕綁定OnClick事件,界面效果如圖:

    完成打電話功能

    實現思路:

    接著完成打電話的OnClick函數。程序本身無法做到打電話這個功能,需要向系統發出請求。android中與其他應用打交道,需要用到Intent。打電話這個操作,本質上就是與系統中的電話應用進行通信。

    我們需要做的就是使用Intent對象完成打電話這個動作,并且將電話號碼發送給電話應用,具體步驟如下:

  • 創建一個Intent對象
  • 設置打電話動作
  • 打包數據,放入Intent
  • 根據Intent對象啟動對應的Activety
  • 代碼如下:

    public void OnCall(View view) {//獲取電話號碼EditText text=findViewById(R.id.edit1);String phonenum=text.getText().toString();//創建Intent對象Intent intent=new Intent();//設置打電話動作intent.setAction(Intent.ACTION_CALL);//打包數據 放入IntentUri uri=Uri.parse("tel:"+phonenum);intent.setData(uri);//根據Intent啟動ActivitystartActivity(intent);}

    接著在Manifest.xml文件中加上電話權限相關代碼

    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

    這樣就完成了打電話的完整功能。

    完成短信發送功能

    實現思路:

    編寫短信發送和電話撥號有所不同,Android SDK提供了短信發送器用于操作短信

    SmsManager類用于管理發送短信。

    有了這個知識之后,我們可以把短信發送器分為幾步:

  • 設置按鈕監聽器,在監聽器中調用發短信方法
  • 發短信分為
  • 獲取號碼和文本內容
  • 獲取短信管理器對象
  • 拆分文本內容
  • 發送短信
  • 需要注意的是,發送短信也需要權限

    SmsManager

    SmsManager用于管理短信,發送短信,獲取這個類的對象需要調用類的靜態成員方法getDefault()

    SmsManager類中其他幾個方法:

    方法名功能
    devideMessage(String text)拆分短信,一條短信最大70個中文
    getDefault()獲取短信管理器對象
    sendMultipartTextMessage發送多條短信
    sendTextMessage發送短信

    完成短信發送步驟如下:

  • 首先獲取電話號碼和短信內容
  • //獲取電話號碼EditText text=findViewById(R.id.edit1);String phonenum=text.getText().toString();//獲取短信內容EditText text2=findViewById(R.id.edit2);String content=text2.getText().toString();
  • 獲取SMS管理器對象
  • //獲取SMS管理器對象 SmsManager sms=SmsManager.getDefault();
  • 拆分短信
  • //拆分短信 ArrayList<String> str=sms.divideMessage(content);
  • 發送短信
  • //發送短信 sms.sendMultipartTextMessage(phonenum,null,str,null,null);
  • 獲取權限
  • <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>

    這樣就完成了發短信的功能了,實際效果如圖:

    總結

    以上是生活随笔為你收集整理的003 Android之线性布局与基础控件的全部內容,希望文章能夠幫你解決所遇到的問題。

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