卡片视图缩放动画
Card view scale animation
在我的应用程序中,我有一个卡片视图,其中包含一个文本视图和一个按钮,该按钮最初是隐藏的,单击卡片视图时会显示该按钮。我不知道如何在显示按钮时将其设置为动画。任何人都可以在代码或 xml 中建议一个很好的参考或教程来做到这一点。这是我的代码
这是我的自定义行
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="1dp"
android:elevation="5dp"
android:layout_margin="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/customRowPadding">
<TextView
android:id="@+id/txtCustomRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="10dp"
android:text="@string/sampleText"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Button
android:id="@+id/btnHidden"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hidden Button" />
</LinearLayout>
BindViewHolder 上的适配器
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.tv.setText(list.get(position));
holder.Btn.setText("Hidden Button " + (position + 1));
holder.Btn.setVisibility(View.GONE);
}
View Holder 和 clicklistener
static class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv ;
Button Btn;
public MyViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.txtCustomRow);
Btn = (Button) itemView.findViewById(R.id.btnHidden);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Btn.setVisibility(View.VISIBLE);
}
});
}
}
对于 API 11 或更高版本,最简单的方法是使用 layout change animation。因此,当您在消失的视图上将可见性设置为 View.Visible
时,这将在布局中为您的视图创建 space,并执行从不可见到可见的淡入动画。
您需要做的就是在父布局上设置此属性:
android:animateLayoutChanges="true"
在我的应用程序中,我有一个卡片视图,其中包含一个文本视图和一个按钮,该按钮最初是隐藏的,单击卡片视图时会显示该按钮。我不知道如何在显示按钮时将其设置为动画。任何人都可以在代码或 xml 中建议一个很好的参考或教程来做到这一点。这是我的代码
这是我的自定义行
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="1dp"
android:elevation="5dp"
android:layout_margin="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/customRowPadding">
<TextView
android:id="@+id/txtCustomRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="10dp"
android:text="@string/sampleText"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Button
android:id="@+id/btnHidden"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hidden Button" />
</LinearLayout>
BindViewHolder 上的适配器
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.tv.setText(list.get(position));
holder.Btn.setText("Hidden Button " + (position + 1));
holder.Btn.setVisibility(View.GONE);
}
View Holder 和 clicklistener
static class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv ;
Button Btn;
public MyViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.txtCustomRow);
Btn = (Button) itemView.findViewById(R.id.btnHidden);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Btn.setVisibility(View.VISIBLE);
}
});
}
}
对于 API 11 或更高版本,最简单的方法是使用 layout change animation。因此,当您在消失的视图上将可见性设置为 View.Visible
时,这将在布局中为您的视图创建 space,并执行从不可见到可见的淡入动画。
您需要做的就是在父布局上设置此属性:
android:animateLayoutChanges="true"