我正在使用定制版的FingerPaint for Android以及其他一些功能,例如插入图像和移动它们.我决定实施一个Undo&Redo,因为它会让生活变得更轻松.为了实现它,我最终决定使用一个Stack来推送视图的绘图缓存,并且每当我想要回到之前的状态时,我就从那里推送内容.因此,使用FingerPaint作为基础,我有以下内容:
private void touch_up() {
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// I enable the set drawing cache...
myView.setDrawingCacheEnabled(true);
// ... and I add the cache to the stack
undoStack.add(myView.getDrawingCache());
indexOfUndoRedo++;
// kill this so we don't double draw
mPath.reset();
}
Run Code Online (Sandbox Code Playgroud)
目前只有在修改后才会更新堆栈,因为我仍然在弄清楚如何解决这个问题.当我想申请重做时,我会执行以下操作:
private void undo() {
myView = new MyView(getActivity());
myView.setBackgroundDrawable(new BitmapDrawable(undoStack.get(indexOfUndoRedo)));
indexOfUndoRedo--;
myView.invalidate();
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,应用程序显示屏幕的原始状态没有变化.我也尝试用白色背景绘制它以重置它,但这种方法也无效.
关于如何解决这个问题的任何想法或建议?我会非常感激:)
问候
我正在尝试将ProGuard与我的一个应用程序一起使用,让我们说A.这个应用程序包含另一个应用程序作为库(比方说B).这是我的proguard文件.
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers …Run Code Online (Sandbox Code Playgroud)