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文本折叠的主要内容,如果未能解决你的问题,请参考以下文章