Android 容器展开效果示例代码 - 向右滑动展示更多内容
"以下是一个实现Android容器向右展开露出更多内容的示例代码:\n\n1. 创建一个XML布局文件,命名为activity_main.xml,包含一个按钮和一个要展开的内容容器:\n\nxml\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/tools\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:paddingLeft=\"16dp\"\n android:paddingTop=\"16dp\"\n android:paddingRight=\"16dp\"\n android:paddingBottom=\"16dp\"\n tools:context=\".MainActivity\">\n\n <Button\n android:id=\"@+id/expandButton\"\n android:layout_width=\"wrap_content\"\n android:layout_height=\"wrap_content\"\n android:text=\"Expand\"\n android:layout_centerInParent=\"true\" />\n\n <LinearLayout\n android:id=\"@+id/contentContainer\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"wrap_content\"\n android:orientation=\"vertical\"\n android:layout_below=\"@+id/expandButton\"\n android:visibility=\"gone\">\n\n <!-- 添加要展开的内容 -->\n\n </LinearLayout>\n\n</RelativeLayout>\n\n\n2. 在MainActivity.java中,设置点击按钮时展开或收起内容容器:\n\njava\nimport android.app.Activity;\nimport android.os.Bundle;\nimport android.view.View;\nimport android.view.animation.Animation;\nimport android.view.animation.Transformation;\nimport android.widget.Button;\nimport android.widget.LinearLayout;\n\npublic class MainActivity extends Activity {\n\n private boolean isExpanded = false;\n private LinearLayout contentContainer;\n private Button expandButton;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_main);\n\n contentContainer = findViewById(R.id.contentContainer);\n expandButton = findViewById(R.id.expandButton);\n\n expandButton.setOnClickListener(new View.OnClickListener() {\n @Override\n public void onClick(View v) {\n if (isExpanded) {\n collapse(contentContainer);\n } else {\n expand(contentContainer);\n }\n isExpanded = !isExpanded;\n }\n });\n }\n\n private void expand(final View view) {\n view.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);\n final int targetHeight = view.getMeasuredHeight();\n\n view.getLayoutParams().height = 0;\n view.setVisibility(View.VISIBLE);\n\n Animation animation = new Animation() {\n @Override\n protected void applyTransformation(float interpolatedTime, Transformation t) {\n view.getLayoutParams().height = interpolatedTime == 1\n ? LinearLayout.LayoutParams.WRAP_CONTENT\n : (int) (targetHeight * interpolatedTime);\n view.requestLayout();\n }\n\n @Override\n public boolean willChangeBounds() {\n return true;\n }\n };\n\n animation.setDuration(500);\n view.startAnimation(animation);\n }\n\n private void collapse(final View view) {\n final int initialHeight = view.getMeasuredHeight();\n\n Animation animation = new Animation() {\n @Override\n protected void applyTransformation(float interpolatedTime, Transformation t) {\n if (interpolatedTime == 1) {\n view.setVisibility(View.GONE);\n } else {\n view.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);\n view.requestLayout();\n }\n }\n\n @Override\n public boolean willChangeBounds() {\n return true;\n }\n };\n\n animation.setDuration(500);\n view.startAnimation(animation);\n }\n}\n\n\n这段代码实现了点击按钮时,内容容器向右展开或收起的效果。\n\n代码特点:\n* 利用Animation类实现展开收起的动画效果,使过渡更加平滑。\n* 使用LinearLayout.LayoutParams控制容器的高度,实现展开和收起。\n* 通过设置android:visibility属性控制容器的可见性。\n\n使用方法:\n1. 将代码中的activity_main.xml和MainActivity.java文件添加到您的Android项目中。\n2. 在contentContainer中添加您要展开的内容。\n3. 运行您的项目,点击Expand按钮即可看到容器展开和收起的效果。\n\n注意:\n* 您需要根据自己的需要修改代码中的动画时间和内容容器的布局。\n* 这段代码实现的是向右展开的效果,您也可以根据需要修改代码来实现其他方向的展开效果。\n\n希望这份代码能够帮助到您!
原文地址: https://www.cveoy.top/t/topic/pS3p 著作权归作者所有。请勿转载和采集!