安卓學習心得二 自定義ViewGroup

2021-07-10 19:22:56 字數 2588 閱讀 2485

android的ui介面都是由view和viewgroup及其派生類組合而成的。

其中,view是所有ui元件的基類,而 viewgroup是容納這些元件的容器,viewgroup是view的子類,.所以它也具有view的特性,但它主要用來充當view的容器,將其中的view視作自己的孩子,對它的子view進行管理,當然它的孩子也可以是viewgroup型別

view物件是android平台中使用者介面體現的基礎單位。像我們常用的textview、button、imageview之類的ui控制項都是屬於view,這些被稱為「widgets(工具)」。

viewgroup類同樣為其被稱為「layouts(布局)」的子類奠定了基礎,它們提供了像linearlayou、relativelayout之類的布局架構。

最重要的是要理解安卓view的繪製過程

有關view的繪製流程,大家可以去網上查詢資料。

本文中自定義viewgroup效果如下

有如下優點:

1.在不同的activity中可以復用該檢視,更易維護

2.開發者可以使用自定義屬性來定製viewgroup中子檢視的位置

3.布局檔案更簡明,更容易理解

4.如果需要修改margin,不必重新手動計算每個子檢視的margin

步驟

1.建立attrs屬性宣告檔案

2.指定預設間距這是為了在未指定上述兩個屬性時,使用預設的大小。在dimens.xml檔案中新增即可。

10dp

10dp

3.建立自定義layoutparams

package cn.king.demo.view;

import android.content.context;

import android.util.attributeset;

import android.view.viewgroup;

/** * 自定義的layoutparams,用來儲存每個子檢視的x軸和y軸的位置

*/public class layoutparams extends viewgroup.layoutparams

public layoutparams(int width, int height)

public layoutparams(viewgroup.layoutparams source)

}

4.建立自定義viewgroup關鍵是onmeasure和onlayout

package cn.king.demo.view;

import android.content.context;

import android.content.res.typedarray;

import android.util.attributeset;

import android.view.view;

import android.view.viewgroup;

import cn.king.demo.r;

/** * 自定義viewgroup

*/public class customlayout extends viewgroup catch (exception e) finally

}@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

width += getpaddingright();

height += getchildat(getchildcount() - 1).getmeasuredheight() + getpaddingbottom();

//使用計算所得的寬高設定整個布局的測量尺寸

setmeasureddimension(resolvesize(width, widthmeasurespec), resolvesize(height, heightmeasurespec));

}@override

protected void onlayout(boolean changed, int l, int t, int r, int b)

}@override

public layoutparams generatelayoutparams(attributeset attrs)

@override

protected layoutparams generatelayoutparams(layoutparams p)

}

5.建立布局檔案

<?xml version="1.0" encoding="utf-8"?>

安卓自定義屬性運用

1.reference 參考某一資源id。1 屬性定義 background format reference 2 屬性使用 android layout width 42dip android layout height 42dip android background drawable id 2...

安卓開發學習心得 ListView基礎

listview基本步驟 1.建立listview 2.新建介面卡 3.介面卡新增資料來源 如用到雜湊表,需將表新增到資料來源 4.listview連線介面卡 1.arrayadapter的三個引數 上下文 布局檔案 大多數時可使用安卓自帶的布局檔案 android.r.layout.資料來源 每行...

安卓自定義view繪製尺寸

我們知道view在螢幕上顯示出來要先經過measure和layout.在呼叫onmeasure int widthspec,int heightspec 方法時,要涉及到measurespec的使用,measurespec有3種模式分別是unspecified,exactly和at most,那麼這...