編輯:關於Android編程
話不多說先上圖:
類似於這樣的效果,很簡單。這是一個listview,item是自定義的view,有兩個特點:
傳入長度,動態改變柱狀圖的長度;根據長度改變色值,長度越長越紅,反之越黃。
用到的知識點無非是paint在canvas上畫圖,這裡不贅述,想了解但是不了解的童鞋可以看我上一篇日志。
在這裡最想提到的一點是關於Android命名空間的使用。
是怎麼想到的呢,我發現當我想往自定義的view中傳入一個值如果按照常規的方式,只能使用setXXX()方法,但這個前提是此view對象已經被創建出來而且需要主動調用setXXX方法。怎麼樣才能在初始的時候就能像構造方法一樣根據給定的值創建這個View呢?因為view的使用是在xml中使用的,不能去調用構造方法。那我們怎麼辦呢,這時候就需要使用命名空間了。也就是像xml中android:layout_height=20dp這樣給view賦值一樣,這是二級結構的前面的android就是命名空間,只不過這個是android自己的而已。我們需要做的就是自己定義一個命名空間,我們可以拿過來用。
一、創建一個attrs.xml
like this,declare-styleable,顧名思義,聲明一個styleable類型,在我們下面的java代碼中,我們還需要從這裡邊將屬性取出來。
這裡我們定義了兩個int值:bar_height,bar_width,一個字符串值text。在下面我們馬上就能用到它們。
二、布局文件中
xmlns:myxmlns=http://schemas.android.com/apk/res/com.example.simple android:layout_width=wrap_content android:layout_height=match_parent > myxmlns:bar_height=40 >
這是listview中作為item的view,注意紅色部分,xmlns:myxmlns=http://schemas.android.com/apk/res/com.example.simple。使用的規則為,首先定義命名空間xmlns:namespace-prefix=namespaceURI。Android中xml中的使用是:xmlns:前綴=http://schemas.android.com/apk/res/ 應用程序包路徑;然後使用的時候按格式:namespace-prefix(前綴):屬性
myxmlns可以隨便寫,但要與下面的保持一致。這裡我們就可以使用在上面的attrs.xml中定義的屬性了,包括bar_height,bar_width,text等等上面你自定義的屬性。
三、在代碼中使用上面我們預設的屬性
public BarChartView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BarChartView); chartHeight = a.getInt(R.styleable.BarChartView_bar_height, 20); chartWidth = a.getResourceId(R.styleable.BarChartView_bar_width, 10); a.recycle(); chartHeight = DisplayUtils.Dp2Px(context, chartHeight); }
這樣我們的目的就達到了,使用了xml中預設的屬性,不用再使用setXXX方法去傳遞view中的參數。
開發這個程序之前先解釋一下,為什麼Toast信息提示框在顯示一定時間後會自動消失?因為在Android系統中有一個Toast隊列,系統會依次從這個隊列中取出一個Toast
1.概述 最近一直到在帶實習生,因為人比較多,所以很長一段時間沒有更新博客了,今天更新一篇雷達掃描附近好友效果,以後盡量每周更新一篇,先看一下效果: 2.實現 1、效果
最近心血來潮,寫了一個自定義仿iPhone的開關。有需要的同學可以來下載啦。支持點擊自動滾動,速率可以自己根據需要修改。觸摸滾動,大小自定義,支持修改樣式。就不錄制動畫,
寫在前言的話:博主的身份如昵稱所寫(java培訓中的菜雞,對編程有興趣,自學android);此博客所有文章就是博主自己從網上學習,自己實踐後的理解,如有不對的地方歡迎指