android - 具有自定义视图的 objectanimator
问题描述
我想在我的自定义视图上有一个简单的动画。我使用了 objectanimator,但自定义视图没有移动。
当我用另一个对象(如文本视图)尝试此操作时,它可以工作。
下面是我的代码。z1 是我想移动的自定义视图。
public class FinalActivity extends Activity {
MyViewX z1;
TextView t1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_final);
z1 = (MyViewX) findViewById(R.id.xview);
t1 = (TextView) findViewById(R.id.textView1);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if(hasFocus){
ObjectAnimator animation = ObjectAnimator.ofFloat(z1, "translationX", 100f);
animation.setDuration(5000);
animation.start();
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5sp"
tools:context=".FrmActivity" >
<com.test.game.myviewx
android:id="@+id/xview"
android:layout_width="200dp"
android:layout_height="200dp"
/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="72dp"
android:layout_marginTop="173dp"
android:text="TextView" />
</RelativeLayout>
public class MyViewX extends View
{
public MyViewX(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyViewX(Context context, AttributeSet attributeset) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.base1);
int x=80;
int y=80;
int radius=40;
Paint paint=new Paint();
// Use Color.parseColor to define HTML colors
paint.setColor(Color.parseColor("#CD5C5C"));
canvas.drawCircle(x,x, radius, paint);
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
代码不会崩溃并且似乎可以运行,但自定义视图中的圆圈和位图不会移动。
我错过了什么?
解决方案
当您创建您的构造函数时,我看到一个问题myviewx
请编辑它
public class myviewx extends View {
public myviewx(Context context) {
super(context);
}
public myviewx(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public myviewx(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.base1);
int x = 80;
int y = 80;
int radius = 40;
Paint paint = new Paint();
// Use Color.parseColor to define HTML colors
paint.setColor(Color.parseColor("#CD5C5C"));
canvas.drawCircle(x, x, radius, paint);
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
推荐阅读
- unity3d - 如何在Unity中使人物面朝相反方向?
- javascript - 试图限制 ASP.NET MVC 中 int 数据类型的大小限制
- python - 如何将过滤后的查询集从列表视图传递到另一个使用 PDFTemplateView 进行打印的视图?
- javascript - V-FOR VUE 不显示图像
- php - 在 Laravel 5.5 中找不到 User::create()
- c# - 如何使用标准输入流而不是 Console.ReadKey
- flutter - Flutter testWidgets with flutter_bloc - 测试只有在一起执行时才会失败
- mysql - 试图弄清楚如何找到最大计数
- opengl-es - 如何使用立方体贴图对未展开的模型进行纹理处理
- typescript - 如何使用我自己的打字稿定义文件?