当前位置:操作系统 > 安卓/Android >>

ICSLauncher改造-替换滑屏Indicator

[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.zzzyk.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); 
   } 

 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,