Skip to content

Commit 99dfba4

Browse files
author
huangziwei
committed
optimize drawing:introduce background and foreground
1 parent de52067 commit 99dfba4

File tree

10 files changed

+252
-142
lines changed

10 files changed

+252
-142
lines changed

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,27 @@ mDoodleView.setPen(DoodlePen.TEXT);
143143
mDoodleView.setShape(DoodleShape.HAND_WRITE);
144144
mDoodleView.setColor(new DoodleColor(Color.RED));
145145

146+
147+
```
148+
When turning off optimized drawing, you only need to call `addItem(IDoodleItem)` when you create it. When you start optimizing drawing, the created or selected item needs to call `markItemToOptimizeDrawing(IDoodleItem)`, and you should call `notifyItemFinishedDrawing(IDoodleItem)` when you finish drawing. So this is generally used in code:
149+
***当关闭优化绘制时,只需要在创建时调用`addItem(IDoodleItem)`;而当开启优化绘制时,创建或选中的item需要调用`markItemToOptimizeDrawing(IDoodleItem)`,结束绘制时应调用`notifyItemFinishedDrawing(IDoodleItem)`。因此在代码中一般这样使用:***
150+
```
151+
// begin drawing
152+
if (mDoodle.isOptimizeDrawing()) {
153+
mDoodle.markItemToOptimizeDrawing(item);
154+
} else {
155+
mDoodle.addItem(item);
156+
}
157+
158+
...
159+
160+
// finish drawing
161+
if (mDoodle.isOptimizeDrawing()) {
162+
mDoodle.notifyItemFinishedDrawing(item);
163+
}
146164
```
165+
166+
147167
Then, add the DoodleView to your layout. Now you can start doodling freely.
148168

149169
***把DoodleView添加到布局中,然后开始涂鸦。***

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ dependencies {
2626
transitive = false
2727
}
2828

29-
// test
29+
/* // test
3030
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.2'
3131
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.2'
3232
// Optional, if you use support library fragments:
33-
debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.2'
33+
debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.2'*/
3434
}

app/src/main/java/cn/hzw/doodledemo/DemoApplication.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@
22

33
import android.app.Application;
44

5-
import com.squareup.leakcanary.LeakCanary;
6-
75
public class DemoApplication extends Application {
86
@Override
97
public void onCreate() {
108
super.onCreate();
11-
if (LeakCanary.isInAnalyzerProcess(this)) {
9+
/* if (LeakCanary.isInAnalyzerProcess(this)) {
1210
// This process is dedicated to LeakCanary for heap analysis.
1311
// You should not init your app in this process.
1412
return;
1513
}
16-
LeakCanary.install(this);
14+
LeakCanary.install(this);*/
1715
}
1816
}

app/src/main/java/cn/hzw/doodledemo/MosaicDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void onReady(IDoodle doodle) {
5858
findViewById(R.id.btn_mosaic_x3).performClick(); // see setMosaicLevel(View view)
5959

6060
// step 4
61-
ViewGroup container = findViewById(R.id.doodle_container);
61+
ViewGroup container = (ViewGroup) findViewById(R.id.doodle_container);
6262
container.addView(doodleView);
6363
}
6464

app/src/main/java/cn/hzw/doodledemo/ScaleGestureItemDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public void onClick(View v) {
9191
doodleView.setColor(new DoodleColor(Color.RED));
9292

9393
// step 4
94-
ViewGroup container = findViewById(R.id.doodle_container);
94+
ViewGroup container = (ViewGroup) findViewById(R.id.doodle_container);
9595
container.addView(doodleView);
9696
}
9797

app/src/main/java/cn/hzw/doodledemo/guide/DoodleGuideActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@ protected void onCreate(Bundle savedInstanceState) {
1616
setContentView(R.layout.activity_guide);
1717

1818
// 初级涂鸦
19-
ViewGroup simpleContainer = findViewById(R.id.container_simple_doodle);
19+
ViewGroup simpleContainer = (ViewGroup) findViewById(R.id.container_simple_doodle);
2020
SimpleDoodleView simpleDoodleView = new SimpleDoodleView(this);
2121
simpleContainer.addView(simpleDoodleView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
2222

2323
// 中级涂鸦
24-
ViewGroup middleContainer = findViewById(R.id.container_middle_doodle);
24+
ViewGroup middleContainer = (ViewGroup) findViewById(R.id.container_middle_doodle);
2525
MiddleDoodleView middleDoodleView = new MiddleDoodleView(this);
2626
middleContainer.addView(middleDoodleView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
2727

2828
// 高级级涂鸦
29-
ViewGroup advancedContainer = findViewById(R.id.container_advanced_doodle);
29+
ViewGroup advancedContainer = (ViewGroup) findViewById(R.id.container_advanced_doodle);
3030
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.thelittleprince2);
3131
AdvancedDoodleView advancedDoodleView = new AdvancedDoodleView(this, bitmap);
3232
advancedContainer.addView(advancedDoodleView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

doodle/src/main/java/cn/hzw/doodle/DoodleActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ public void onCreate(Bundle savedInstanceState) {
169169
this.finish();
170170
return;
171171
}
172+
172173
LogUtil.d("TAG", mImagePath);
173174
if (mDoodleParams.mIsFullScreen) {
174175
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
@@ -441,7 +442,7 @@ public void onClick(View v) {
441442
});
442443
mSelectedEditContainer = findViewById(R.id.doodle_selectable_edit_container);
443444
mSelectedEditContainer.setVisibility(View.GONE);
444-
mItemScaleTextView = findViewById(R.id.item_scale);
445+
mItemScaleTextView = (TextView) findViewById(R.id.item_scale);
445446
mItemScaleTextView.setOnLongClickListener(new View.OnLongClickListener() {
446447
@Override
447448
public boolean onLongClick(View v) {
@@ -465,7 +466,7 @@ public boolean onLongClick(View v) {
465466

466467
mBtnColor = DoodleActivity.this.findViewById(R.id.btn_set_color);
467468
mColorContainer = DoodleActivity.this.findViewById(R.id.btn_set_color_container);
468-
mEditSizeSeekBar = findViewById(R.id.doodle_seekbar_size);
469+
mEditSizeSeekBar = (SeekBar) findViewById(R.id.doodle_seekbar_size);
469470
mEditSizeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
470471
@Override
471472
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

doodle/src/main/java/cn/hzw/doodle/DoodleOnTouchGestureListener.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ public void onScrollEnd(MotionEvent e) {
175175
}
176176

177177
if (mCurrDoodlePath != null) {
178-
mDoodle.notifyItemFinishedDrawing(mCurrDoodlePath);
178+
if (mDoodle.isOptimizeDrawing()) {
179+
mDoodle.notifyItemFinishedDrawing(mCurrDoodlePath);
180+
}
179181
mCurrDoodlePath = null;
180182
}
181183

0 commit comments

Comments
 (0)