在很多时候我们为获得在视图中自由绘制的能力, 需要创建一个继承于View类的定制类,然后重写onTouchEvent方法处理触摸时间,重写onDraw绘制自定义视觉效果。但这里可能会被一个问题困扰,那就是设备旋转导致数据丢失的问题,好在View类为我们提供了onSaveInstanceState和onRestoreInstanceState两个方法,虽然这两个方法和Activity两个方法很相似,但是千万别认为是一样的,因为他们的使用方法完全不同。
为了侧重数据保存的重点,我们这里简化了绘制的内容。下面定制的View子类功能是根据触摸事件发生的始末位置,绘制一组矩形。详细观察以下rectDrawingView定制类源码:
package com.art.zok.rectdrawingview;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.RectF;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.MotionEvent;
imp

本文介绍了在Android编程中,如何在自定义View类中使用onSaveInstanceState和onRestoreInstanceState方法来处理设备旋转时的数据保存。通过创建一个RectDrawingView示例,展示了如何在XML布局文件中声明并使用这个自定义组件,以及如何在构造方法中处理不同情况。重点讲解了这两个方法的使用,强调了数据传递的不同以及在保存和恢复过程中防止应用崩溃的关键步骤。
最低0.47元/天 解锁文章
891

被折叠的 条评论
为什么被折叠?



