我想在工作应用程序中添加一个移动的“浮动”文本。
我有一个具有一些基本布局的工作应用程序,类似于:
<LinearLayout>
<TextView />
<TextView />
</LinearLayout>
我的应用程序动态添加 TextViews,所以我需要滚动视图...
我想要一个小的指示,比如每次用户点击某个地方时都会出现一个“+1”,然后向上浮动(移动)并在屏幕顶部消失。我会感谢任何可以提供简单方法的人。
- 我应该
TextView
动态创建一个并将其添加到布局中吗? - 我是否需要添加一个与 ScrollView 重叠的相对布局,以便可以相对于它移动文本?
- 我应该尝试在我创建的画布上绘制它吗?
- 我应该使用一个
ObjectAnimator
并让它全部“动画化”吗?
我之前没有任何这些经验,所以我希望有人可以在我尝试所有这些之前指出我最简单的路线......
更新:
我能够在特定位置创建一个“悬停”文本视图(还没有移动):
- 在我之前的布局中添加了一个 RelativeLayout 作为根布局。
我为浮动文本创建了一个布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/floatingViewLinearLayout" > <TextView /> </LinearLayout>
创建了一个服装视图来处理它:
公共类 FloatingText 扩展视图 {
private View floatingLayoutView;
public FloatingText(Context context) {
super(context);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
floatingLayoutView = inflater.inflate(R.layout.floating_text, null);
TextView tv = (TextView) floatingLayoutView
.findViewById(R.id.flaotingViewTextView);
tv.setText("+1");
tv.setBackgroundColor(Color.TRANSPARENT);
tv.setTextColor(Color.RED);
tv.setTypeface(Typeface.MONOSPACE);
tv.bringToFront();
}
public View getFloatingLayoutView() {
return floatingLayoutView;
}
}
请注意,我添加了一个 get 方法来接收视图。我确信这是一个可怕的解决方案。接下来你可以看到我是如何使用它的:
在主要活动的 onResume 中添加此代码:
RelativeLayout main = (RelativeLayout) findViewById(R.id.MainRelativeLayout); FloatingText ft = new FloatingText(this); final View floatingLayoutView = ft.getFloatingLayoutView(); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); lp.setMargins(140, 300, 0, 0); floatingLayoutView.setLayoutParams(lp); main.addView(floatingLayoutView);
我希望能够让 FloatingText 类自己做 addView,但我仍然不确定一种干净的方法。
下一个挑战是以与 API 8 兼容的方式对其进行动画处理。似乎在 API 11 中添加了动画助手,并且在 API 12 中添加了一些(如 amAlsoNew 提到的 viewproperyanimator)。
同样,任何指针和问题都将受到欢迎!