3G視線 -- 專注手機(jī)軟件開發(fā)
原文出處
http://www.3geye.net/?uid-3-action-viewspace-itemid-111
對(duì)于自定義UI的設(shè)計(jì),涉及到的工作量是很大的,有時(shí)候往往要實(shí)現(xiàn)一種UI效果而花費(fèi)大量的時(shí)間去思考,找路子,然后實(shí)踐,運(yùn)氣好的話,自然OK,運(yùn)氣不好,那就很慘了。浪費(fèi)時(shí)間,還沒有效果。
不過還好有很多前輩總結(jié)出了一些方法跟代碼,下面就讓我們來看下,
顏色漸變效果的實(shí)現(xiàn)吧。實(shí)踐了這么,感覺就這個(gè)代碼比較好,顏色漸變的比較平滑。很舒服。
下面是效果圖

下面是實(shí)現(xiàn)代碼,大家可以參考下,也許還有更優(yōu)化的設(shè)計(jì)呢。
下面代碼也是從Intenet來的,只是修改了下。
/**
* 繪制漸變色選擇條
* @param g
* @param color
* @param x
* @param y
* @param width
* @param height
*/
public final static void drawShadeRect(Graphics g, int color, int x , int y, int width, int height){
int[] rgb = getShadeColor(color, width);
for (int by = y; by < y + 20; by += 4)
{
int nTemp = y + 20 - (by - y);
nTemp = nTemp>4 ? 4:nTemp;
g.drawRGB(rgb, 0, width, x, by, width,
nTemp, true);
}
}
/**
* 獲取顏色漸變RGB數(shù)組,
* 為了獲取這個(gè)數(shù)據(jù),而又跟CLDC1.0兼容,導(dǎo)致項(xiàng)目增加了一個(gè)Float類
* 導(dǎo)致程序變大
* @param width
* @return
*/
public final static int[] getShadeColor(int color , int width){
int[] rgb;
int shadeWidth = width;
int nRgbData = shadeWidth * 4;
rgb = new int[nRgbData];
int alpha = -127;
for (int i = 0; i < shadeWidth; i++)
{
alpha = -127 + i;
//主要算法在這里。
int col = color | (128 - alpha << 24);
rgb[i] = col;
rgb[i + shadeWidth ] = col;
rgb[i + shadeWidth * 2] = col;
rgb[i + shadeWidth * 3] = col;
}
return rgb;
}
就兩個(gè)靜態(tài)方法很簡單的。哈