类android.animation.LayoutTransition源码实例Demo

下面列出了怎么用android.animation.LayoutTransition的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: sensors-samples   文件: CardStreamLinearLayout.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void setCardStreamAnimator( CardStreamAnimator animators ){

    if( animators == null )
        mAnimators = new CardStreamAnimator.EmptyAnimator();
    else
        mAnimators = animators;

    LayoutTransition layoutTransition = getLayoutTransition();

    if( layoutTransition != null ){
        layoutTransition.setAnimator( LayoutTransition.APPEARING,
                mAnimators.getAppearingAnimator(getContext()) );
        layoutTransition.setAnimator( LayoutTransition.DISAPPEARING,
                mAnimators.getDisappearingAnimator(getContext()) );
    }
}
 
private void doLayoutAnimator() {
    LayoutTransition layoutTransition = new LayoutTransition();

    layoutTransition.setAnimator(LayoutTransition.APPEARING, getObjectAnimator(false));
    layoutTransition.setAnimator(LayoutTransition.DISAPPEARING, getObjectAnimator(true));
    layoutTransition.setDuration(2000);

    //mPuppet's parentView
    ViewGroup contentView = (ViewGroup) ((ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0);
    contentView.setLayoutTransition(layoutTransition);
    if (contentView.findViewById(R.id.view_puppet) == null) {
        contentView.addView(mPuppet);
    } else {
        contentView.removeView(mPuppet);
    }
}
 
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void setCardStreamAnimator( CardStreamAnimator animators ){

    if( animators == null )
        mAnimators = new CardStreamAnimator.EmptyAnimator();
    else
        mAnimators = animators;

    LayoutTransition layoutTransition = getLayoutTransition();

    if( layoutTransition != null ){
        layoutTransition.setAnimator( LayoutTransition.APPEARING,
                mAnimators.getAppearingAnimator(getContext()) );
        layoutTransition.setAnimator( LayoutTransition.DISAPPEARING,
                mAnimators.getDisappearingAnimator(getContext()) );
    }
}
 
源代码4 项目: AndroidAll   文件: LayoutTransitionFragment.java
private LayoutTransition createTransitionChange() {
    LayoutTransition mTransitioner = new LayoutTransition();
    //入场动画:view在这个容器中消失时触发的动画
    ObjectAnimator animIn = ObjectAnimator.ofFloat(null, "rotationY", 0f, 360f, 0f);
    mTransitioner.setAnimator(LayoutTransition.APPEARING, animIn);

    //出场动画:view显示时的动画
    ObjectAnimator animOut = ObjectAnimator.ofFloat(null, "rotation", 0f, 90f, 0f);
    mTransitioner.setAnimator(LayoutTransition.DISAPPEARING, animOut);

    PropertyValuesHolder pvhLeft = PropertyValuesHolder.ofInt("left", 0, 100, 0);
    PropertyValuesHolder pvhTop = PropertyValuesHolder.ofInt("top", 0, 0);
    PropertyValuesHolder pvhRight = PropertyValuesHolder.ofInt("right", 0, 0);
    PropertyValuesHolder pvhBottom = PropertyValuesHolder.ofInt("bottom", 0, 0);


    Animator changeAppearAnimator = ObjectAnimator.ofPropertyValuesHolder(layoutTransitionGroup,
            pvhLeft, pvhTop, pvhRight, pvhBottom);
    mTransitioner.setAnimator(LayoutTransition.CHANGE_APPEARING, changeAppearAnimator);

    /*
        1, LayoutTransition.CHANGE_APPEARING/CHANGE_DISAPPEARING 必须配合PropertyValuesHolder使用才能有效果(使用ObjectAnimator无效).
     */

    return mTransitioner;
}
 
源代码5 项目: lock-screen   文件: IndicatorDots.java
private void initView(Context context) {
    if (mIndicatorType == 0) {
        for (int i = 0; i < mPinLength; i++) {
            View dot = new View(context);
            emptyDot(dot);

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mDotDiameter,
                    mDotDiameter);
            params.setMargins(mDotSpacing, 0, mDotSpacing, 0);
            dot.setLayoutParams(params);

            addView(dot);
        }
    } else if (mIndicatorType == 2) {
        LayoutTransition layoutTransition = new LayoutTransition();
        layoutTransition.setDuration(DEFAULT_ANIMATION_DURATION);
        layoutTransition.setStartDelay(layoutTransition.APPEARING, 0);
        setLayoutTransition(layoutTransition);
    }
}
 
源代码6 项目: LiveGiftLayout   文件: GiftControl.java
/**
 * @param giftLayoutParent 存放礼物控件的父容器
 * @param giftLayoutNums   礼物控件的数量
 * @return
 */
public GiftControl setGiftLayout(LinearLayout giftLayoutParent, @NonNull int giftLayoutNums) {
    if (giftLayoutNums <= 0) {
        throw new IllegalArgumentException("GiftFrameLayout数量必须大于0");
    }
    if (giftLayoutParent.getChildCount() > 0) {//如果父容器没有子孩子,就进行添加
        return this;
    }
    mGiftLayoutParent = giftLayoutParent;
    mGiftLayoutMaxNums = giftLayoutNums;
    LayoutTransition transition = new LayoutTransition();
    transition.setAnimator(LayoutTransition.CHANGE_APPEARING,
            transition.getAnimator(LayoutTransition.CHANGE_APPEARING));
    transition.setAnimator(LayoutTransition.APPEARING,
            transition.getAnimator(LayoutTransition.APPEARING));
    transition.setAnimator(LayoutTransition.DISAPPEARING,
            transition.getAnimator(LayoutTransition.CHANGE_APPEARING));
    transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,
            transition.getAnimator(LayoutTransition.DISAPPEARING));
    mGiftLayoutParent.setLayoutTransition(transition);

    return this;
}
 
源代码7 项目: codeexamples-android   文件: LayoutAnimations.java
private void setupTransition(LayoutTransition transition) {
    CheckBox customAnimCB = (CheckBox) findViewById(R.id.customAnimCB);
    CheckBox appearingCB = (CheckBox) findViewById(R.id.appearingCB);
    CheckBox disappearingCB = (CheckBox) findViewById(R.id.disappearingCB);
    CheckBox changingAppearingCB = (CheckBox) findViewById(R.id.changingAppearingCB);
    CheckBox changingDisappearingCB = (CheckBox) findViewById(R.id.changingDisappearingCB);
    transition.setAnimator(LayoutTransition.APPEARING, appearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customAppearingAnim : defaultAppearingAnim) : null);
    transition.setAnimator(LayoutTransition.DISAPPEARING, disappearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customDisappearingAnim : defaultDisappearingAnim) : null);
    transition.setAnimator(LayoutTransition.CHANGE_APPEARING, changingAppearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customChangingAppearingAnim :
                    defaultChangingAppearingAnim) : null);
    transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,
            changingDisappearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customChangingDisappearingAnim :
                    defaultChangingDisappearingAnim) : null);
}
 
private void setupTransition(LayoutTransition transition) {
    CheckBox customAnimCB = (CheckBox) findViewById(R.id.customAnimCB);
    CheckBox appearingCB = (CheckBox) findViewById(R.id.appearingCB);
    CheckBox disappearingCB = (CheckBox) findViewById(R.id.disappearingCB);
    CheckBox changingAppearingCB = (CheckBox) findViewById(R.id.changingAppearingCB);
    CheckBox changingDisappearingCB = (CheckBox) findViewById(R.id.changingDisappearingCB);
    transition.setAnimator(LayoutTransition.APPEARING, appearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customAppearingAnim : defaultAppearingAnim) : null);
    transition.setAnimator(LayoutTransition.DISAPPEARING, disappearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customDisappearingAnim : defaultDisappearingAnim) : null);
    transition.setAnimator(LayoutTransition.CHANGE_APPEARING, changingAppearingCB.isChecked() ?
            (customAnimCB.isChecked() ? customChangingAppearingAnim :
                    defaultChangingAppearingAnim) : null);
    transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,
            changingDisappearingCB.isChecked() ?
                    (customAnimCB.isChecked() ? customChangingDisappearingAnim :
                            defaultChangingDisappearingAnim) : null);
}
 
源代码9 项目: Android_accordion_view   文件: AccordionView.java
/***
 * This function is used to prepare the layout after the initialize funciton but is called when the developer PROGRAMATICALLY adds
 * the accordion from the class. Hence, the accordion does not have the UI elements (children) yet
 * @param context
 */
private void prepareLayoutWithoutChildren(Context context) {
    initializeViewWithoutChildren(context);
    partition.setVisibility(isPartitioned ? VISIBLE : INVISIBLE);
    heading.setText(headingString);
    paragraph.setVisibility(VISIBLE);
    //paragraph.getViewTreeObserver().addOnGlobalLayoutListener(globalLayoutListener);
    if (isAnimated) {
        headingLayout.setLayoutTransition(new LayoutTransition());
    } else {
        headingLayout.setLayoutTransition(null);

    }

    if (isExpanded)
        expand();
    else
        collapse();

    setOnClickListenerOnHeading();

}
 
private void doLayoutAnimator() {
    LayoutTransition layoutTransition = new LayoutTransition();

    layoutTransition.setAnimator(LayoutTransition.APPEARING, getObjectAnimator(false));
    layoutTransition.setAnimator(LayoutTransition.DISAPPEARING, getObjectAnimator(true));
    layoutTransition.setDuration(2000);

    //mPuppet's parentView
    ViewGroup contentView = (ViewGroup) ((ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0);
    contentView.setLayoutTransition(layoutTransition);
    if (contentView.findViewById(R.id.view_puppet) == null) {
        contentView.addView(mPuppet);
    } else {
        contentView.removeView(mPuppet);
    }
}
 
源代码11 项目: hr   文件: OForm.java
private void init(Context context, AttributeSet attrs, int defStyleAttr,
                  int defStyleRes) {
    mFirstModeChange = true;
    mContext = context;
    if (attrs != null) {
        TypedArray types = mContext.obtainStyledAttributes(attrs,
                R.styleable.OForm);
        mModel = types.getString(R.styleable.OForm_modelName);
        mEditable = types.getBoolean(R.styleable.OForm_editableMode,
                false);
        autoUIGenerate = types.getBoolean(R.styleable.OForm_autoUIGenerate, true);
        icon_tint_color = types.getColor(R.styleable.OForm_controlIconTint, -1);
        types.recycle();
    }
    initForm();
    LayoutTransition transition = new LayoutTransition();
    setLayoutTransition(transition);
}
 
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void setCardStreamAnimator( CardStreamAnimator animators ){

    if( animators == null )
        mAnimators = new CardStreamAnimator.EmptyAnimator();
    else
        mAnimators = animators;

    LayoutTransition layoutTransition = getLayoutTransition();

    if( layoutTransition != null ){
        layoutTransition.setAnimator( LayoutTransition.APPEARING,
                mAnimators.getAppearingAnimator(getContext()) );
        layoutTransition.setAnimator( LayoutTransition.DISAPPEARING,
                mAnimators.getDisappearingAnimator(getContext()) );
    }
}
 
源代码13 项目: hashtag-view   文件: HashtagView.java
private void prepareLayoutTransition() {
    if (isDynamic) {
        layoutTransition = new LayoutTransition();
        layoutTransition.setStagger(LayoutTransition.APPEARING, 250);
        layoutTransition.setAnimateParentHierarchy(false);
    }
}
 
源代码14 项目: sensors-samples   文件: CardStreamLinearLayout.java
@Override
public void endTransition(LayoutTransition transition, ViewGroup container,
                          final View view, int transitionType) {

    Log.d(TAG, "End LayoutTransition animation:" + transitionType);
    if (transitionType == LayoutTransition.APPEARING) {
        final View area = view.findViewById(R.id.card_actionarea);
        if (area != null) {
            runShowActionAreaAnimation(container, area);
        }
    }
}
 
源代码15 项目: sensors-samples   文件: CardStreamLinearLayout.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    Log.d(TAG, "onLayout: " + changed);

    if( changed && !mLayouted ){
        mLayouted = true;

        ObjectAnimator animator;
        LayoutTransition layoutTransition = new LayoutTransition();

        animator = mAnimators.getDisappearingAnimator(getContext());
        layoutTransition.setAnimator(LayoutTransition.DISAPPEARING, animator);

        animator = mAnimators.getAppearingAnimator(getContext());
        layoutTransition.setAnimator(LayoutTransition.APPEARING, animator);

        layoutTransition.addTransitionListener(mTransitionListener);

        if( animator != null )
            layoutTransition.setDuration(animator.getDuration());

        setLayoutTransition(layoutTransition);

        if( mShowInitialAnimation )
            runInitialAnimations();

        if (mFirstVisibleCardTag != null) {
            scrollToCard(mFirstVisibleCardTag);
            mFirstVisibleCardTag = null;
        }
    }
}
 
源代码16 项目: codeexamples-android   文件: MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	LayoutTransition l = new LayoutTransition();
	l.enableTransitionType(LayoutTransition.CHANGING);
	viewGroup = (ViewGroup) findViewById(R.id.container);
	viewGroup.setLayoutTransition(l);

}
 
源代码17 项目: android_9.0.0_r45   文件: FragmentBreadCrumbs.java
/**
 * Attach the bread crumbs to their activity.  This must be called once
 * when creating the bread crumbs.
 */
public void setActivity(Activity a) {
    mActivity = a;
    mInflater = (LayoutInflater)a.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mContainer = (LinearLayout)mInflater.inflate(
            com.android.internal.R.layout.fragment_bread_crumbs,
            this, false);
    addView(mContainer);
    a.getFragmentManager().addOnBackStackChangedListener(this);
    updateCrumbs();
    setLayoutTransition(new LayoutTransition());
}
 
源代码18 项目: JustBar   文件: JustBar.java
private void init() {
    LayoutTransition lt = new LayoutTransition();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        lt.disableTransitionType(LayoutTransition.DISAPPEARING);
    }
    setLayoutTransition(lt);


    setOrientation(HORIZONTAL);
    setGravity(Gravity.CENTER_VERTICAL);

}
 
源代码19 项目: imsdk-android   文件: PbChatActivity.java
/**
 * 显示搜索按钮
 */
@SuppressLint("ObjectAnimatorBinding")
private void showSearchView() {
    if (isFinishing()) {
        return;
    }
    final TipsFloatView tipsFloatView = new TipsFloatView(this);
    tipsFloatView.setTag(TAG_SEARCH_VIEW);
    tipsFloatView.setClickListener(v -> {
        Intent intent = ReflectUtil.getQtalkServiceRNActivityIntent(PbChatActivity.this);
        if(intent == null){
            return;
        }
        intent.putExtra("module", "Search");
        intent.putExtra("Version", "1.0.0");
        intent.putExtra("xmppid", jid);
        intent.putExtra("realjid", realJid);
        intent.putExtra("chatType", chatType);
        intent.putExtra("Screen", "LocalSearch");
        startActivity(intent);
        clearSearchTip();
    });

    final LayoutTransition layoutTransition = new LayoutTransition();
    layoutTransition.setAnimator(LayoutTransition.APPEARING, ObjectAnimator.ofFloat(this, "scaleX", 0, 1));
    getHandler().postDelayed(() -> {
        if(!isFinishing()){
            chating_view.setLayoutTransition(layoutTransition);
            chating_view.addView(tipsFloatView);
        }
    }, 500);

}
 
源代码20 项目: 1Rramp-Android   文件: CustomHashTagInput.java
private void init(Context context) {
  this.context = context;
  View view = LayoutInflater.from(context).inflate(R.layout.custom_hashtag_layout, this);
  ButterKnife.bind(this, view);
  (chipsContainer).getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
  attachListener();
}
 
源代码21 项目: LB-Launcher   文件: PageIndicator.java
private void disableLayoutTransitions() {
    LayoutTransition transition = getLayoutTransition();
    transition.disableTransitionType(LayoutTransition.APPEARING);
    transition.disableTransitionType(LayoutTransition.DISAPPEARING);
    transition.disableTransitionType(LayoutTransition.CHANGE_APPEARING);
    transition.disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING);
}
 
源代码22 项目: mcumgr-android   文件: StatsFragment.java
@Override
public void onViewCreated(@NonNull final View view, @Nullable final Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ButterKnife.bind(this, view);

    // This makes the layout animate when the TextView value changes.
    // By default it animates only on hiding./showing views.
    // The view must have android:animateLayoutChanges(true) attribute set in the XML.
    ((ViewGroup) view).getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
 
源代码23 项目: alpha-wallet-android   文件: HelpHolder.java
@Override
public void bind(@Nullable HelpItem helpItem, @NonNull Bundle addition) {
    questionText.setText(helpItem.getQuestion());
    if (helpItem.getResource() > 0) rawResource = helpItem.getResource();
    else answerText.setText(helpItem.getAnswer());

    answerLayout.setVisibility(View.GONE);
    webView.setVisibility(View.GONE);

    LinearLayout container = findViewById(R.id.item_help);

    container.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
 
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    Log.d(TAG, "onLayout: " + changed);

    if( changed && !mLayouted ){
        mLayouted = true;

        ObjectAnimator animator;
        LayoutTransition layoutTransition = new LayoutTransition();

        animator = mAnimators.getDisappearingAnimator(getContext());
        layoutTransition.setAnimator(LayoutTransition.DISAPPEARING, animator);

        animator = mAnimators.getAppearingAnimator(getContext());
        layoutTransition.setAnimator(LayoutTransition.APPEARING, animator);

        layoutTransition.addTransitionListener(mTransitionListener);

        if( animator != null )
            layoutTransition.setDuration(animator.getDuration());

        setLayoutTransition(layoutTransition);

        if( mShowInitialAnimation )
            runInitialAnimations();

        if (mFirstVisibleCardTag != null) {
            scrollToCard(mFirstVisibleCardTag);
            mFirstVisibleCardTag = null;
        }
    }
}
 
源代码25 项目: LaunchEnr   文件: Workspace.java
private void setupLayoutTransition() {
    // We want to show layout transitions when pages are deleted, to close the gap.
    mLayoutTransition = new LayoutTransition();
    mLayoutTransition.enableTransitionType(LayoutTransition.DISAPPEARING);
    mLayoutTransition.enableTransitionType(LayoutTransition.CHANGE_DISAPPEARING);
    mLayoutTransition.disableTransitionType(LayoutTransition.APPEARING);
    mLayoutTransition.disableTransitionType(LayoutTransition.CHANGE_APPEARING);
    setLayoutTransition(mLayoutTransition);
}
 
源代码26 项目: BarChart   文件: BarChart.java
private void initHorizontalChart() {
    horizontalLinearParent = new LinearLayout(context);
    horizontalLinearParent.setOrientation(LinearLayout.VERTICAL);
    horizontalLinearParent.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));
    horizontalLinearParent.setGravity(Gravity.LEFT | Gravity.START);
    if (isShowAnimation) {
        horizontalLinearParent.setLayoutTransition(new LayoutTransition());
    }
    this.addView(horizontalLinearParent);
}
 
源代码27 项目: BarChart   文件: BarChart.java
private void initVerticalChart() {
    verticalLinearParent = new LinearLayout(context);
    verticalLinearParent.setOrientation(LinearLayout.HORIZONTAL);
    verticalLinearParent.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));
    verticalLinearParent.setGravity(Gravity.BOTTOM);
    if (isShowAnimation) {
        verticalLinearParent.setLayoutTransition(new LayoutTransition());
    }
    this.addView(verticalLinearParent);
}
 
源代码28 项目: AndroidAll   文件: LayoutTransitionFragment.java
private LayoutTransition createTransition() {
    LayoutTransition mTransitioner = new LayoutTransition();
    //入场动画:view在这个容器中消失时触发的动画
    ObjectAnimator animIn = ObjectAnimator.ofFloat(null, "rotationY", 0f, 360f, 0f);
    mTransitioner.setAnimator(LayoutTransition.APPEARING, animIn);

    //出场动画:view显示时的动画
    ObjectAnimator animOut = ObjectAnimator.ofFloat(null, "rotation", 0f, 90f, 0f);
    mTransitioner.setAnimator(LayoutTransition.DISAPPEARING, animOut);
    return mTransitioner;
}
 
/**
 * Set if animation should be enabled
 *
 * @param shouldAnimate If animation should be enabled
 */
public void setAnimationEnabled(boolean shouldAnimate) {
	mAnimationEnabled = shouldAnimate;
	if (shouldAnimate) {
		mRightContainer.setLayoutTransition(new LayoutTransition());
	} else {
		mRightContainer.setLayoutTransition(null);
	}
}
 
源代码30 项目: FakeWeather   文件: WeatherChartView.java
public WeatherChartView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    this.setOrientation(VERTICAL);
    transition.enableTransitionType(LayoutTransition.APPEARING);
    this.setLayoutTransition(transition);
    rowParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    cellParams = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1);
    chartParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}