带有动画、颜色和边框的自定义视图包含内部文本视图
Custom View with animation,color and border containing inner textview
参考下图,我希望带有黄色背景和右边框的视图从右侧滑入一些文本。所以这个要求包括:
- 创建自定义视图(我想这需要 canvas)
- 给它宽度、高度、位置、颜色、边框、边框颜色等
- 从右边滑动的动画
- 此自定义视图中的 textview 以显示文本
我参考了 this 教程以了解如何在布局中包含带有 canvas 的视图。但是我尝试了以下而不是硬编码点位置:
public MyView(Context context) {
super(context);
WindowManager wm = (WindowManager) DashBoardActivity.mContext
.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
width = size.x;
height = size.y;
width -= 10;
height -= 50;
myPath = new Pt[6];
myPath[0] = new Pt(width, height);
myPath[1] = new Pt(width - 400, height);
myPath[2] = new Pt(width - 500, height - 100);
myPath[3] = new Pt(width - 400, height - 200);
myPath[4] = new Pt(width, height - 200);
myPath[5] = new Pt(width, height);
}
但是视图没有按照预期定位。我尝试了不同的硬编码位置,但要么显示在错误的位置,要么根本不显示。
此外,为了显示文本,我在布局本身中添加了 textview,但它显示在屏幕的左上角,而不是下图所示的位置。
我怎样才能做到这一点?任何建议表示赞赏。
您不需要任何自定义视图,您可以将形状或 9patch 图像设置为文本视图的背景,并使用对象动画器为该文本视图设置动画。
Border in shape xml
参考下图,我希望带有黄色背景和右边框的视图从右侧滑入一些文本。所以这个要求包括:
- 创建自定义视图(我想这需要 canvas)
- 给它宽度、高度、位置、颜色、边框、边框颜色等
- 从右边滑动的动画
- 此自定义视图中的 textview 以显示文本
我参考了 this 教程以了解如何在布局中包含带有 canvas 的视图。但是我尝试了以下而不是硬编码点位置:
public MyView(Context context) {
super(context);
WindowManager wm = (WindowManager) DashBoardActivity.mContext
.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
width = size.x;
height = size.y;
width -= 10;
height -= 50;
myPath = new Pt[6];
myPath[0] = new Pt(width, height);
myPath[1] = new Pt(width - 400, height);
myPath[2] = new Pt(width - 500, height - 100);
myPath[3] = new Pt(width - 400, height - 200);
myPath[4] = new Pt(width, height - 200);
myPath[5] = new Pt(width, height);
}
但是视图没有按照预期定位。我尝试了不同的硬编码位置,但要么显示在错误的位置,要么根本不显示。
此外,为了显示文本,我在布局本身中添加了 textview,但它显示在屏幕的左上角,而不是下图所示的位置。
我怎样才能做到这一点?任何建议表示赞赏。
您不需要任何自定义视图,您可以将形状或 9patch 图像设置为文本视图的背景,并使用对象动画器为该文本视图设置动画。 Border in shape xml