package org.sprite2d.apps.pp;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.util.Locale;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.media.AudioManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.view.Display;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.Toast;
public class Painter extends Activity {
public static final int BACKUP_OPENED_ONLY_FROM_OTHER = 10;
public static final int BACKUP_OPENED_ALWAYS = 20;
public static final int BACKUP_OPENED_NEVER = 100;
public static final int BEFORE_EXIT_SUBMIT = 10;
public static final int BEFORE_EXIT_SAVE = 20;
public static final int BEFORE_EXIT_NO_ACTION = 100;
public static final int SHORTCUTS_VOLUME_BRUSH_SIZE = 10;
public static final int SHORTCUTS_VOLUME_UNDO_REDO = 20;
public static final int ACTION_SAVE_AND_EXIT = 1;
public static final int ACTION_SAVE_AND_RETURN = 2;
public static final int ACTION_SAVE_AND_SHARE = 3;
public static final int ACTION_SAVE_AND_ROTATE = 4;
public static final int ACTION_SAVE_AND_OPEN = 5;
public static final int REQUEST_OPEN = 1;
private static final String SETTINGS_STORAGE = "settings";
public static final String PICTURE_MIME = "image/png";
public static final String PICTURE_PREFIX = "picture_";
public static final String PICTURE_EXT = ".png";
private PainterCanvas mCanvas;
private SeekBar mBrushSize;
private SeekBar mBrushBlurRadius;
private Spinner mBrushBlurStyle;
private LinearLayout mPresetsBar;
private LinearLayout mPropertiesBar;
private RelativeLayout mSettingsLayout;
private PainterSettings mSettings;
private boolean mIsNewFile = true;
private boolean mIsHardwareAccelerated;
private boolean mOpenLastFile = true;
private int mVolumeButtonsShortcuts;
private class SaveTask extends AsyncTask<Void, Void, String> {
private ProgressDialog dialog = ProgressDialog.show(Painter.this,
getString(R.string.saving_title),
getString(R.string.saving_to_sd), true);
protected String doInBackground(Void... none) {
mCanvas.getThread().freeze();
String pictureName = getUniquePictureName(getSaveDir());
saveBitmap(pictureName);
mSettings.preset = mCanvas.getCurrentPreset();
saveSettings();
return pictureName;
}
protected void onPostExecute(String pictureName) {
Uri uri = Uri.fromFile(new File(pictureName));
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
dialog.hide();
mCanvas.getThread().activate();
}
}
private class SetWallpaperTask extends AsyncTask<Void, Void, Boolean> {
private ProgressDialog mDialog = ProgressDialog.show(Painter.this,
getString(R.string.wallpaper_title),
getString(R.string.aply_wallpaper), true);
protected Boolean doInBackground(Void... none) {
WallpaperManager wallpaperManager = WallpaperManager
.getInstance(Painter.this);
Display display = getWindowManager().getDefaultDisplay();
int wallpaperWidth = display.getWidth() * 2;
int wallpaperHeight = display.getHeight();
Bitmap currentBitmap = mCanvas.getThread().getBitmap();
Bitmap wallpaperBitmap = Bitmap.createBitmap(wallpaperWidth,
wallpaperHeight, Bitmap.Config.ARGB_8888);
// wait bitmap
while (wallpaperBitmap == null) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
return false;
}
}
Canvas wallpaperCanvas = new Canvas(wallpaperBitmap);
wallpaperCanvas.drawColor(mCanvas.getThread().getBackgroundColor());
wallpaperCanvas.drawBitmap(currentBitmap,
(wallpaperWidth - currentBitmap.getWidth()) / 2,
(wallpaperHeight - currentBitmap.getHeight()) / 2, null);
try {
wallpaperManager.setBitmap(wallpaperBitmap);
return true;
} catch (IOException e) {
return false;
}
}
protected void onPostExecute(Boolean success) {
mDialog.hide();
if (success) {
Toast.makeText(Painter.this, R.string.wallpaper_setted,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(Painter.this, R.string.wallpaper_error,
Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
setContentView(R.layout.main);
mCanvas = (PainterCanvas) findViewById(R.id.canvas);
try {
ActivityInfo info = getPackageManager().getActivityInfo(
getComponentName(), PackageManager.GET_META_DATA);
mIsHardwareAccelerated = (info.flags & ActivityInfo.FLAG_HARDWARE_ACCELERATED) == ActivityInfo.FLAG_HARDWARE_ACCELERATED;
} catch (Exception e) {
mIsHardwareAccelerated = false;
}
loadSettings();
mBrushSize = (SeekBar) findViewById(R.id.brush_size);
mBrushSize
.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
if (seekBar.getProgress() > 0) {
mCanvas.setPresetSize(seekBar.getProgress());
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
resetPresets();
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
if (progress > 0) {
if (fromUser) {
mCanvas.setPresetSize(seekBar.getProgress());
}
} else {
mBrushSize.setProgress(1);
}
}
});
mBrushBlurRadius = (SeekBar) findViewById(R.id.brush_blur_radius);
mBrushBlurRadius
.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
updateBlurSeek(seekBar.getProgress());
if (seekBar.getProgress() > 0) {
setBlur();
} else {
mCanvas.setPresetBlur(null, 0);
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
resetPresets();
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
if (fromUser) {
updateBlurSeek(progress);
if (progress > 0) {
setBlur();
} else {
mCanvas.setPresetBlur(null, 0);
}
}
}
});
mBrushBlurStyle = (Spinner) findViewById(R.id.brush_blur_style);
mBrushBlurStyle
.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
if (id > 0) {
updateBlurSpinner(id);
setBlur();
} else {
mBrushBlurRadius.setProgress(0);
mCanvas.setPresetBlur(null, 0);
}
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
mPresetsBar = (LinearLayout) findViewById(R.id.presets_bar);
mPresetsBar.setVisibility(View.INVISIBLE);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能-IT计算机-毕业设计.zip (90个子文件)
可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能
Pretty-Painter-master
res
drawable-ldpi
ic_menu_brush.png 695B
ic_menu_file.png 575B
marker.png 628B
ic_menu_undo.png 656B
brush.png 623B
ic_menu_redo.png 657B
pencil.png 648B
pen.png 626B
icon.png 2KB
ic_menu_colors.png 980B
ic_menu_more.png 496B
ic_menu_trash.png 758B
fork_me.png 2KB
ic_menu_save.png 372B
menu
main.xml 2KB
values-ru
strings.xml 7KB
styles.xml 418B
drawable-hdpi
ic_menu_brush.png 1KB
ic_menu_file.png 967B
marker.png 1KB
ic_menu_undo.png 1KB
brush.png 1KB
ic_menu_redo.png 1KB
pencil.png 1KB
pen.png 1KB
icon.png 5KB
ic_menu_colors.png 2KB
ic_menu_more.png 873B
ic_menu_trash.png 1KB
fork_me.png 3KB
ic_menu_save.png 485B
values
config.xml 151B
strings.xml 7KB
styles.xml 3KB
ids.xml 262B
drawable-mdpi
ic_menu_brush.png 823B
ic_menu_file.png 751B
marker.png 856B
ic_menu_undo.png 814B
brush.png 870B
ic_menu_redo.png 814B
pencil.png 926B
pen.png 939B
icon.png 3KB
ic_menu_colors.png 1KB
ic_menu_more.png 612B
ic_menu_trash.png 846B
fork_me.png 2KB
ic_menu_save.png 449B
layout
dialog_about.xml 2KB
main.xml 3KB
xml
preferences.xml 3KB
gen
.gitignore 5B
publish
screenshots
brush-settings.png 28KB
color-select.png 34KB
result.png 47KB
menu.png 66KB
LICENSE 1KB
proguard.cfg 1KB
src
org
sprite2d
apps
pp
BrushPreset.java 3KB
PainterCanvas.java 7KB
PainterThread.java 6KB
ColorPickerDialog.java 8KB
FileSystem.java 2KB
PainterPreferences.java 2KB
PainterSettings.java 281B
Painter.java 31KB
BlurStyleSpinner.java 669B
README 2KB
.project 817B
graphics
menu
ic_menu_save.svg 4KB
ic_menu_redo.svg 2KB
ic_menu_undo.svg 2KB
ic_menu_more.svg 2KB
ic_menu_trash.svg 3KB
ic_menu_file.svg 4KB
ic_menu_brush.svg 3KB
presets
brush.svg 3KB
marker.svg 3KB
pencil.svg 4KB
pen.svg 3KB
hi-res-icon.svg 9KB
icon.svg 8KB
banners
small.svg 8KB
big.svg 26KB
.classpath 372B
.gitignore 17B
README-RU 4KB
project.properties 36B
AndroidManifest.xml 1KB
共 90 条
- 1
资源评论
芝麻粒儿
- 粉丝: 6w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功