【发布时间】:2016-09-21 09:16:45
【问题描述】:
ObjectAnimator.ofFloat(Object target, String xPropertyName, String yPropertyName, Path path) 似乎适用于 API 21 但不适用于 API 23?
简单复制:这是活动和布局。尝试长按文本视图,两个级别都可以。但是,只需点击视图:21 个作品,但不是 23 个。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View hello = findViewById(R.id.hello);
final Path p = new Path();
p.addCircle(-200, 0, 100, Path.Direction.CW);
hello.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjectAnimator a = ObjectAnimator.ofFloat(hello, "translationX", "translationY", p);
a.setDuration(1000);
a.start();
}
});
hello.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
ObjectAnimator a = ObjectAnimator.ofFloat(hello, "scaleX", 2);
a.setDuration(1000);
a.start();
return true;
}
});
}
}
--
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="letstwinkle.com.pathtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="63dp"
android:layout_marginTop="210dp"
android:id="@+id/hello"
android:background="#880033"/>
</RelativeLayout>
这可能与 6 月份报告的此错误相同。 https://code.google.com/p/android/issues/detail?id=212776
【问题讨论】:
-
我用 AppCompatActivity 和模拟器版本 22 和 23 进行了测试:在 22 上工作,在 23 上开始移动,但在那之后立即冻结。
-
我添加了一个更新侦听器,并查看了动画值 - 在 API 21 上它有所不同,但在 API 23 上它是稳定的,总是相同的“-100” - 确切地说。
-
并且使用 path.lineTo(200,200) - 它运行良好。需要深入研究圈子的东西,甚至文本视图的东西已经改变了。
-
ImageView 的行为相同,所以它不仅仅是关于 TextView
-
部分弧线也会发生,这才是我真正关心的;刚刚用了一个圆圈来测试。
标签: android android-animation android-6.0-marshmallow android-graphics