安卓開發imageview是什麼控制項
『壹』 在android中按鈕共分為幾種
在Android開發中,View控制項被廣泛應用於各種界面設計,根據其功能和用途,可以將它們分為多種類型。其中,文本類控制項包括TextView、EditText、AutoCompleteTextView、MultAutoCompletTextView、TextSwitcher、DigitalClock、ExtractEditText、CheckedTextView和Chronometer,這些控制項主要用於顯示或編輯文本信息。
按鈕類控制項包括Button、CheckBox、RadioButton(RadioGroup)、ToggleButton和ImageButton,它們主要用於用戶交互,實現按鈕點擊、復選框選擇、單選按鈕選擇等功能。
縮放按鈕主要指ZoomButton和ZoomControls,用於實現縮放功能。
圖片類控制項則包括ImageView、ZoomButton、ImageButton和ImageSwitcher,它們用於顯示圖像資源,可以進行放大、縮小等操作。
時間控制項如DigitalClock、AnalogClock、TimePicker和DatePicker,用於顯示和選擇時間或日期。
進度顯示控制項包括ProgressBar、AbsSeekBar、SeekBar和RatingBar,它們用於顯示進度條或評分。
導航控制項如TabHost和TabWidget,用於實現標簽頁導航。
視頻媒體控制項包括VideView和MediaController,用於播放視頻內容。
Dialog對話框包括CharacherPickerDialog、AlertDialog、DatePickerDialog、ProgressDialog和TimePickerDialog,它們用於彈出對話框,提供選擇、輸入等功能。
布局類控制項包括AbsoluteLayout、LinearLayout、RadioGroup、TableLayout、TableRow、RelativeLayout和FrameLayout,用於實現復雜的界面布局。
需要適配器的布局類控制項包括AdapterView、AbsListView、GridView、ListView、AbsSpinner和Gallery,它們用於顯示列表或網格數據。
滾動條控制項包括HorizontalScrollView和ScrollView,用於實現垂直或水平滾動功能。
網頁顯示控制項為WebView,用於顯示網頁內容。
動畫類控制項包括ViewAnimator、ViewFilpper、ViewSwitcher、ImageSwitcher和TextSwitcher,用於實現界面動畫效果。
『貳』 android常用控制項有哪些
Android常用控制項有:
1. Button
2. TextView
3. EditText
4. ImageView
5. ListView
6. RecyclerView
7. ScrollView
8. ProgressBar
9. WebView等。
以下是部分控制項的詳細解釋:
Button:用於觸發事件或操作的控制項,用戶可以通過點擊按鈕來執行特定的動作或功能。在Android開發中,按鈕是最常用的控制項之一。
TextView:用於顯示文本信息,可以顯示靜態文本或動態數據。在界面上展示文字信息時,TextView是最常用的控制項之一。
EditText:允許用戶輸入或編輯文本信息。常用於表單、登錄界面等需要用戶輸入數據的地方。
ImageView:用於顯示圖像或視頻。通過此控制項,開發者可以輕松地將圖像顯示在應用程序的界面上。此外,還可以通過該控制項顯示圖片序列,形成簡單的動畫效果。
『叄』 Android 圓角、圓形 ImageView 實現
我們要實現的圖片控制項繼承自 AppCompatImageView ,它是 ImageView 的子類,但提供了更好的兼容性,我們在此基礎上添加了若干自定義的屬性和方法以實現最終的 NiceImageView :
要實圓角或者圓形的顯示效果,就是對圖片顯示的內容區域進行「裁剪」,只顯示指定的區域即可。如何做呢?
一種比較直接的辦法是這樣的,由於圖片是被繪制在畫布上的,所以用 canvas 的 clipPath() 方法先將畫布裁剪成指定形狀,這樣就能讓圖片按指定形狀顯示了,重新 draw() 方法即可:
這樣使用 src 、 background 屬性給ImageView設置顯示的圖片都能達到預期的顯示效果。但是由於 clipPath() 方法不支持抗鋸齒,圖片邊緣會有明顯的毛糙感,體驗並不理想,所以需要尋找其它方法。
另一種方法是使用圖像的 Alpha 合成模式 ,即
PorterDuff 來實現, 官方文檔 。這里我們使用其中的 DST_IN 模式。整個過程就是先繪制目標圖像,也就是圖片;再繪制原圖像,即一個圓角矩形或者圓形,這樣最終目標圖像只顯示和原圖像重合的區域。
到這里就實現了顯示為圓角或者圓形了。但是需要通過 src 屬性或者對應的方法來設置圖片,否則不能達到預期效果。
繪制邊框就相對容易理解了,只需要繪制一個指定樣式的圓角矩形或者圓形即可:
當圖片顯示為圓形時,還可以繪制一個內邊框,但圓角矩形的話由於圓角大小的問題,目前只能設置一個邊框咯。
但是有個問題,繪制的邊框會覆蓋在圖片上,如果邊框太寬會導致圖片的可見區域變小了,影像顯示效果,像這樣,左下角的花盆不見了:
那麼如何讓邊框不覆蓋在圖片上呢?可以在 Alpha 合成繪制前先將畫布縮小一定比例,最後再繪制邊框,這樣問題就解決了。
縮放後的ImageView顯示區域的寬高就是原寬、高分別減去2倍的邊框寬度,這樣縮小的比例也就顯而易見了。效果如下,左下角的花盆出來了:
遮罩可以理解為一層帶透明度的顏色,遮罩默認不繪制,當制定了遮罩顏色時才會繪制,實現很簡單:
例如加一個透明度30%的紅色遮罩後的效果:
核心的實現邏輯就這些了,剩下的就是自定義屬性和方法了,有興趣的可以看源碼,都很簡單,希望對你有所幫助吧!
更多細節及用法見GitHub: https://github.com/SheHuan/NiceImageView
如果你需要實現類似釘釘的圓形組合頭像,例如: