在Android中歪曲文本视图

elg*_*oog 9 android android-widget android-animation android-canvas

我想在我的应用程序中复制以下内容:

在此输入图像描述

如您所见,它基本上是一个按钮,用于增加/减少其中包含的文本视图的值.此按钮将具有三种视觉状态 - >未按下,减少和增加(如上图所示,用户点击增加箭头,按钮显示在该侧按下)

这是我目前的3个按钮状态:

在此输入图像描述 在此输入图像描述 在此输入图像描述

正如您所看到的,我遇到的问题是能够正确地倾斜/旋转文本视图,使其看起来视觉上正确,并且当按钮增加或减少时,它与按钮一起倾斜.

到目前为止,我尝试了两种不同的方法:

  • 创建一个自定义文本视图类,该类重写onDraw()倾斜画布的方法:

    @Override
    public void onDraw(Canvas canvas) { 
       canvas.save(); 
    
       canvas.skew(0.2f, 0f);
    
       super.onDraw(canvas); 
       canvas.restore();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 集成Rotate3dAnimation(源于此处)并使用许多不同的变体来获得所需的结果,例如:

       Rotate3dAnimation skew = new Rotate3dAnimation(
              30, 0, centerX, centerY, 0, false);
       txtAmount.startAnimation(skew); 
    
    Run Code Online (Sandbox Code Playgroud)

不幸的是,我没有得到完全反映上面第一张图片的结果.我对使用Z轴,倾斜,旋转等设置值感到困惑.

我非常感谢任何有这方面经验的人的帮助.提前致谢

Par*_*shi 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);

        }
    }
Run Code Online (Sandbox Code Playgroud)

我有一个输出:

在此输入图像描述

我想通过反复试验来改变这些值可以解决您的问题.希望能帮助到你.

  • 为什么Activity会扩展TextView?当然这只是令人困惑.. (3认同)