/* * Copyright (C) 2014 Steelkiwi Development, Julia Zudikova * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.skd.sketchview; import java.io.File; import java.io.IOException; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import com.skd.sketchview.dialogs.ColorPickerDialog; import com.skd.sketchview.dialogs.EraserSizePickerDialog; import com.skd.sketchview.dialogs.SizePickerDialog; import com.skd.sketchview.settings.SkColor; import com.skd.sketchview.settings.SkSize; /* * A sample of sketch editor which supports basic actions: * - set brush color (from a range of available colors) * - set brush size (from a range of available sizes) * - set eraser size (from a range of available sizes) * - set image as background of the sketch * - undo option (all gestures can be undone) * - save sketch * - share sketch. */ public class MainActivity extends ActionBarActivity { private static final int IMAGE_PICK_INTENT = 1; private SkColor curColor; private SkSize curSize; private boolean needShare = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initGestureColorAndSize(); if (savedInstanceState == null) { attachSketchFragment(); } } private void initGestureColorAndSize() { curColor = SkColor.getDefaultColor(getResources()); curSize = SkSize.getDefaultSize(getResources()); } private void attachSketchFragment() { Bundle args = new Bundle(); args.putInt(SketchFragment.COLOR, SkColor.getColor(getResources(), curColor)); args.putInt(SketchFragment.SIZE, curSize.getSize()); SketchFragment frag = new SketchFragment(); frag.setArguments(args); getSupportFragmentManager() .beginTransaction() .add(R.id.container, frag, SketchFragment.class.getSimpleName()) .commit(); } private SketchFragment getSketchFragment() { return (SketchFragment) getSupportFragmentManager().findFragmentByTag(SketchFragment.class.getSimpleName()); } @Override protected void onActivityResult(int arg0, int arg1, Intent arg2) { if (arg0 == IMAGE_PICK_INTENT && arg1 == RESULT_OK) { Uri uri = arg2.getData(); try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri); getSketchFragment().setSketchBackground(bitmap); } catch (IOException e) { e.printStackTrace(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); MenuItem colorItem = menu.findItem(R.id.action_color); colorItem.setOnMenuItemClickListener(onMenuItemClickListener); MenuItem sizeItem = menu.findItem(R.id.action_size); sizeItem.setOnMenuItemClickListener(onMenuItemClickListener); MenuItem eraserItem = menu.findItem(R.id.action_eraser); eraserItem.setOnMenuItemClickListener(onMenuItemClickListener); MenuItem bgItem = menu.findItem(R.id.action_bg); bgItem.setOnMenuItemClickListener(onMenuItemClickListener); MenuItem undoItem = menu.findItem(R.id.action_undo); undoItem.setOnMenuItemClickListener(onMenuItemClickListener); MenuItem saveItem = menu.findItem(R.id.action_save); saveItem.setOnMenuItemClickListener(onMenuItemClickListener); MenuItem shareItem = menu.findItem(R.id.action_share); shareItem.setOnMenuItemClickListener(onMenuItemClickListener); return true; } private OnMenuItemClickListener onMenuItemClickListener = new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_color: { chooseColor(); return true; } case R.id.action_size: { chooseSize(); return true; } case R.id.action_eraser: { chooseEraserSize(); return true; } case R.id.action_bg: { chooseImage(); return true; } case R.id.action_undo: { undo(); return true; } case R.id.action_save: { save(); return true; } case R.id.action_share: { saveAndShare(); return true; } default: return false; } } }; private void chooseColor() { ColorPickerDialog dlg = new ColorPickerDialog(); dlg.show(getSupportFragmentManager(), ColorPickerDialog.class.getSimpleName()); } public void onColorSet(SkColor color) { curColor = color; getSketchFragment().setGestureColorAndSize(curColor, curSize); } private void chooseSize() { SizePickerDialog dlg = new SizePickerDialog(); dlg.show(getSupportFragmentManager(), SizePickerDialog.class.getSimpleName()); } public void onSizeSet(SkSize size) { curSize = size; getSketchFragment().setGestureColorAndSize(curColor, curSize); } private void chooseEraserSize() { EraserSizePickerDialog dlg = new EraserSizePickerDialog(); dlg.show(getSupportFragmentManager(), EraserSizePickerDialog.class.getSimpleName()); } public void onEraserSizeSet(SkSize size) { curColor = SkColor.getEraserColor(getResources()); curSize = size; getSketchFragment().setGestureColorAndSize(SkColor.getEraserColor(getResources()), curSize); } private void chooseImage() { Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.setType("image/*"); startActivityForResult(i, IMAGE_PICK_INTENT); } private void undo() { getSketchFragment().undo(); } private void save() { SaveSketchAsyncTask task = new SaveSketchAsyncTask(MainActivity.this); task.execute(getSketchFragment().getSketchBimap()); } public void sketchSaved(String path) { if (needShare) { needShare = false; share(Uri.fromFile(new File(path))); } } private void saveAndShare() { needShare = true; save(); } private void share(Uri uri) { Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setType("image/jpeg"); shareIntent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(shareIntent, "Share Sketch")); } public SkColor getCurColor() { return curColor; } public SkSize getCurSize() { return curSize; } }