1. 程式人生 > >android自定義控制元件(組合控制元件)相關

android自定義控制元件(組合控制元件)相關

自定義元件及根據需求定義符合要求的控制元件

自定義控制元件流程:

一、繼承相應View,如:TextView  ImageView; 組合控制元件一般繼承ViewGroup,如:LinearLayout etc.

二、構造方法:

public ArrowIndicatorView(Context context){this(context, null);}//該構造方法在程式碼中new該控制元件時呼叫
public ArrowIndicatorView(Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, 
0); } public ArrowIndicatorView(Context context, @Nullable AttributeSet attrs, int defStyleAttr)
{super(context, attrs, defStyleAttr);
}
後兩個構造方法是在xml檔案中使用該控制元件時呼叫。
1、構造方法相關引數:
context:一般獲取的是Activity;
AttributeSet:與XML文件中的標籤相關聯的屬性集合,指android系統提供的屬性??
int defStyleAttr:定義的風格屬性??該屬性一般用不到
三、自定義該控制元件的屬性:如尺寸大小等,用於在xml檔案中控制該控制元件(耦合度??)
(這一步不是必須的,若無自定義屬性,就不用這一步)
1、在res/values/路徑下,新建attrs.xml檔案(若無此檔案)
2、在declare-styleable標籤下定義控制元件屬性:		
<declare-styleable name="ArrowIndicatorView">
    <attr name="triangleHeight" format="dimension"/>
</declare-styleable>
第一個name為自定義的控制元件名稱
<attr 後的name為屬性名,format為屬性型別
3、在控制元件類中取得自定義屬性:
TypedArray array = context.obtainStyledAttributes(attrs
, R.styleable.ArrowIndicatorView);
Drawable bg_tab = array.getDrawable(R.styleable.ArrowIndicatorView_tabsBackground);
array.recycle();

使用TypeArray獲取自定義屬性,obtainStyledAttributes的第二個屬性為attrs.xml檔案中定義的name?

獲取屬性用 array.getAttrbuteName()方法

TypeArray使用完畢後,必須呼叫recycle()方法回收TypeArray,為給下一呼叫者使用??

四、 組合控制元件,新增元件有兩種方式:

1、首先new相應控制元件,並設定必要屬性,最後使用addView()向ViewGroup內部新增元件

eg:

View view = new View(getContext());
LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, (int) triangleHeight);view.setLayoutParams(params);
addView(view);

2、獲取自定義屬性時使用方法:obtainStyledAttributes(@StyleRes int resid, int[]attrs)

第一個引數為:layout.xml檔案的Id,第二個屬性為attrs.xml檔案中定義的name?

五、橫豎屏時的儲存和恢復資料(若需要)

1、儲存資料過載(??)onSaveInstanceState()方法

2、恢復資料過載onRestoreInstanceState(Parcelable state)方法

六、自定義View時,用到的方法可能有:

1、onMeasure測量尺寸

2、onLayout在View中的位置?

3、onDraw最常用到

七、若有其他需要,可複寫相應方法,涉及到的點有:

1、事件分發機制:攔截相應事件

2、外部介面:為內部元件設定事件監聽時,若有需要,則自定義介面,暴露給控制元件使用者

相關推薦

Android定義View之組合控制元件 ---- LED數字時鐘

先上圖 LEDView效果如圖所示。 之前看到一篇部落格使用兩個TextView實現了該效果,於是我想用自定義控制元件的方式實現一個LEDView,使用時即可直接使用該控制元件。 採用組合控制元件的方式,將兩個TextView疊放在一起,再使用digital-7.ttf字

Android定義View--翻書控制元件(一)

0.前言 最近重看了一遍封神演義,感覺QQ閱讀那個翻書的效果挺好的,準備做一個。上週五下午用了兩個小時只寫了一部分功能,以後有時間再完善 1.分析 先看效果圖 這個空間,說簡單也簡單,說難也難,簡單就在於這個效果主要就是依賴canvas的clippath才見到部分canvas,難就難在裁

android 定義鍵盤輸入密碼控制元件

直接上程式碼 public class PwdInputView extends RelativeLayout { private Context mContext; private GridView

Android定義多TAB懸浮控制元件實現蘑菇街首頁效果

說明: 1.viewpager不能左右滑動; 2.轉載時程式碼略有改動(注:修復tab控制元件不能自動滑動的問題); 3.原始碼下載後不能直接執行,經過調整此問題已經修復。 核心程式碼: package com.Imy.Fuli.Fra

【安卓筆記】定義view之組合控制元件

組合控制元件即將若干個系統已有的控制元件組合到一塊形成一個組合控制元件,比如帶返回按鈕的標題欄就是一個最簡單的組合控制元件。 使用組合控制元件的好處是提高程式碼的複用性,一處定義多處使用。 下面我們

Android 定義圓環倒計時控制元件

先來一張最終效果圖:主要思路: 在畫漸變色圓環的時候,設定一個屬性動畫,根據屬性動畫的執行時長,來作為倒計時的時長.監聽屬性動畫的進度,來達到 倒計時的目的.二話不說,直接貼程式碼.具體實現思路都在註釋上.自定義屬性:<declare-styleable name="C

Android定義View之-----日曆控制元件

寫在前面 Android的系統的日曆控制元件十分簡陋,在專案中拿不出手啊,這也許就是蘋果和Android的顯式區別:系統控制元件美觀合理,各App統一,最後App和系統風格統一;而Android由於長相上先天不足,當然自從有了MD之後也十分fashion了

Android定義實現迴圈滾輪控制元件WheelView

首先呈上效果圖 現在很多地方都用到了滾輪佈局WheelView,比如在選擇生日的時候,風格類似系統提供的DatePickerDialog,開源的控制元件也有很多,不過大部分都是根據當前專案的需求繪製的介面,因此我就自己寫了一款比較符合自己專案的WheelView。 首先

android-定義組合控制元件(EditText+選項)

一.前言 在開發中,或許一個業務需求中會出現很多系統控制元件組合成的佈局,並且經常需要複用。比如在一個表單中,裡面有個編輯框EditText右側還需要有個選項卡按鈕,需要有編輯框的輸入功能也需要有右側選項卡的點選事件,同時這兩個控制元件也存在一定關聯,且在一個介

android:定義view--組合控制元件

專案中用到了很多類似的介面,一行左右兩邊都是顯示文字,數量非常多; 如果按照普通的方法畫肯定也能非常輕鬆的畫出來,但是因為使用地方較多,為了後期維護,程式碼的簡介,提高開發效率,簡單易用等等:可以自定義一個組合控制元件; 自定義組合控制元件使用起來非常方便,建立也非常的簡

android 定義組合控制元件 頂部導航欄

    在軟體開發過程中,經常見到,就是APP 的標題欄樣式幾乎都是一樣的,只是文字不同而已,兩邊圖示不同。為了減少重複程式碼,提高效率, 方便大家使用,我們把標題欄通過組合的方式定義成一個控制元件。 例下圖:                                

Android定義xml屬性,定義組合控制元件

原文連結  本文是在“劍蕭舞蝶”的“Android中View自定義組合控制元件的基本編寫方法”的基礎上進行修正而來的。按照原作者的說發和程式碼來寫自定義控制元件,結果使用的時候出了不少問題。我之前對於這塊完全沒有去接觸,又看到有人說網上的例子都是大同小異,很多細節也沒有說清

Android定義控制元件——定義組合控制元件

       前面幾篇博文介紹了Android如何自定義控制元件,其實就是講一下如何“從無到有”的自定義一個全新的控制元件,繼承View或者繼承ViewGroup,複寫其相關方法,這種自定義控制元件的方式相對來說難度較大,而且並不是所有需要新控制元件的情況下,都要這樣進行

android定義控制元件(組合控制元件)相關

自定義元件及根據需求定義符合要求的控制元件 自定義控制元件流程: 一、繼承相應View,如:TextView  ImageView; 組合控制元件一般繼承ViewGroup,如:LinearLayout etc. 二、構造方法: public ArrowIndicatorV

Android定義組合控制元件之實現CheckBox變化

前言:自定義組合控制元件最大的好處就是複用性,可以為我們節省不少程式碼量,但是一般我們自定義組合控制元件的時候,封裝出來的控制元件不管是自己用還是別人用也好,封裝的程式碼最好是易讀性強,便於修改,沒有必要封裝太多的屬性,一般控制在兩三個屬性為最佳,畢竟我們不是Google.

Android定義控制元件系列 十:利用新增定義佈局來搞定觸控事件的分發,解決組合介面中特定控制元件響應特定方向的事件

        這個例子是比較有用的,基本上可以說,寫完這一次,以後很多情況下,直接拿過來addView一下,然後再addInterceptorView一下,就可以輕輕鬆鬆的達到組合介面中特定控制元件來響應特定方向的觸控事件了。         在寫Android應用

Android進階——定義View之組合系統控制元件實現水珠形狀的ItemView

引言 相信大家在專案開發的過程中一定會有不少需要在上方顯示一張圖片,而在其下方顯示提示標題的效果,作為一個介面的功能按鈕或者單純作為一個列表的item項,尤其是當這個item還需要顯示一些動畫效果時候,此時更應該當成一個整體,否則動畫效果就會需要額外的調整,否

Android定義view組合控制元件解析

##使用場景 在開發中,或許一個業務需求中會出現很多系統控制元件組合成的佈局,並且經常需要複用。 比如下圖中 qq或者微博的title欄,在一款app中,可能不同的介面 類似的view要出現很多次,這個時候 就可以設計自己的view控制元件,就稱為組合控制元件

Android定義控制元件---組合控制元件(包括定義屬性)

今天和大家分享下組合控制元件的使用。很多時候android自定義控制元件並不能滿足需求,如何做呢?很多方法,可以自己繪製一個,可以通過繼承基礎控制元件來重寫某些環節,當然也可以將控制元件組合成一個新控制元件,這也是最方便的一個方法。今天就來介紹下如何使用組合控制元件,

android 定義組合控制元件

1.要實現這個效果,用多個控制元件組合起來,要用到自定義控制元件 程式碼實現 1.自己寫一個佈局檔案 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android