ICSLauncher改造-替換滑屏Indicator

來源:互聯網
上載者:User

[html] 
背景: 
原生ICS 已經有一種通過9patch展開實現的scrollIndicator但是不夠美觀,本文就在不修改原生scrollindicator的基礎上添加新的冒泡scrollindicator。

如下。實現思路很簡單,見本文。


1.添加View對象
1.1 AppScreenBubbleViewFrameLayout extends FrameLayout
每一個“點”是一個AppScreenBubbleViewFrameLayout,它有兩個成員變數,imageViewFront、imageViewBack,當前頁顯示imageViewFront,其他頁顯示imageViewBack。
1.2 AppScreenBubbleViewFrameLayout extends FrameLayout
         
[java] 
for (int page = 0; page < totalPages; ++page) { 
           LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, 
                   LayoutParams.WRAP_CONTENT); 
 
           AppScreenBubbleViewFrameLayout appScreenBubbleViewFrameLayout = new AppScreenBubbleViewFrameLayout( 
                   mContext); 
 
           if (page == mCurrentPage) { 
               appScreenBubbleViewFrameLayout.getImageViewFront() 
                       .setImageDrawable(getFocusDrawable()); 
           } 
           else { 
               appScreenBubbleViewFrameLayout.getImageViewFront() 
                       .setImageDrawable(getNormalDrawable()); 
           } 
 
           this.addView(appScreenBubbleViewFrameLayout, layoutParams); 
       } 

1.2添加AppScreenBubbleViewFrameLayout布局檔案
[html] 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:scaleType="center" android:layout_gravity="bottom|center_horizontal" 
    launcher:direction="horizontal"> 
    <com.android.launcher2.AppScreenBubbleView 
        android:id="@+id/drawer_appscreen_num" android:layout_width="match_parent" 
        android:layout_height="wrap_content" android:gravity="center_horizontal"/> 
</LinearLayout> 

 

2.合入Launcher
2.1在Laucher.xml中添加如下布局
 www.2cto.com
<!-- add bubble view --> 
 <include layout="@layout/workspace_bubble_view_layout" 
    android:id="@+id/bubbleView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:layout_marginBottom="@dimen/button_bar_height"/> 
2.2.在Laucher.java中初始化
[java]
//add bubbleView to Workspace 
 View bubbleView = mDragLayer.findViewById(R.id.bubbleView); 
 mScreenBubbleView = (AppScreenBubbleView) bubbleView.findViewById(R.id.drawer_appscreen_num); 
 mWorkspace.setAppScreenBubbleView(mScreenBubbleView); 
 //mScreenBubbleView.show 
 mWorkspace.showScreenBubbleView(false); 

3.PagedView
     注意學習動畫得使用啊,親!
[java] 
protected void showScreenBubbleView(boolean immediately){ 
        if (getChildCount() <= 1) return; 
        if(!isScreenBubbleEnable()) return; 
        getScreenBubbleView(); 
        if(mScreenBubbleView != null){ 
            updateScreenPosition(); 
            mScreenBubbleView.setVisibility(View.VISIBLE); 
            if (immediately) { 
                mScreenBubbleView.setAlpha(1f); 
            } 
            else{ 
                mScreenBubbleViewAnimator = ObjectAnimator.ofFloat(mScreenBubbleView, "alpha", 1f); 
                mScreenBubbleViewAnimator.setDuration(sScreenBubbleFadeInDuration); 
                mScreenBubbleViewAnimator.start(); 
            } 
        } 
    } 
[java] 
// a method that subclasses can override to add behavior 
   protected void onPageBeginMoving() { 
       showScrollingIndicator(false); 
       showScreenBubbleView(false); 
   } 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.