android輪廓
A. android圖像繪制——畫布保存為圖片
解釋:
1、首先創建一個Bitmap圖片,並指定大小;
2、在該圖片上創建一個新的畫布Canvas,然後在畫布上繪制,並保存即可;
3、需要保存的目錄File,注意如果寫的目錄如「/sdcard/akai/」如果不存在的話,要先創建(file.mkdirs()),否則FileOutputStream會報錯No found;
4、需要添加許可權:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
什麼是畫布呢 其實通過字面意思的理解就是用來繪畫的地方,那麼android里的畫布是神馬樣子的呢?
在自定義畫布中常用到下面3個類
Canvas
這些繪圖方法中的每一個都需要指定一個Paint對象來渲染它
Paint
Paint也稱為"刷子",Paint可以指定如何將基本圖形繪制到點陣圖上。
Paint類相當於一個筆刷和調色板。它可以選擇如何使用上面描述的draw方法來渲染繪 制在畫布上的基本圖形。通過修改Paint對象,可以在繪圖的時候控制顏色、樣式、字體和特殊效果。最簡單地,setColor可以讓你選擇一個Paint的顏色,而Paint對象的樣式(使用setStyle控制)則可以決定是繪制繪圖對象的輪廓(STROKE),還是只填充每一部 分(FILL),或者是兩者都做(STROKE_AND_FILL)除了這些簡單的控制之外,Paint類還支持透明度,另外,它也可以通過使用各種各樣的陰影、過濾器和效果進行修改,從而提供由更豐富的、復雜的畫筆和顏料組成的調色板。
從繼承View類(或其子類)開始,並定義onDraw()回調方法。系統會調用該方法來完 成View對象自己的繪制請求。這也是通過Canvas對象來執行所有的圖形繪制調用的地方,這個Canvas對象是由onDraw()回調方法傳入的。
Android框架只在必要的時候才會調用onDraw()方法,每次請求應用程序准備完成圖形 繪制任務時,必須通過調用invalidate()方法讓該View對象失效。這表明可以在該View 對象上進行圖形繪制處理了,然後Android系統會調用該View對象的onDraw()方(盡 管不保證該回調方法會立即被調用)。
在定製的View組件的onDraw()方法內部,使用給定的Canvas對象來完成所有的圖形繪制處理(如Canvas.draw…()方法或把該Canvas對象作為參數傳遞給其他類的draw() 方法)。一旦onDraw()方法被執行完成,Android框架就會使用這個Canvas對象來繪制一個有系統處理的Bitmap對象。
下面是Paint一些常用方法:
Bitmap
Bitmap繪圖的表面也稱點陣圖(這里詳細說哈點陣圖的功能)。
從資源中獲取點陣圖:
通過Resource的函數:InputStream openRawResource(int id)獲取得到資源文件的數據流後,可以通過2種方式獲得bitmap
使用BitmapDrawable :
使用BitmapDrawable(InputStream is)構造一個BitmapDrawable;
使用BitmapDrawable類的getBitmap()獲取得到點陣圖;
使用BitmapFactory使用BitmapFactory類decodeStream(InputStream is)解碼位 圖資源,獲取點陣圖BitmapFactory的所有函數都是static,這個輔助類可以通過資 源ID、路徑、文件、數據流等方式來獲取點陣圖。
獲取點陣圖的信息
一般獲取點陣圖信息包括:點陣圖大小、透明度、顏色格式等等,這些信息呢可以通過 三-一方法獲取得到Bitmap就迎刃而解了,Android SDK中對Bitmap有詳細說明,大家可以去詳細了解哈。
顯示點陣圖
顯示點陣圖需要使用核心類Canvas,可以直接通過Canvas類的drawBirmap()顯示點陣圖,或者藉助於BitmapDrawable來將Bitmap繪制到Canvas,下面的實例中會詳細列舉到
點陣圖的縮放
點陣圖的縮放,在Android SDK中提供了2種方法:
1:將一個點陣圖按照需求重畫一遍,畫後的點陣圖就是我們需要的了,與點陣圖的顯示幾乎 一樣:
drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)
2:在原有點陣圖的基礎上,縮放原點陣圖,創建一個新的點陣圖:
createBitmap(Bitmap source, int x, int y,int width, int height, Matrix m, boolean filter)
點陣圖旋轉
點陣圖的旋轉,離不開Matrix。Android SDK提供了Matrix類,可以通過各種介面來設置 矩陣
android 處理圖片工具
截取視頻幀並轉化為Bitmap
B. 如何自定義Android Dialog的樣式
如何自定義Android Dialog的樣式? Android 中自定義Dialog的樣式,主要是通過自定義的xml,然後載入到dialog的背景中,如下步驟:
1、自定義Dialog
final Dialog dialog = new Dialog(this, R.style.Theme_dialog);
2、窗口布局
View contentView = LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
3、把設定好的窗口布局放到dialog中
dialog.setContentView(contentView);
4、設定點選視窗空白處取消會話
dialog.setCanceledOnTouchOutside(true);
5、具體的操作
ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);
6、展示視窗
dialog.show();例:final Dialog dialog = new Dialog(this,R.style.Theme_dialog);View contentView =LayoutInflater.from(this).inflate(R.layout.select_list_dialog, null);dialog.setContentView(contentView);dialog.setCanceledOnTouchOutside(true);ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);TextView titleText = (TextView)contentView.findViewById(R.id.title);titleText.setText("請選擇銀行卡");SelectBankCardDialogAdapter adapter =new SelectBankCardDialogAdapter(this, mBankcardList);msgView.setAdapter(adapter);msgView.setOnItemClickListener(newOnItemClickListener() {@Overridepublic void onItemClick(AdapterViewparent, View view, int position, long id) {Toast.makeText(RechargeFlowToMobileActivity.this, position+"",0).show();mSelectCard =mBankcardList.get(position);String area = mSelectCard.getBank_card();mCardNumberText.setText(area);dialog.di *** iss();}});Button closeBtn = (Button)contentView.findViewById(R.id.close);closeBtn.setClickable(true);closeBtn.setOnClickListener(newView.OnClickListener() {@Overridepublic void onClick(View v) {dialog.di *** iss();}});dialog.show();
以上就是在Android開發自定義dialog樣式的方法和步驟,android很多的控制元件都提供了介面或者方法進行樣式的定義和修改。
如何自定義android Button樣式
返回部落格列表
轉 android自定義button樣式
sumpower
釋出時間: 2014/02/25 19:56
閱讀: 4162
收藏: 0
點贊: 0
評論: 0
摘要
android自定義button樣式
在Android開發應用中,預設的Button是由系統渲染和管理大小的。而我們看到的成功的移動應用,都是有著酷炫的外觀和使用體驗的。因此,我們在開發產品的時候,需要對預設按鈕進行美化。在本篇里,筆者結合在應用開發中的經驗,探討一下自定義背景的按鈕、自定義形狀按鈕的實現方法。
首先看實現效果截圖:
自定義背景的按鈕目前有2種方式實現,向量和點陣圖。
1. 向量圖形繪制的方式
向量圖形繪制的方式實現簡單,適合對於按鈕形狀和圖案要求不高的場合。步驟如下:
(a) 使用xml定義一個圓角矩形,外圍輪廓線實線、內填充漸變色,xml程式碼如下。
view plain
bg_alibuybutton_default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="地址">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFEC7600" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
<item android:="1px" android:bottom="1px" android:left="1px" android:right="1px">
<shape>
<gradient
android:startColor="#FFEC7600" android:endColor="#FFFED69E"
android:type="linear" android:angle="90"
android:centerX="0.5" android:centerY="0.5" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
</layer-list>
同樣定義bg_alibuybutton_pressed.xml和bg_alibuybutton_selected.xml,內容相同,就是漸變顏色不同,用於按鈕按下後的背景變化效果。
(b) 定義按鈕按下後的效果變化描述檔案drawable/bg_alibuybutton.xml,程式碼如下。
view plain
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="地址">
<item android:state_pressed="true"
android:drawable="@drawable/bg_alibuybutton_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/bg_alibuybutton_selected" />
<item android:drawable="@drawable/bg_alibuybutton_default" />
</selector>
(c) 在你需要的介面定義檔案中,如layout/main.xml中定義一個Button控制元件。
view plain
<Button
android:layout_width="120dip"
android:layout_height="40dip"
android:text="向量背景按鈕" android:background="@drawable/bg_alibuybutton" />
這樣,自定義背景的按鈕就可以使用了,在實現onClick方法後就可以響應操作。
android自帶的樣式比較難看,如何能夠自定義按鈕的樣式,使其顯示的跟美工設計的效果一樣,現與大家分享下
在layout中新增2個按鈕,從下圖中可以看出在按鈕中呼叫了style和android:background屬性,這兩個屬性一個是自定義樣式,一個是給按鈕新增背景圖片
展開res目錄,可以看到在values目錄下有styles.xml檔案,該檔案用於自定義樣式,雙擊開啟
標注的是我自定義的樣式,name為BtnStyle,當按鈕呼叫自定義樣式的時候訪問這個name
在button中呼叫自定義樣式的方法,比較簡單
如何往按鈕中新增自定義圖片,使按鈕看起來更漂亮些,因不同手機解析度不同,那必然牽扯到圖片的拉伸,在android系統下有個很好的技術「九宮格「,可以對圖片進行處理,只對區域性進行拉伸,給工具目錄儲存在android\sdk\tools\draw9patch.bat,經過該工具處理的圖片以.9.png結尾,放到drawable資料夾中
在Button中通過android:background屬性載入圖片的方法,至此我們自定義的按鈕樣式也就完成了,當然這只是個引子,在具體的專案工程中實現的效果要比這個demo復雜很多,有好的設計思路歡迎交流。
C. Android UI 的設計規則
軟體界面設計相關的各項介紹
界面設計是為了滿足軟體專業化標准化的需求而產生的對軟體的使用界面進行美化優化規范化的設計分支。具體包括軟體啟動封面設計,軟
件框架設計,按鈕設計,面板設計,菜單設計,標簽設計,圖標設計,滾動條及狀態欄設計,安裝過程設計,包裝及商品化。
在設計的過程中有較多注意的關鍵問題,以下列出幾點:
(1)軟體啟動封面設計
應使軟體啟動封面最終為高清晰度的圖像,如軟體啟動封面需在不同的平台、操作系統上使用將考慮轉換不同的格式,並且對選用的色彩不
宜超過256 色,最好為216色安全色。軟體啟動封面大小多為主流顯示器解析度的1/6大。如果是系列軟體將考慮整體設計的統一和延續性。在上面應該醒目的標注製作或支持的公司標志、產品商標,軟體名稱,版本號,網址,版權聲明,序列號等信息,以樹立軟體形象,方便使用者或購買者在軟體啟動的時候得到提示。插圖宜使用具有獨立版權的,象徵性強的,識別性高的,視覺傳達效果好的圖形,若使用攝影也應該進行數位處理,以形成該軟體的個性化特徵。
(2)軟體框架設計
軟體的框架設計就復雜得多,因為涉及軟體的使用功能,應該對該軟體產品的程序和使用比較了解,這就需要設計師有一定的軟體跟進經驗,能夠快速的學習軟體產品,並且在和軟體產品的程序開發員及程序使用對象進行共同溝通,以設計出友好的,獨特的,符合程序開發原則的軟體框架。軟體框架設計應該簡潔明快,盡量少用無謂的裝飾,應該考慮節省屏幕空間,各種解析度的大小,縮放時的狀態和原則,並且為將來設計的按鈕,菜單,標簽,滾動條及狀態欄預留位置。設計中將整體色彩組合進行合理搭配,將軟體商標放在顯著位置,主菜單應放在左邊或上邊,滾動條放在右邊,狀態欄放在下邊,以符合視覺流程和用戶使用心理。
(3)軟體按鈕設計
軟體按鈕設計應該具有交互性,即應該有3到6種狀態效果:點擊時狀態;滑鼠放在上面但未點擊的狀態;點擊前滑鼠未放在上面時的狀態;點擊後滑鼠未放在上面時的狀態;不能點擊時狀態;獨立自動變化的狀態。按鈕應具備簡潔的圖示效果,應能夠讓使用者產生功能關聯反應,群組內按鈕應該風格統一,功能差異大的按鈕應該有所區別。
(4)軟體面板設計
軟體面板設計應該具有縮放功能,面板應該對功能區間劃分清晰,應該和對話框,彈出框等風格匹配,盡量節省空間,切換方便。
(5)菜單設計
菜單設計一般有選中狀態和未選中狀態,左邊應為名稱,右邊應為快捷鍵,如果有下級菜單應該有下級箭頭符號,不同功能區間應該用線條分割。
(6)標簽設計
標簽設計應該注意轉角部分的變化,狀態可參考按鈕。
(7)圖標設計
圖標設計色彩不宜超過64色,大小為16x16、32x32兩種,圖標設計是方寸藝術,應該加以著重考慮視覺沖擊力,它需要在很小的范圍表現出軟體的內涵,所以很多圖標設計師在設計圖標時使用簡單的顏色,利用眼睛對色彩和網點的空間混合效果,做出了許多精彩圖標。
(8)滾動條及狀態欄設計
滾動條主要是為了對區域性空間的固定大小中內容量的變換進行設計,應該有上下箭頭,滾動標等,有些還有翻頁標。狀態欄是為了對軟體當前狀態的顯示和提示。
(9)安裝過程設計
安裝過程設計主要是將軟體安裝的過程進行美化,包括對軟體功能進行圖示化。
(10)包裝及商品化
最後軟體產品的包裝應該考慮保護好軟體產品,功能的宣傳融合於美觀中,可以印刷部分產品介紹,產品界面設計。
圖標設計規范
數位設計引入了一種新的圖標設計樣式。以下是設計和創建樣式圖標的具體規范。
圖標樣式應該有趣、色彩豐富且充滿活力,因為現在的系統支持圖標是32點陣圖標,並且邊緣非常平滑。在矢量程序中繪制完每個圖標後,再用Adobe Photoshop進行處理可使圖像更加完美。本規范是專為設計者編寫的。在創建圖像時,建議您與高水平的圖形設計者一起工作,尤其是具有豐富的矢量和 3D軟體經驗的圖形設計者。
圖標設計概述的目的是讓您熟悉WindowsXP的新樣式,為創建圖標做好准備。
圖標樣式特性
(1) 色彩豐富,是對WindowsXP外觀的補充。
(2) 不同的角度和透視特性為圖像增添了動態活力。
(3) 元素的邊角十分柔和,並略微有些圓滑。
(4) 光源位於圖標的左上角,同時有環繞光照亮圖標的其它部分。
(5) 漸變效果使圖標具有立體感,進而使圖標的外觀更加豐滿。
(6) 投影使圖標更具對比度和立體感。
(7) 添加輪廓可使圖像更清晰。
(8) 日常對象(如計算機和設備)具有更現代化的個人外觀。
圖標尺寸
Windows XP圖標有四種尺寸,建議使用以下四種尺寸:
(1) 48x48像素
(2) 32x32像素
(3) 24x24像素
(4) 16x16像素
圖標色彩深度支持
WindowsXP支持32點陣圖標。32點陣圖標為24點陣圖像加上8位alpha通道。使圖標邊緣非常平滑,且與背景相融合。
每個WindowsXP圖標應包含以下三種色彩深度,以支持不同的顯示器顯示設置:
24點陣圖像加上8位alpha通道(32位)
8點陣圖像(256色),加上1位透明色
4點陣圖像(16色),加上1位透明色
調色板
圖標中使用的主要顏色。
對象的角度和分組
WindowsXP樣式圖標使用的透視網格:並非所有對象使用16?6的復雜圖像都能獲得較好效果。某些對象通常以直觀圖像顯示:文檔圖標、符號圖標(如警告或信息圖標)、單一對象圖標(如放大鏡)
除非創建重疊輔助對象可以更清楚地表達圖標的含義,否則就可讀性和完整性而言,還是應使用直觀圖像。還應考慮如何按組查看圖標,以便確定如何將對象分組。
投影
使用投影後,WindowsXP圖標將更清晰且更具立體感。可在Photoshop中實現這種效果,本指南的後面部分將對此進行描述。若要為圖像添加投影,請在 Photoshop中雙擊圖像的圖層,並選擇Drop Shadow。然後將Angle更改為135,Distance更改為 2,Size更改為2。此時投影為75%不透明黑色。
輪廓
繪制XP樣式圖標時,為圖像添加輪廓可使之更清晰,並可保證圖像在不同背景色上都具有較好效果。
概念
設計圖標時,請考慮以下因素:
使用已有概念以確保真實表達了用戶的想法。考慮圖標在用戶界面環境中以何種形式出現,以及如何作為圖標集的一部分使用。考慮圖形的
文化背景。避免在圖標中使用字母、單詞、手或臉。必須用圖標表示人或用戶時,請盡可能使其大眾化。如果圖標中的圖像由多個對象組成,應考慮如何使圖像尺寸更小。建議在圖標中使用的對象不超過三個。對於 16?6的尺寸大小,還可考慮刪除某些對象或簡化圖像使之更容易辨認。
透明工具
將Gif Movie Gear(GMG)打開一個對話框,其中顯示您的圖標。使用吸管工具單擊圖標的背景色。此顏色將更改為暗黃綠色(或在 GMG中選作
透明背景色的顏色)。重復所有4位和8位幀。若要保存圖標,請選擇 File->Save Icon As...。
創建工具欄
Windows工具欄圖標除不使用投影之外,使用的樣式與其它圖標相同。由於工具欄圖標非常小,建議您使用簡單的圖像。如果以直觀方式顯示
圖像即可清晰地表達圖標的含義,則不必使用其它復雜方式。
創建AVI
WindowsXP使用8位AVI。創建.avi文件的過程與創建圖標的過程相同-在Photoshop中准備圖像,然後將其拖動到GMG 中。請按以下指導創建8點陣圖標。若要使用GMG保存AVI,請轉至File->Export As->AVI file。創建.avi文件時,請考慮以下因素:使用品紅(R255 G0 B255)作為背景透明色。在Photoshop中,重要的一點是不要出現雜散像素。請將填充能力設置為0,並確認未選中取消鋸齒。
軟體人機界面
UI即User Interface(用戶界面)的簡稱。UI設計則是指對軟體的人機交互、操作邏輯、界面美觀的整體設計。好的UI設計不僅是讓軟體變得
有個性有品味,還要讓軟體的操作變得舒適、簡單、自由,充分體現軟體的定位和特點。
美麗的事物常常會讓人無法抗拒。這就是為什麼產品出色的外觀設計對於電腦、汽車、日用品、傢具、食品、服裝等等幾乎所有商品的銷售與推廣,都有著舉足輕重的作用的原因。
同樣的道理,對於軟體公司來說,軟體產品就是他們的商品,而軟體界面就是他們產品的外觀,界面的美觀與否,直接關繫到了軟體產品的營銷成敗。
我們可以清楚地看到,微軟公司對軟體界面設計的重視。請回想一下您在第一次見到win2000時的情景,與nt4.0相比是否驚嘆他界面的美觀性與易用性?而您如果使用過xp系統,則會被其令人神奇的感官概念而震驚折服!金山公司的金山詞霸就是國內軟體成功的例子了,從金山詞霸3.0到金山詞霸2001 的變化堪稱經典。著名的網頁動畫製作軟體flash從3.0到4.0,僅僅修改了圖標和窗體,立即大為增色…
現今世界上成功的軟體公司都非常重視軟體界面的美化設計工作,因為他們深刻地知道,在激烈的市場競爭中,僅僅有強大的功能是遠遠不夠的,不足以戰勝強勁的對手。我們可以相象一下,您在挑選手機的時候,如果有兩款手機,性能相同,而第一款比第二款要美觀很多,那麼您將選擇哪一款呢?當然是美觀的那一款了。試想,您的客戶,也會拿您和您競爭對手的軟體做這樣的比較的。
現在的軟體企業都知道,廣告和市場推銷活動對市場營銷的作用是多麼的重要,並不遺餘力地打廣告、做活動、做推廣。但我們知道,這些活動的最終目的,是為了讓用戶購買並使用軟體產品,而用戶最終使用的也是您的產品,那麼為什麼不在軟體界面的美觀性上多下些工夫呢?在諸如家用電器、汽車、電腦等成熟的市場中,用非常精美的廣告去推廣一種功能強大卻醜陋無比的產品,是一種笑話。然而,這樣的笑話在軟體行業里卻屢見不鮮。這也是像中國足球一樣,中國軟體業與國外相比較存在的一個很大的差距。
實踐證明,各商家只要在產品美觀設計方面很小投入,將會有很大產出。其投入產出比,要比在功能領先性開發上的投入大得多。
在用戶把軟體買回去後,他們和您企業的聯系,或者說您企業形象在客戶眼中的表現,很大一部分是通過您軟體的界面來傳達的,那麼美觀友好的用戶界面對於宣傳您的企業文化,對於給客戶灌輸您的企業理念,對於您企業的宣傳運做都將是非常有益的。尤其如果您的公司做的是項目承包形式的業務,那麼無論是在競標的時候,還是在項目交付使用以後,美觀的界面都會給您的客戶以信心和良好的印象。
要成為一款有競爭力的軟體,不光要有強大的功能,也需要有一個友好的界面設計。縱觀當今的it行業,其軟體界面設計的發展趨勢大體上有如下幾種技術:
1. 命令語言用戶界面的發展。
根據其語言的特點,及人機交互的形式的分為
a. 形式語言
b. 自然語言。
c. 類自然語言。
2. 圖形用戶界面的廣泛應用
圖形用戶界面和人機交互過程極大地依賴視覺和手動控制的參與,因此具有強烈的直接操作特點
3. 直接操縱用戶界面技術的成熟。
用戶最終關心的是他欲控制和操作的對象,他只關心任務語義,而不用過多為計算機語義和句法而分心。對於大量物理的、幾何空間的以及形象的任務,直接操縱已表現出巨大的優越性。
4. 多媒體用戶界面及多通道用戶界面的發展大大豐富了計算機信息的表現形式。
5. 虛擬現實技術的應用
虛擬現實系統向用戶提供身臨其境(immerse)和多感覺通道(multi-sensory)體驗,作為一種新型人機交互形式,虛擬現實技術比以前任何人機交互形式都有希望徹底實現和諧的、以「人為中心」的人機界面。