1. 程式人生 > >Android自定義控制元件系列一:Android如何實現老版優酷客戶端三級環形選單

Android自定義控制元件系列一:Android如何實現老版優酷客戶端三級環形選單

轉載連結:http://blog.csdn.net/cyp331203/article/details/40423727

先來看看效果:


一眼看上去好像還挺炫的,感覺比較複雜。。。實際上並不難,下面我們來看看如何實現:

基本素材就是下面三個:


我們先來看看佈局檔案怎麼寫,實際上這裡這三張圖片都差不多,我們這裡使用RelativeLayout,方便後續小圖示的加入,基本就是centerInParentaliagnParentBottom,只是外圈小圖示的安排要稍微注意一下,這裡我們左半邊圖示以最左邊的一個圖示為基準,右半邊的圖示以最右邊的一個圖示為基準,在這裡分別是iv_channel1

iv_channel7

  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context="${relativePackage}.${activityClass}">
  6.     <
    RelativeLayout
  7.         android:id="@+id/level1"
  8.         android:layout_width="100dp"
  9.         android:layout_height="50dp"
  10.         android:layout_alignParentBottom="true"
  11.         android:layout_centerHorizontal="true"
  12.         android:background="@drawable/level1">
  13.         <ImageView
  14.             android:id
    ="@+id/iv_icon_home"
  15.             android:layout_width="50dp"
  16.             android:layout_height="50dp"
  17.             android:layout_centerInParent="true"
  18.             android:src="@drawable/icon_home"/>
  19.     </RelativeLayout>
  20.     <RelativeLayout
  21.         android:id="@+id/level2"
  22.         android:layout_width="180dp"
  23.         android:layout_height="90dp"
  24.         android:layout_alignParentBottom="true"
  25.         android:layout_centerHorizontal="true"
  26.         android:background="@drawable/level2">
  27.         <ImageView
  28.             android:layout_width="wrap_content"
  29.             android:layout_height="wrap_content"
  30.             android:layout_alignParentBottom="true"
  31.             android:layout_margin="10dp"
  32.             android:src="@drawable/icon_search">
  33.         </ImageView>
  34.         <ImageView
  35.             android:layout_width="wrap_content"
  36.             android:layout_height="wrap_content"
  37.             android:layout_alignParentBottom="true"
  38.             android:layout_alignParentRight="true"
  39.             android:layout_margin="10dp"
  40.             android:src="@drawable/icon_myyouku">
  41.         </ImageView>
  42.         <ImageView
  43.             android:id="@+id/iv_icon_menu"
  44.             android:layout_width="wrap_content"
  45.             android:layout_height="wrap_content"
  46.             android:layout_centerHorizontal="true"
  47.             android:layout_marginTop="5dp"
  48.             android:src="@drawable/icon_menu"/>
  49.     </RelativeLayout>
  50.     <RelativeLayout
  51.         android:id="@+id/level3"
  52.         android:layout_width="260dp"
  53.         android:layout_height="130dp"
  54.         android:layout_alignParentBottom="true"
  55.         android:layout_centerHorizontal="true"
  56.         android:background="@drawable/level3">
  57.         <ImageView
  58.             android:id="@+id/iv_channel1"
  59.             android:layout_width="wrap_content"
  60.             android:layout_height="wrap_content"
  61.             android:layout_alignParentBottom="true"
  62.             android:layout_marginBottom="10dp"
  63.             android:layout_marginLeft="5dp"
  64.             android:src="@drawable/channel1"/>
  65.         <ImageView
  66.             android:id="@+id/iv_channel2"
  67.             android:layout_width="wrap_content"
  68.             android:layout_height="wrap_content"
  69.             android:layout_above="@id/iv_channel1"
  70.             android:layout_alignLeft="@id/iv_channel1"
  71.             android:layout_marginBottom="7dp"
  72.             android:layout_marginLeft="18dp"
  73.             android:src="@drawable/channel2"/>
  74.         <ImageView
  75.             android:id="@+id/iv_channel3"
  76.             android:layout_width="wrap_content"
  77.             android:layout_height="wrap_content"
  78.             android:layout_above="@id/iv_channel2"
  79.             android:layout_alignLeft="@id/iv_channel2"
  80.             android:layout_marginBottom="2dp"
  81.             android:layout_marginLeft="35dp"
  82.             android:src="@drawable/channel3"/>
  83.         <ImageView
  84. 相關推薦

    Android定義控制元件系列Android如何實現客戶三級環形選單

    轉載連結:http://blog.csdn.net/cyp331203/article/details/40423727 先來看看效果: 一眼看上去好像還挺炫的,感覺比較複雜。。。實際上並不難,下面我們來看看如何實現: 基本素

    Android定義控制元件系列如何測量控制元件尺寸

    測量控制元件尺寸(寬度、高度)是開發自定義控制元件的第一步,只有確定尺寸後才能開始畫(利用canvas在畫布上畫,我們所使用的控制元件實際上都是這樣畫上去的)。當然,這個尺寸是需要根據控制元件的各個部分計算出來的,比如:padding、文字大小,間距等。非容器控制元件的onM

    Android定義控制元件系列詳解onMeasure()方法中如何測量一個控制元件尺寸()

    自定義view/viewgroup要重寫的幾個方法:onMeasure(),onLayout(),onDraw()。(不熟悉的話可以檢視專欄的前幾篇文章:)。         今天的任務就是詳細研究一下protected void onMeasure(int wid

    Android定義控制元件系列定義開關按鈕(

    這一次我們將會實現一個完整純粹的自定義控制元件,而不是像之前的組合控制元件一樣,拿系統的控制元件來實現;計劃分為三部分:自定義控制元件的基本部分,和自定義控制元件的自定義屬性; 下面就開始第一部分的編寫,本次以一個定義的開關按鈕為例,下面就開始吧: 先看看效果,一個點選開

    Android定義控制元件系列詳解onMeasure()(二)--利用onMeasure測量來實現圖片拉伸永不變形,解決螢幕適配問題

            上一篇文章詳細講解了一下onMeasure/measure方法在Android自定義控制元件時的原理和作用,參看博文:Android自定義控制元件系列七:詳解onMeasure()方法中如何測量一個控制元件尺寸(一),今天就來真正實踐一下,讓這兩個方法大顯神威來幫我們搞定圖片的螢幕適配問題。

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

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

    android定義控制元件系列教程----繼承ViewGroup實現帶阻力效果的可回彈的SrollView

    package com.example.scolview; import android.content.Context; import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracke

    Android定義控制元件系列詳解onMeasure()方法中如何測量一個控制元件尺寸()

    轉載請註明出處:http://blog.csdn.net/cyp331203/article/details/45027641 今天的任務就是詳細研究一下protected void onMeasure(int widthMeasureSpec, int he

    Android定義控制元件系列案例【

    Android自定義控制元件的重要性就不多說了,總之是技術進階,面試常見,高薪必備。 本篇博文的目的很簡單,就是希望通過自定義控制元件來解決一個常見需求點,從而感受一下自定義控制元件的魅力與強大。 案

    Android定義控制元件系列(三)—底部選單(上)

    今天我們封裝一個底部的選單欄,這個大多數的應用都會用到,因此我們來自定義,方便以後專案的使用。 該控制元件的實現將分上下篇來介紹,先來看一個選單欄的子控制元件–MenuItemM,這個控制元件有什麼用呢?我們來看下一些主流app上的一些控制元件,如:

    Android定義控制元件) 下拉重新整理,上拉分頁載入更多(支援ListView, GridView, ScrollView)

            首先說明,這幾篇文章是對一些前輩的成果進行學習後的心得總結。也借這種方式對他們表示謝意。         最近專案中好幾個模組都用到listview和gridview的下拉重新整理,上拉載入更多等功能,而且涉及到圖片的批量下載。水平有限,首先是想到找一些比較

    Android定義控制元件系列案例【四】

    案例效果: 模擬器上執行有些鋸齒,真機上和預期一樣好 案例分析: 看效果,第一直覺肯定是Android原生態控制元件中沒有這樣的控制元件實現這種效果,自然想到應該需要自定義控制元件了,沒錯,這就是通過自定義控制元件來繪製的一個圓環進度條。仔細分析發現這個效果的進度條應該

    Android定義控制元件系列(二)—icon+文字的多種效果實現

    今天給大家帶來一個很簡單但是很常用的控制元件ButtonExtendM,在開發中我們經常會用到圖片加文字的組合控制元件,像這樣: 以上圖片都是從微信上擷取的。(暫時沒有找到icon在下,文字在上的例子) 下面我們通過一個控制元件來實現上下左右全部

    android定義控制元件自動換行效果實現

         第一篇部落格裡面有介紹一篇關於自動換行實現諸多自定義控制元件跟各種效果的博文,但是礙於當初技術能力有限,寫的jar包裡的程式碼亂七八糟,在最近忙完了手頭的工作,不經意間翻看了之前的程式碼,真是慘不忍睹,隨決定重新封裝。重新編寫的android-custom-vg前

    Android 定義控制元件之打造流佈局實現熱門搜尋標籤

    最終效果 首先來看看效果圖: 其他地方很好實現,就是熱門搜尋有點麻煩,由於資料的不確定性,那麼像GridView明顯不能滿足了,這時候就只能自己來定義一個佈局了。 最終實現後的效果: 具體實現 1,自定義一個類繼承

    Android定義控制元件開發系列()——第一次動手做定義控制元件

            Android系統提供的控制元件多種多樣,以至於很多初學者經常忘了還有這樣那樣的控制元件沒用過甚至沒聽過。儘管如此,但是系統控制元件大多比較死板,而且不夠美觀,很多多樣化的顯示或是互動

    Android 定義控制元件打造流佈局實現熱門搜尋標籤

    具體實現 1,自定義一個類繼承GridView /** * 自定義流佈局 * @author zhouyou */ public class ZFlowLayout extends ViewGroup{ // 儲存所有子View priva

    Android 定義控制元件 () ,柱狀圖 ,Canvas 繪製 柱狀圖 ,支援觸控操作

    專案中,經常會用到統計圖表,個性化展示資料,增加趣味性,之前也用過百度Echarts來展示,效果很不錯,包括一些互動操作,不得不說,echarts幫我我們實現了絕大多數的需求,體積小不說,實現方式也很簡單,後來想了想,為什麼不用安卓Canvas繪製呢,畢竟是安卓開發攻城獅,下

    Android定義控制元件動畫類---逐幀動畫AnimationDrawable

    1:概述             Android動畫包括View Animation(檢視動畫)和Property Animator(屬性動畫),而View Animation包括Tween An

    Android定義控制元件開發系列(三)——仿支付寶六位支付密碼輸入頁面

            在移動互聯領域,有那麼幾家龍頭一直是我等學習和追求的目標,比如支付寶、微信、餓了麼、酷狗音樂等等,大神舉不勝舉,他們設計的介面、互動方式已經培養了中國(有可能會是世界)民眾的操作習慣:舉個小例子,對話方塊“確定”按鈕的左右位置就很有學問,如果大家都是左邊取消