Android点击展示/收起更多详情+动画效果 Value
来源:互联网 发布:网络推广课程 编辑:程序博客网 时间:2024/04/30 20:10
Android点击展示/收起更多详情+动画效果 Value
布局文件layout_look_details.xml
布局文件有一些注意事项
1.要保证所有参与动画的布局根节点高度必须是wrap_content,否则会出现位置错乱现象
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:id="@+id/layer1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f0f0f0" android:orientation="horizontal" android:gravity="right"> <LinearLayout android:layout_width="0dp" android:layout_weight="2" android:layout_height="match_parent" android:gravity="center_vertical" android:paddingLeft="@dimen/dp_10" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="@dimen/dp_30" android:gravity="center" android:text="第一期"/> <TextView android:layout_width="wrap_content" android:layout_height="@dimen/dp_30" android:gravity="center" android:text="编号:888888"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:paddingRight="@dimen/dp_10" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:gravity="right|center_vertical" android:text="今日5:00揭晓"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:id="@+id/look_detail" android:layout_width="wrap_content" android:layout_height="@dimen/dp_30" android:gravity="center" android:textColor="#0083ce" android:clickable="true" android:textSize="12sp" android:text="查看详情"/> <ImageView android:id="@+id/icon1" android:layout_width="30dp" android:layout_height="30dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/layer2" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:background="#60ff0000"> <TextView android:layout_width="wrap_content" android:layout_height="66dp" android:gravity="center" android:text="详情内容"/> </LinearLayout></LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/layout_look_details" /></LinearLayout>
MainActivity.java
package smx.com.demoanimal1;import android.animation.Animator;import android.animation.ValueAnimator;import android.support.v4.view.ViewCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewTreeObserver;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private int mLayoutHeight = 0; //动画执行的padding高度 private boolean isOpen = false; //是否开启状态 private TextView lookDetail; private LinearLayout layer2; private ImageView icon1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //展开/收起 initShowHide(); } /** * 展开收起 执行动画 */ private void initShowHide() { //布局完成 layer2.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { //移除所有监听 layer2.getViewTreeObserver().removeGlobalOnLayoutListener(this); mLayoutHeight = layer2.getHeight(); System.out.println("得到的高度:" + mLayoutHeight); //隐藏当前控件 layer2.setPadding(0,-mLayoutHeight,0,0); } }); //点击,开始执行动画 lookDetail.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ValueAnimator valueAnimator = new ValueAnimator(); if (isOpen){ valueAnimator.setIntValues(0, -mLayoutHeight); lookDetail.setText("查看详情"); }else { valueAnimator.setIntValues(-mLayoutHeight, 0); lookDetail.setText("收起"); } //设置监听的值 valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animator) { int value = (int) animator.getAnimatedValue(); layer2.setPadding(0,value,0,0); } }); //动画执行中监听 valueAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { //动画开始,不能点击 lookDetail.setClickable(false); } @Override public void onAnimationEnd(Animator animator) { lookDetail.setClickable(true); } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); valueAnimator.setDuration(500); valueAnimator.start(); //状态更改 isOpen = !isOpen; //进行旋转 ViewCompat.animate(icon1).rotationBy(180f).setDuration(500).start(); } }); } private void initView() { lookDetail = (TextView) findViewById(R.id.look_detail); layer2 = (LinearLayout) findViewById(R.id.layer2); icon1 = (ImageView) findViewById(R.id.icon1); }}
0 0
- Android点击展示/收起更多详情+动画效果 Value
- 动态设置TextView的高度,就是点击收起和展示更多的效果
- Android文件展示-展开收起效果
- 点击展示/收起Animation
- 简单实现内容详情的 更多 收起
- Android仿最美应用详情页动画效果
- Android ListView点击展开收起效果(一)
- android 更多 收起 简单实现
- android 点击效果动画增强
- android 点击效果动画增强
- 点击图片产生水波的动画效果代码展示
- Android列表中展开与收起详情
- Qt动画效果展示
- Qt动画效果展示
- Qt动画效果展示
- Qt动画效果展示
- Qt动画效果展示
- 点击listview的item,带动画效果的展开详情(一)
- 商人小鑫
- 大学感悟【八】
- xutils
- eclipse Mac安装了tomcat7.0,启动后在window-> preferences选项中找不到tomcat项
- TODO:字节的那点事Go篇
- Android点击展示/收起更多详情+动画效果 Value
- 《编程之美》-- 让CPU占用率听你指挥
- IO多路转接
- 第9章-数据融合技术
- 如何禁止qq等程序运行
- 关于List的contains方法问题
- 17 :多台物理机间的容器连接
- Android studio集成阿里百川HotFix
- App Widget深入+Android Studio 真机断点调试注意事项