更改圆形显示动画的颜色
Changing the color of the circular reveal animation
我向我的 fab 按钮添加了圆形显示动画,但我没有将片段颜色更改为不同的颜色,而是想更改动画的颜色,因为我希望我的下一个片段是白色背景。我试图将片段颜色更改为不同于白色并再次变回白色,但它没有用。那么有没有办法改变动画的颜色,而不是片段的颜色?这是我的一些代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View rootView = inflater.inflate(R.layout.fragment_note_add, container, false);
rootView.addOnLayoutChangeListener(new View.OnLayoutChangeListener(){
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom){
rootView.removeOnLayoutChangeListener(this);
rootView.setBackgroundColor(getArguments().getInt("color"));
int cx = getArguments().getInt("cx");
int cy = getArguments().getInt("cy");
int radius = (int) Math.hypot(right, bottom);
Animator reveal = ViewAnimationUtils.createCircularReveal(v, cx, cy, 0, radius);
reveal.setInterpolator(new DecelerateInterpolator(2f));
reveal.start();
}
});
return rootView;
}
这里我又尝试把背景弄白了
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
//Initialize UI Elements
FloatingActionButton saveButton = view.findViewById(R.id.fab_add);
saveButton.setOnClickListener(saveButtonListener);
editText = view.findViewById(R.id.note_editor);
view.setBackgroundColor(getResources().getColor(R.color.white));
super.onViewCreated(view, savedInstanceState);
}
在这种情况下没有"animation color"这样的东西。 Circular Reveal 动画,在引擎盖下,将圆形裁剪蒙版应用于视图并为裁剪值设置动画以直观地表示 "reveal"。您看到的显示颜色是实际视图本身。
如果我理解正确的话,您希望在视图中进行颜色过渡,因为显示是 运行。如果是这种情况,请遵循以下步骤:
- 声明开始和结束颜色。
- 将动画侦听器附加到圆形显示动画。
- 在显示动画更新时,使用 ARGBevaluator 使用显示动画的当前进度在开始和结束颜色之间进行评估。将此颜色值设置为视图的背景。
我向我的 fab 按钮添加了圆形显示动画,但我没有将片段颜色更改为不同的颜色,而是想更改动画的颜色,因为我希望我的下一个片段是白色背景。我试图将片段颜色更改为不同于白色并再次变回白色,但它没有用。那么有没有办法改变动画的颜色,而不是片段的颜色?这是我的一些代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View rootView = inflater.inflate(R.layout.fragment_note_add, container, false);
rootView.addOnLayoutChangeListener(new View.OnLayoutChangeListener(){
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom){
rootView.removeOnLayoutChangeListener(this);
rootView.setBackgroundColor(getArguments().getInt("color"));
int cx = getArguments().getInt("cx");
int cy = getArguments().getInt("cy");
int radius = (int) Math.hypot(right, bottom);
Animator reveal = ViewAnimationUtils.createCircularReveal(v, cx, cy, 0, radius);
reveal.setInterpolator(new DecelerateInterpolator(2f));
reveal.start();
}
});
return rootView;
}
这里我又尝试把背景弄白了
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
//Initialize UI Elements
FloatingActionButton saveButton = view.findViewById(R.id.fab_add);
saveButton.setOnClickListener(saveButtonListener);
editText = view.findViewById(R.id.note_editor);
view.setBackgroundColor(getResources().getColor(R.color.white));
super.onViewCreated(view, savedInstanceState);
}
在这种情况下没有"animation color"这样的东西。 Circular Reveal 动画,在引擎盖下,将圆形裁剪蒙版应用于视图并为裁剪值设置动画以直观地表示 "reveal"。您看到的显示颜色是实际视图本身。
如果我理解正确的话,您希望在视图中进行颜色过渡,因为显示是 运行。如果是这种情况,请遵循以下步骤:
- 声明开始和结束颜色。
- 将动画侦听器附加到圆形显示动画。
- 在显示动画更新时,使用 ARGBevaluator 使用显示动画的当前进度在开始和结束颜色之间进行评估。将此颜色值设置为视图的背景。