我希望在我的应用程序中复制以下内容:
正如您所看到的,它基本上是一个按钮,用于增加/减少其中包含的文本视图的值。此按钮将具有三种视觉状态 - >未压缩,减少和增加(如上图所示,用户点击增加箭头,按钮出现在那一侧)
以下是我的3个按钮状态:
正如您所看到的,我遇到的问题是能够正确倾斜/旋转文本视图,使其看起来在视觉上正确,并且在按钮增加或减少时会与按钮一起倾斜。
到目前为止,我尝试了两种不同的方法:
创建一个自定义文本视图类,它会覆盖onDraw()
方法以使画布倾斜:
@Override
public void onDraw(Canvas canvas) {
canvas.save();
canvas.skew(0.2f, 0f);
super.onDraw(canvas);
canvas.restore();
}
整合Rotate3dAnimation
类(来源here)并使用许多不同的变体来获得所需的结果,例如:
Rotate3dAnimation skew = new Rotate3dAnimation(
30, 0, centerX, centerY, 0, false);
txtAmount.startAnimation(skew);
不幸的是,我没有得到反映上面第一张图片的确切结果。我对使用Z轴,倾斜,旋转等设置值感到困惑。
我非常感谢任何有过这方面经验的人的帮助。提前致谢
答案 0 :(得分:7)
我甚至尝试过,我想出了类似的东西:
public class DemoActivity extends TextView {
Context context;
String firstText = "$120.00";
public DemoActivity(Context context)
{
super(context);
this.context = context;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
setText(firstText);
setTextSize(30);
canvas.skew(1.0f, 0.3f); //you need to change values over here
Rotate3dAnimation skew = new Rotate3dAnimation(
-20, 30,200, 200, 0, false); //here too
startAnimation(skew);
}
}
我的输出为:
我想通过反复试验来改变这些值可以解决您的问题。 希望它有所帮助。
答案 1 :(得分:0)
感谢Parth Doshi回答。他的回答需要稍微调整才能运行,我在这里分享以节省别人的时间。
首先在src文件夹中创建一个类并编写所有三个构造函数。
public class TextViewDemo extends TextView {
Context context;
String text = "TESTING 3DX TOOLS";
public TextViewDemo(Context context) {
super(context);
this.context = context;
}
public TextViewDemo(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public TextViewDemo(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = context;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
setText(text);
setTextSize(30);
canvas.skew(0.5f, 1.0f); // you need to change values over here
Rotate3dAnimation skew = new Rotate3dAnimation(-50, 30, 0, 0, 0,
false); // here too
startAnimation(skew);
}
}
在res / layout / my_layout.xml文件中,您可以添加自定义TextView的标记。
<com.yourpackage.name.TextViewDemo
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Hello World"
<!-- All parameters and value shall remain same -->
/>
与任何其他视图一样,您可以在onCreate()方法中创建TextViewDemo的实例
TextViewDemo txtDemo = (TextViewDemo) findViewById(R.id.name);
此致