【发布时间】:2018-03-18 21:56:35
【问题描述】:
我想在我的 android 中有一个 transition views 是 Button 和另一个是 EditText,过渡必须像这个动画
我是这样尝试的
布局xml是
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="app.itc.org.todo.MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:background="@android:color/white"
android:gravity="center_horizontal|center_vertical">
<TextView
android:id="@+id/title_tv"
android:text="@string/to_do"
android:textSize="22sp"
android:textStyle="bold"
android:textColor="@android:color/black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"/>
<TextView
android:id="@+id/date_tv"
android:textSize="16sp"
android:textColor="@android:color/darker_gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/colorGray"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical">
<TextView
android:text="@string/what_do_you_want_to_do_today"
android:textSize="16sp"
android:textColor="@android:color/darker_gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"/>
<TextView
android:text="@string/start_adding_items_to_your_to_do_list"
android:textSize="16sp"
android:textColor="@android:color/darker_gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/transitions_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<Button
android:id="@+id/add_btn"
android:layout_width="200dp"
android:layout_height="60dp"
android:text="@string/add_item"
android:textSize="18sp"
android:paddingLeft="20dp"
android:textColor="@android:color/white"
android:drawableLeft="@drawable/ic_add_24dp"
android:background="@drawable/rounded_black_bg"
android:layout_gravity="center"/>
<EditText
android:id="@+id/item_input_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:minHeight="50dp"
android:layout_marginLeft="@dimen/margin_30dp"
android:layout_marginRight="@dimen/margin_30dp"
android:paddingLeft="@dimen/dimen_20dp"
android:paddingRight="@dimen/dimen_50dp"
android:textColor="@android:color/black"
android:inputType="text"
android:background="@drawable/rounded_edit_text"
android:layout_gravity="center"/>
</FrameLayout>
</RelativeLayout>
预览是
Java代码是
public class MainActivity extends AppCompatActivity {
private EditText mItemInputEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView dateTextView = (TextView) findViewById(R.id.date_tv);
mItemInputEditText = (EditText) findViewById(R.id.item_input_et);
final Button addButton = (Button) findViewById(R.id.add_btn);
final ViewGroup transitionsContainer = (ViewGroup) findViewById(R.id.transitions_container);
mItemInputEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
TransitionSet set = new TransitionSet()
.addTransition(new Fade())
.setInterpolator(new FastOutLinearInInterpolator());
TransitionManager.beginDelayedTransition(transitionsContainer, set);
}
addButton.setVisibility(View.VISIBLE);
mItemInputEditText.setVisibility(View.GONE);
}
});
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
TransitionSet set = new TransitionSet()
.addTransition(new Fade())
.setInterpolator(new FastOutLinearInInterpolator());
TransitionManager.beginDelayedTransition(transitionsContainer, set);
}
addButton.setVisibility(View.GONE);
mItemInputEditText.setVisibility(View.VISIBLE);
}
});
SimpleDateFormat dt = new SimpleDateFormat("EEE d MMM yyyy");
dateTextView.setText(dt.format(new Date()));
}
}
但是使用这段代码,结果转换是
正如您所看到的,与预期的相比,这有点奇怪,任何人都可以建议我进行一些更改以获得所需的过渡。
【问题讨论】:
-
你想要的过渡不是淡入淡出过渡。它是ChangeBounds。 developer.android.com/reference/android/transition/… 并使用单独的场景以获得更好的过渡。
-
请举个例子...
-
如果您不想使用单独的场景。我建议你创建一个自定义动画师。几天前,我还尝试将浮动操作按钮转换为 CardView。过渡并没有按预期进行。所以我为我的目的创建了一个动画师。
-
@ArshadAli,你能在 github 上发布一个具有这种行为的简单项目吗?
标签: java android animation android-animation android-transitions