android.widget.FrameLayout#setClipChildren ( )源码实例Demo

下面列出了android.widget.FrameLayout#setClipChildren ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: AndroidAnimationExercise   文件: GameFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
	ViewGroup view = (ViewGroup) inflater.inflate(R.layout.game_fragment, container, false);
	view.setClipChildren(false);
	((ViewGroup)view.findViewById(R.id.game_board)).setClipChildren(false);
	mTime = (TextView) view.findViewById(R.id.time_bar_text);
	mTimeImage = (ImageView) view.findViewById(R.id.time_bar_image);
	FontLoader.setTypeface(Shared.context, new TextView[] {mTime}, Font.GROBOLD);
	mBoardView = BoardView.fromXml(getActivity().getApplicationContext(), view);
	FrameLayout frameLayout = (FrameLayout) view.findViewById(R.id.game_container);
	frameLayout.addView(mBoardView);
	frameLayout.setClipChildren(false);

	// build board
	buildBoard();
	Shared.eventBus.listen(FlipDownCardsEvent.TYPE, this);
	Shared.eventBus.listen(HidePairCardsEvent.TYPE, this);
	Shared.eventBus.listen(GameWonEvent.TYPE, this);
	
	return view;
}
 
源代码2 项目: memory-game   文件: GameFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
	ViewGroup view = (ViewGroup) inflater.inflate(R.layout.game_fragment, container, false);
	view.setClipChildren(false);
	((ViewGroup)view.findViewById(R.id.game_board)).setClipChildren(false);
	mTime = (TextView) view.findViewById(R.id.time_bar_text);
	mTimeImage = (ImageView) view.findViewById(R.id.time_bar_image);
	FontLoader.setTypeface(Shared.context, new TextView[] {mTime}, Font.GROBOLD);
	mBoardView = BoardView.fromXml(getActivity().getApplicationContext(), view);
	FrameLayout frameLayout = (FrameLayout) view.findViewById(R.id.game_container);
	frameLayout.addView(mBoardView);
	frameLayout.setClipChildren(false);

	// build board
	buildBoard();
	Shared.eventBus.listen(FlipDownCardsEvent.TYPE, this);
	Shared.eventBus.listen(HidePairCardsEvent.TYPE, this);
	Shared.eventBus.listen(GameWonEvent.TYPE, this);
	
	return view;
}
 
private void buildMainContentView() {
    mainContentView = new FrameLayout(this.getContext());
    mainContentView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.MATCH_PARENT));
    mainContentView.setClipToPadding(false);
    mainContentView.setClipChildren(false);
}
 
源代码4 项目: likequanmintv   文件: PullToZoomScrollViewEx.java
@Override
public void handleStyledAttributes(TypedArray a) {
    mRootContainer = new LinearLayout(getContext());
    mRootContainer.setOrientation(LinearLayout.VERTICAL);
    mHeaderContainer = new FrameLayout(getContext());

    if (mZoomView != null) {
        mHeaderContainer.addView(mZoomView);
    }
    if (mHeaderView != null) {
        mHeaderContainer.addView(mHeaderView);
    }
    int contentViewResId = a.getResourceId(R.styleable.PullToZoomView_contentView, 0);
    if (contentViewResId > 0) {
        LayoutInflater mLayoutInflater = LayoutInflater.from(getContext());
        mContentView = mLayoutInflater.inflate(contentViewResId, null, false);
    }

    mRootContainer.addView(mHeaderContainer);
    if (mContentView != null) {
        mRootContainer.addView(mContentView);
    }

    mRootContainer.setClipChildren(false);
    mHeaderContainer.setClipChildren(false);

    mRootView.addView(mRootContainer);
}
 
@Override
public void handleStyledAttributes(TypedArray a) {
    mRootContainer = new LinearLayout(getContext());
    mRootContainer.setOrientation(LinearLayout.VERTICAL);
    mHeaderContainer = new FrameLayout(getContext());

    if (mZoomView != null) {
        mHeaderContainer.addView(mZoomView);
    }
    if (mHeaderView != null) {
        mHeaderContainer.addView(mHeaderView);
    }
    int contentViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollContentView, 0);
    if (contentViewResId > 0) {
        LayoutInflater mLayoutInflater = LayoutInflater.from(getContext());
        mContentView = mLayoutInflater.inflate(contentViewResId, null, false);
    }

    mRootContainer.addView(mHeaderContainer);
    if (mContentView != null) {
        mRootContainer.addView(mContentView);
    }

    mRootContainer.setClipChildren(false);
    mHeaderContainer.setClipChildren(false);

    mRootView.addView(mRootContainer);
}
 
源代码6 项目: PullZoomView   文件: PullToZoomScrollViewEx.java
@Override
public void handleStyledAttributes(TypedArray a) {
    mRootContainer = new LinearLayout(getContext());
    mRootContainer.setOrientation(LinearLayout.VERTICAL);
    mHeaderContainer = new FrameLayout(getContext());

    if (mZoomView != null) {
        mHeaderContainer.addView(mZoomView);
    }
    if (mHeaderView != null) {
        mHeaderContainer.addView(mHeaderView);
    }
    int contentViewResId = a.getResourceId(R.styleable.PullToZoomView_contentView, 0);
    if (contentViewResId > 0) {
        LayoutInflater mLayoutInflater = LayoutInflater.from(getContext());
        mContentView = mLayoutInflater.inflate(contentViewResId, null, false);
    }

    mRootContainer.addView(mHeaderContainer);
    if (mContentView != null) {
        mRootContainer.addView(mContentView);
    }

    mRootContainer.setClipChildren(false);
    mHeaderContainer.setClipChildren(false);

    mRootView.addView(mRootContainer);
}
 
源代码7 项目: dingo   文件: TrashView.java
/**
 * コンストラクタ
 *
 * @param context Context
 */
TrashView(Context context) {
    super(context);
    mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    mMetrics = new DisplayMetrics();
    mWindowManager.getDefaultDisplay().getMetrics(mMetrics);
    mAnimationHandler = new AnimationHandler(this);
    mIsEnabled = true;

    mParams = new WindowManager.LayoutParams();
    mParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
    mParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
    mParams.type = OVERLAY_TYPE;
    mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
            WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    mParams.format = PixelFormat.TRANSLUCENT;
    // INFO:Windowの原点のみ左下に設定
    mParams.gravity = Gravity.LEFT | Gravity.BOTTOM;

    // 各種Viewの設定
    // TrashViewに直接貼り付けられるView(このViewを介さないと、削除Viewと背景Viewのレイアウトがなぜか崩れる)
    mRootView = new FrameLayout(context);
    mRootView.setClipChildren(false);
    // 削除アイコンのルートView
    mTrashIconRootView = new FrameLayout(context);
    mTrashIconRootView.setClipChildren(false);
    mFixedTrashIconView = new ImageView(context);
    mActionTrashIconView = new ImageView(context);
    // 背景View
    mBackgroundView = new FrameLayout(context);
    mBackgroundView.setAlpha(0.0f);
    final GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{0x00000000, 0x50000000});
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
        //noinspection deprecation
        mBackgroundView.setBackgroundDrawable(gradientDrawable);
    } else {
        mBackgroundView.setBackground(gradientDrawable);
    }

    // 背景Viewの貼り付け
    final LayoutParams backgroundParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (BACKGROUND_HEIGHT * mMetrics.density));
    backgroundParams.gravity = Gravity.BOTTOM;
    mRootView.addView(mBackgroundView, backgroundParams);
    // アクションアイコンの貼り付け
    final LayoutParams actionTrashIconParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    actionTrashIconParams.gravity = Gravity.CENTER;
    mTrashIconRootView.addView(mActionTrashIconView, actionTrashIconParams);
    // 固定アイコンの貼付け
    final LayoutParams fixedTrashIconParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    fixedTrashIconParams.gravity = Gravity.CENTER;
    mTrashIconRootView.addView(mFixedTrashIconView, fixedTrashIconParams);
    // 削除アイコンの貼り付け
    final LayoutParams trashIconParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    trashIconParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
    mRootView.addView(mTrashIconRootView, trashIconParams);

    // TrashViewに貼り付け
    addView(mRootView);

    // 初回描画処理用
    getViewTreeObserver().addOnPreDrawListener(this);
}
 
源代码8 项目: DoraemonKit   文件: NormalDokitViewManager.java
/**
 * @return rootView
 */
private FrameLayout getDokitRootContentView(final Activity activity, FrameLayout decorView) {
    FrameLayout dokitRootView = decorView.findViewById(R.id.dokit_contentview_id);
    if (dokitRootView != null) {
        return dokitRootView;
    }

    dokitRootView = new DokitFrameLayout(mContext);
    //普通模式的返回按键监听
    dokitRootView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            //LogHelper.i(TAG, "keyCode===>" + keyCode + " " + v.getClass().getSimpleName());
            //监听返回键
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                Map<String, AbsDokitView> dokitViews = getDokitViews(activity);
                if (dokitViews == null || dokitViews.size() == 0) {
                    return false;
                }
                for (AbsDokitView dokitView : dokitViews.values()) {
                    if (dokitView.shouldDealBackKey()) {
                        return dokitView.onBackPressed();
                    }
                }
                return false;
            }
            return false;
        }
    });
    dokitRootView.setClipChildren(false);
    //解决无法获取返回按键的问题
    dokitRootView.setFocusable(true);
    dokitRootView.setFocusableInTouchMode(true);
    dokitRootView.requestFocus();
    dokitRootView.setId(R.id.dokit_contentview_id);
    FrameLayout.LayoutParams dokitParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    try {
        //解决由于项目集成SwipeBackLayout而出现的dokit入口不显示
        if (BarUtils.isStatusBarVisible(activity)) {
            dokitParams.topMargin = BarUtils.getStatusBarHeight();
        }
        if (BarUtils.isSupportNavBar()) {
            if (BarUtils.isNavBarVisible(activity)) {
                dokitParams.bottomMargin = BarUtils.getNavBarHeight();
            }
        }
    } catch (Exception e) {
        //e.printStackTrace();
    }
    dokitRootView.setLayoutParams(dokitParams);
    //添加到DecorView中 为了不和用户自己往根布局中添加view干扰
    decorView.addView(dokitRootView);

    return dokitRootView;
}
 
源代码9 项目: FloatingView   文件: TrashView.java
/**
 * コンストラクタ
 *
 * @param context Context
 */
TrashView(Context context) {
    super(context);
    mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    mMetrics = new DisplayMetrics();
    mWindowManager.getDefaultDisplay().getMetrics(mMetrics);
    mAnimationHandler = new AnimationHandler(this);
    mIsEnabled = true;

    mParams = new WindowManager.LayoutParams();
    mParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
    mParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
    mParams.type = OVERLAY_TYPE;
    mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
            WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    mParams.format = PixelFormat.TRANSLUCENT;
    // INFO:Windowの原点のみ左下に設定
    mParams.gravity = Gravity.LEFT | Gravity.BOTTOM;

    // 各種Viewの設定
    // TrashViewに直接貼り付けられるView(このViewを介さないと、削除Viewと背景Viewのレイアウトがなぜか崩れる)
    mRootView = new FrameLayout(context);
    mRootView.setClipChildren(false);
    // 削除アイコンのルートView
    mTrashIconRootView = new FrameLayout(context);
    mTrashIconRootView.setClipChildren(false);
    mFixedTrashIconView = new ImageView(context);
    mActionTrashIconView = new ImageView(context);
    // 背景View
    mBackgroundView = new FrameLayout(context);
    mBackgroundView.setAlpha(0.0f);
    final GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{0x00000000, 0x50000000});
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
        //noinspection deprecation
        mBackgroundView.setBackgroundDrawable(gradientDrawable);
    } else {
        mBackgroundView.setBackground(gradientDrawable);
    }

    // 背景Viewの貼り付け
    final FrameLayout.LayoutParams backgroundParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (BACKGROUND_HEIGHT * mMetrics.density));
    backgroundParams.gravity = Gravity.BOTTOM;
    mRootView.addView(mBackgroundView, backgroundParams);
    // アクションアイコンの貼り付け
    final FrameLayout.LayoutParams actionTrashIconParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    actionTrashIconParams.gravity = Gravity.CENTER;
    mTrashIconRootView.addView(mActionTrashIconView, actionTrashIconParams);
    // 固定アイコンの貼付け
    final FrameLayout.LayoutParams fixedTrashIconParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    fixedTrashIconParams.gravity = Gravity.CENTER;
    mTrashIconRootView.addView(mFixedTrashIconView, fixedTrashIconParams);
    // 削除アイコンの貼り付け
    final FrameLayout.LayoutParams trashIconParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    trashIconParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
    mRootView.addView(mTrashIconRootView, trashIconParams);

    // TrashViewに貼り付け
    addView(mRootView);

    // 初回描画処理用
    getViewTreeObserver().addOnPreDrawListener(this);
}
 
private void init(AttributeSet attrs) {
    mHeaderContainer = new FrameLayout(getContext());
    mZoomContainer = new FrameLayout(getContext());
    mContentContainer = new FrameLayout(getContext());

    mRootContainer = new LinearLayout(getContext());
    mRootContainer.setOrientation(LinearLayout.VERTICAL);

    if (attrs != null) {
        LayoutInflater mLayoutInflater = LayoutInflater.from(getContext());
        //初始化状态View
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.PullToZoomScrollView);

        int zoomViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollZoomView, 0);
        if (zoomViewResId > 0) {
            mZoomView = mLayoutInflater.inflate(zoomViewResId, null, false);
            mZoomContainer.addView(mZoomView);
            mHeaderContainer.addView(mZoomContainer);
        }

        int headViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollHeadView, 0);
        if (headViewResId > 0) {
            mHeadView = mLayoutInflater.inflate(headViewResId, null, false);
            mHeaderContainer.addView(mHeadView);
        }
        int contentViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollContentView, 0);
        if (contentViewResId > 0) {
            mContentView = mLayoutInflater.inflate(contentViewResId, null, false);
            mContentContainer.addView(mContentView);
        }

        a.recycle();
    }

    DisplayMetrics localDisplayMetrics = new DisplayMetrics();
    ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
    mScreenHeight = localDisplayMetrics.heightPixels;
    mZoomWidth = localDisplayMetrics.widthPixels;
    mScalingRunnable = new ScalingRunnable();

    mRootContainer.addView(mHeaderContainer);
    mRootContainer.addView(mContentContainer);

    mRootContainer.setClipChildren(false);
    mHeaderContainer.setClipChildren(false);

    addView(mRootContainer);
}
 
@Override
public void animate() {
	final ViewGroup parentView = (ViewGroup) view.getParent();
	final FrameLayout slideOutFrame = new FrameLayout(view.getContext());
	final int positionView = parentView.indexOfChild(view);
	slideOutFrame.setLayoutParams(view.getLayoutParams());
	slideOutFrame.setClipChildren(true);
	parentView.removeView(view);
	slideOutFrame.addView(view);
	parentView.addView(slideOutFrame, positionView);

	switch (direction) {
	case DIRECTION_LEFT:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_X,
				view.getTranslationX() - view.getWidth());
		break;
	case DIRECTION_RIGHT:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_X,
				view.getTranslationX() + view.getWidth());
		break;
	case DIRECTION_UP:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y,
				view.getTranslationY() - view.getHeight());
		break;
	case DIRECTION_DOWN:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y,
				view.getTranslationY() + view.getHeight());
		break;
	default:
		break;
	}

	AnimatorSet slideSet = new AnimatorSet();
	slideSet.play(slideAnim);
	slideSet.setInterpolator(interpolator);
	slideSet.setDuration(duration);
	slideSet.addListener(new AnimatorListenerAdapter() {

		@Override
		public void onAnimationEnd(Animator animation) {
			view.setVisibility(View.INVISIBLE);
			slideAnim.reverse();
			slideOutFrame.removeAllViews();
			parentView.removeView(slideOutFrame);
			parentView.addView(view, positionView);
			if (getListener() != null) {
				getListener().onAnimationEnd(
						SlideOutUnderneathAnimation.this);
			}
		}
	});
	slideSet.start();
}
 
源代码12 项目: UltimateAndroid   文件: PullToZoomScrollView.java
private void init(AttributeSet attrs) {
    mHeaderContainer = new FrameLayout(getContext());
    mZoomContainer = new FrameLayout(getContext());
    mContentContainer = new FrameLayout(getContext());

    mRootContainer = new LinearLayout(getContext());
    mRootContainer.setOrientation(LinearLayout.VERTICAL);

    if (attrs != null) {
        LayoutInflater mLayoutInflater = LayoutInflater.from(getContext());
        //初始化状态View
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.PullToZoomScrollView);

        int zoomViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollZoomView, 0);
        if (zoomViewResId > 0) {
            mZoomView = mLayoutInflater.inflate(zoomViewResId, null, false);
            mZoomContainer.addView(mZoomView);
            mHeaderContainer.addView(mZoomContainer);
        }

        int headViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollHeadView, 0);
        if (headViewResId > 0) {
            mHeadView = mLayoutInflater.inflate(headViewResId, null, false);
            mHeaderContainer.addView(mHeadView);
        }
        int contentViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollContentView, 0);
        if (contentViewResId > 0) {
            mContentView = mLayoutInflater.inflate(contentViewResId, null, false);
            mContentContainer.addView(mContentView);
        }

        a.recycle();
    }

    DisplayMetrics localDisplayMetrics = new DisplayMetrics();
    ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
    mScreenHeight = localDisplayMetrics.heightPixels;
    mZoomWidth = localDisplayMetrics.widthPixels;
    mScalingRunnable = new ScalingRunnable();

    mRootContainer.addView(mHeaderContainer);
    mRootContainer.addView(mContentContainer);

    mRootContainer.setClipChildren(false);
    mHeaderContainer.setClipChildren(false);

    addView(mRootContainer);
}
 
@Override
public void animate() {
	final ViewGroup parentView = (ViewGroup) view.getParent();
	final FrameLayout slideOutFrame = new FrameLayout(view.getContext());
	final int positionView = parentView.indexOfChild(view);
	slideOutFrame.setLayoutParams(view.getLayoutParams());
	slideOutFrame.setClipChildren(true);
	parentView.removeView(view);
	slideOutFrame.addView(view);
	parentView.addView(slideOutFrame, positionView);

	switch (direction) {
	case DIRECTION_LEFT:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_X,
				view.getTranslationX() - view.getWidth());
		break;
	case DIRECTION_RIGHT:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_X,
				view.getTranslationX() + view.getWidth());
		break;
	case DIRECTION_UP:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y,
				view.getTranslationY() - view.getHeight());
		break;
	case DIRECTION_DOWN:
		slideAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y,
				view.getTranslationY() + view.getHeight());
		break;
	default:
		break;
	}

	AnimatorSet slideSet = new AnimatorSet();
	slideSet.play(slideAnim);
	slideSet.setInterpolator(interpolator);
	slideSet.setDuration(duration);
	slideSet.addListener(new AnimatorListenerAdapter() {

		@Override
		public void onAnimationEnd(Animator animation) {
			view.setVisibility(View.INVISIBLE);
			slideAnim.reverse();
			slideOutFrame.removeAllViews();
			parentView.removeView(slideOutFrame);
			parentView.addView(view, positionView);
			if (getListener() != null) {
				getListener().onAnimationEnd(
						SlideOutUnderneathAnimation.this);
			}
		}
	});
	slideSet.start();
}
 
源代码14 项目: UltimateAndroid   文件: PullToZoomScrollView.java
private void init(AttributeSet attrs) {
    mHeaderContainer = new FrameLayout(getContext());
    mZoomContainer = new FrameLayout(getContext());
    mContentContainer = new FrameLayout(getContext());

    mRootContainer = new LinearLayout(getContext());
    mRootContainer.setOrientation(LinearLayout.VERTICAL);

    if (attrs != null) {
        LayoutInflater mLayoutInflater = LayoutInflater.from(getContext());
        //初始化状态View
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.PullToZoomScrollView);

        int zoomViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollZoomView, 0);
        if (zoomViewResId > 0) {
            mZoomView = mLayoutInflater.inflate(zoomViewResId, null, false);
            mZoomContainer.addView(mZoomView);
            mHeaderContainer.addView(mZoomContainer);
        }

        int headViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollHeadView, 0);
        if (headViewResId > 0) {
            mHeadView = mLayoutInflater.inflate(headViewResId, null, false);
            mHeaderContainer.addView(mHeadView);
        }
        int contentViewResId = a.getResourceId(R.styleable.PullToZoomScrollView_scrollContentView, 0);
        if (contentViewResId > 0) {
            mContentView = mLayoutInflater.inflate(contentViewResId, null, false);
            mContentContainer.addView(mContentView);
        }

        a.recycle();
    }

    DisplayMetrics localDisplayMetrics = new DisplayMetrics();
    ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
    mScreenHeight = localDisplayMetrics.heightPixels;
    mZoomWidth = localDisplayMetrics.widthPixels;
    mScalingRunnable = new ScalingRunnable();

    mRootContainer.addView(mHeaderContainer);
    mRootContainer.addView(mContentContainer);

    mRootContainer.setClipChildren(false);
    mHeaderContainer.setClipChildren(false);

    addView(mRootContainer);
}