Aandroidw文本折叠

Posted generallizhong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Aandroidw文本折叠相关的知识,希望对你有一定的参考价值。

一个非常简单且带有动画的文本折叠。

此代码逻辑为第一次安装进入程序,默认为展开状态,此后进入都为收起状态。

直接看代码:

 

 public void initview() {
 
        if (IsStartFirst()) {、
 
           hintOpenLinearLayout.setVisibility(View.GONE);
           hintCloseLinearLayout.setVisibility(View.VISIBLE);
            isExpand = true;
        } else {
           topTip.setHeight(mViewBinding.topTip.getLineHeight() * maxDescripLine);  //descriptionView设置默认显示高度
            topTip.post(new Runnable() {
 
                @Override
                public void run() {
 
                  hintCloseLinearLayout.setVisibility(View.GONE);
                  hintOpenLinearLayout.setVisibility(View.VISIBLE);
 
                }
            });
            isExpand = false;
        }
 
 
      descriptionLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isExpand = !isExpand;
                mViewBinding.topTip.clearAnimation();//清除动画效果
                int deltaValue;//默认高度,即前边由maxLine确定的高度
                final int startValue =  mViewBinding.topTip.getHeight();//起始高度
                int durationMillis = 350;//动画持续时间
                if (isExpand) {
                    /**
                     * 折叠动画
                     * 从实际高度缩回起始高度
                     */
                    deltaValue =  mViewBinding.topTip.getLineHeight() *  topTip.getLineCount() - startValue;
                    RotateAnimation animation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                    animation.setDuration(durationMillis);
                   topTip.startAnimation(animation);
                   hintOpenLinearLayout.setVisibility(View.GONE);
                   hintCloseLinearLayout.setVisibility(View.VISIBLE);
                } else {
                    /**
                     * 展开动画
                     * 从起始高度增长至实际高度
                     */
                    deltaValue =  mViewBinding.topTip.getLineHeight() * maxDescripLine - startValue;
                    RotateAnimation animation = new RotateAnimation(180, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                    animation.setDuration(durationMillis);
                    animation.setFillAfter(true);
                    mViewBinding.hintOpenView.startAnimation(animation);
                    mViewBinding.hintCloseLinearLayout.setVisibility(View.GONE);
                    mViewBinding.hintOpenLinearLayout.setVisibility(View.VISIBLE);
 
                }
                Animation animation = new Animation() {
                    protected void applyTransformation(float interpolatedTime, Transformation t) { //根据ImageView旋转动画的百分比来显示textview高度,达到动画效果
                        mViewBinding.topTip.setHeight((int) (startValue + deltaValue * interpolatedTime));
                    }
                };
                animation.setDuration(durationMillis);
                mViewBinding.topTip.startAnimation(animation);
            }
        });
    }
 
    private Boolean IsStartFirst() {//判断是否第一次打开
        SharedPreferences setting = getSharedPreferences("First.ini", 0);
        Boolean user_first = setting.getBoolean("FIRST", true);
        if (user_first) {//第一次
            setting.edit().putBoolean("FIRST", false).commit();
            return true;
        } else {
            return false;
        }
    } 



布局代码: 

 

 <LinearLayout
                android:id="@+id/description_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/color_f5fbff"
                android:orientation="vertical"
                android:paddingLeft="12dip"
                android:paddingTop="5dip"
                android:paddingRight="12dip">
 
 
                <TextView
                    android:id="@+id/top_tip"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_vertical"
                    android:paddingStart="11dp"
                    android:textColor="@color/color_349DEA"
                    android:textSize="@dimen/text_size_14"
                    android:textStyle="bold"
                    tools:text="可以在这里直接通过支付宝给工人发放生活费。转账、提现均免费。" />
 
                <LinearLayout
                    android:id="@+id/hint_open_LinearLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:orientation="horizontal"
                    android:paddingLeft="5dip"
                    android:paddingTop="5dip"
                    android:paddingRight="5dip"
                    android:paddingBottom="5dip"
                    android:visibility="gone">
 
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/color_000000"
                        android:text="@string/hint_open" />
 
                    <ImageView
                        android:id="@+id/hint_open_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right"
                        android:paddingLeft="5dip"
                        android:paddingTop="5dip"
                        android:paddingRight="5dip"
                        android:paddingBottom="5dip"
                        android:src="@mipmap/hint_open"
                        />
 
                </LinearLayout>
 
                <LinearLayout
                    android:id="@+id/hint_close_LinearLayout"
                    android:visibility="gone"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:orientation="horizontal"
                    android:paddingLeft="5dip"
                    android:paddingTop="5dip"
                    android:paddingRight="5dip"
                    android:paddingBottom="5dip">
 
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/color_000000"
                        android:text="@string/hint_close" />
 
                    <ImageView
                        android:id="@+id/hint_close_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right"
                        android:paddingLeft="5dip"
                        android:paddingTop="5dip"
                        android:paddingRight="5dip"
                        android:paddingBottom="5dip"
                        android:src="@mipmap/hint_close"
                        />
 
                </LinearLayout>
            </LinearLayout> 



           
                                                                                                                   -END

以上是关于Aandroidw文本折叠的主要内容,如果未能解决你的问题,请参考以下文章

为markdown代码块添加行号,复制和折叠按钮

可折叠工具栏 - 使片段页脚在 Android 中始终可见

折叠选定的文本

vscode 如何快速把折叠的代码块给注释了?

Xamarin - 折叠文本[关闭]

标题下的可折叠文本