Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix the ANR : too many triangle objects in a short time #3

Merged
merged 1 commit into from
Jan 20, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
26 changes: 14 additions & 12 deletions app/src/main/java/com/manolovn/sample/SampleActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,11 @@ private void exportViewToImage() {

private void initCellSizeControl() {
cellSizeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progress;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (progress > 0) {
trianglifyView.setDrawingCacheEnabled(false);
trianglifyView.setCellSize(progress * 10);
trianglifyView.setDrawingCacheEnabled(true);
}
}
this.progress = progress;
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Expand All @@ -83,19 +80,22 @@ public void onStartTrackingTouch(SeekBar seekBar) {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

if (progress > 0) {
trianglifyView.setDrawingCacheEnabled(false);
trianglifyView.setCellSize(progress * 10);
trianglifyView.setDrawingCacheEnabled(true);
}
}
});
}

private void initVarianceControl() {
varianceControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progress;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
trianglifyView.setDrawingCacheEnabled(false);
trianglifyView.setVariance(progress);
trianglifyView.setDrawingCacheEnabled(true);
}
this.progress = progress;
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Expand All @@ -104,7 +104,9 @@ public void onStartTrackingTouch(SeekBar seekBar) {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

trianglifyView.setDrawingCacheEnabled(false);
trianglifyView.setVariance(progress);
trianglifyView.setDrawingCacheEnabled(true);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ public class TriangleRenderer {
private Paint trianglePaint;
private ColorGenerator colorGenerator;

private Path path ;

public TriangleRenderer() {
initPaint();
}
Expand All @@ -38,13 +40,15 @@ private void initPaint() {
if (colorGenerator == null) {
colorGenerator = new BrewerColorGenerator();
}

path = new Path();
path.setFillType(Path.FillType.EVEN_ODD);
}

public void render(Collection<Triangle> triangles, Canvas canvas) {
colorGenerator.setCount(triangles.size());
for (Triangle triangle : triangles) {
Path path = new Path();
path.setFillType(Path.FillType.EVEN_ODD);
for (Triangle triangle : triangles) {
path.reset();

path.moveTo(triangle.a.x, triangle.a.y);
path.lineTo(triangle.b.x, triangle.b.y);
Expand Down