java - 使用按钮 onClick() 为自定义视图设置动画
问题描述
所以我创建了一个扩展视图的自定义类。我在这个类中的 onDraw() 如下:
@Override
protected void onDraw(Canvas canvas) {
Bitmap myBitmap = BitmapFactory.decodeResource (getResources(), R.drawable.image);
super.onDraw(canvas);
final Paint paint = new Paint();
paint.setTextSize(100);
paint.setColor(Color.BLUE);
canvas.drawBitmap(myBitmap, 10, 10, paint);
canvas.drawText(date, 200, 200, paint);
invalidate();
}
主要活动:
public class MainActivity extends AppCompatActivity{
private Button animateBtn;
private ImageView image;
private Animation anim;
private Calendar calendar;
private Customclass cc;
private Animation animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
cc = new Customclass(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionbar = getSupportActionBar();
actionbar.setDisplayShowHomeEnabled(true);
actionbar.setIcon(R.mipmap.launcher_icon);
// Create the view and add it to the layout
RelativeLayout rl = (RelativeLayout) findViewById(R.id.myLayout);
rl.addView(cc);
}
public void startAnim(View v){
Customclass customclass = (Customclass ) findViewById(R.id.custom_view);
Animation animation = AnimationUtils.loadAnimation(this,R.anim.rotation);
customclass.startAnimation(animation); //<- crashes here!
}
}
最后是旋转xml:
<?xml version="1.0" encoding="utf-8"?>
<rotate android:pivotY="50%"
android:pivotX="50%"
android:toDegrees="1080"
android:fromDegrees="0"
android:duration="3000"
xmlns:android="http://schemas.android.com/apk/res/android">
</rotate>
我只是添加了一个位图和一些文本。我想在我的主要活动中做的是在一个动画中旋转整个 CustomView,只需单击一次按钮,但我就是无法让它工作!我尝试了几种动画解决方案,但每当我启动动画时,我都会不断崩溃。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.lab3.Customclass .startAnimation(android.view.animation.Animation)' on a null object reference
任何帮助深表感谢!
解决方案
有一个简单的解决方案。单击按钮即可开始您的动画,如下所示。只需将视图替换为您的视图名称。
view.animate().rotation(360).setDuration(1000);
推荐阅读
- json - JSON.parse Unexpected Token xmlhttprequest 和 node.js
- angular - 在现有对象中添加新的可选属性不会将此新属性绑定到组件的 @input 属性
- php - cpanel上传后不支持index.php
- java - 我的应用程序按钮不起作用,handler.java 错误
- java - Lombok 的@Builder/@AllArgsConstructor 如何调用自定义构造函数?
- mysql - phpMyAdmin 不访问会话变量
- java - SpringBoot 应用程序测试中的 @Import 与 @ContextConfiguration
- php - Symfony 中的复合主键
- ios - 在 UIPanGestureRecognizer 更改状态中更改 UIView 的 alpha
- java - Java 10 是否消除了每个循环?