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应用源码之可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能.zip项目安卓应用源码下载
共90个文件
png:46个
svg:15个
xml:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 38 浏览量
2022-03-08
16:58:01
上传
评论
收藏 328KB ZIP 举报
温馨提示
Android应用源码之可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能.zip项目安卓应用源码下载Android应用源码之可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Android应用源码之可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能.zip (90个子文件)
Android应用源码之可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能
Android应用源码之可以任意对本地图片进行添加画笔标示,有保存,删除,调整画笔粗细等功能
Pretty-Painter-master
.gitignore 17B
.project 817B
graphics
banners
big.svg 26KB
small.svg 8KB
icon.svg 8KB
presets
marker.svg 3KB
pen.svg 3KB
pencil.svg 4KB
brush.svg 3KB
hi-res-icon.svg 9KB
menu
ic_menu_trash.svg 3KB
ic_menu_undo.svg 2KB
ic_menu_save.svg 4KB
ic_menu_redo.svg 2KB
ic_menu_brush.svg 3KB
ic_menu_file.svg 4KB
ic_menu_more.svg 2KB
proguard.cfg 1KB
AndroidManifest.xml 1KB
LICENSE 1KB
src
org
sprite2d
apps
pp
BrushPreset.java 3KB
FileSystem.java 2KB
PainterCanvas.java 7KB
PainterSettings.java 281B
ColorPickerDialog.java 8KB
PainterThread.java 6KB
PainterPreferences.java 2KB
BlurStyleSpinner.java 669B
Painter.java 31KB
README 2KB
project.properties 36B
publish
screenshots
result.png 47KB
menu.png 66KB
brush-settings.png 28KB
color-select.png 34KB
README-RU 4KB
res
values
styles.xml 3KB
strings.xml 7KB
config.xml 151B
ids.xml 262B
layout
dialog_about.xml 2KB
main.xml 3KB
xml
preferences.xml 3KB
drawable-ldpi
ic_menu_redo.png 657B
ic_menu_file.png 575B
fork_me.png 2KB
ic_menu_save.png 372B
marker.png 628B
ic_menu_undo.png 656B
ic_menu_trash.png 758B
pen.png 626B
ic_menu_more.png 496B
pencil.png 648B
icon.png 2KB
ic_menu_brush.png 695B
brush.png 623B
ic_menu_colors.png 980B
drawable-hdpi
ic_menu_redo.png 1KB
ic_menu_file.png 967B
fork_me.png 3KB
ic_menu_save.png 485B
marker.png 1KB
ic_menu_undo.png 1KB
ic_menu_trash.png 1KB
pen.png 1KB
ic_menu_more.png 873B
pencil.png 1KB
icon.png 5KB
ic_menu_brush.png 1KB
brush.png 1KB
ic_menu_colors.png 2KB
values-ru
styles.xml 418B
strings.xml 7KB
drawable-mdpi
ic_menu_redo.png 814B
ic_menu_file.png 751B
fork_me.png 2KB
ic_menu_save.png 449B
marker.png 856B
ic_menu_undo.png 814B
ic_menu_trash.png 846B
pen.png 939B
ic_menu_more.png 612B
pencil.png 926B
icon.png 3KB
ic_menu_brush.png 823B
brush.png 870B
ic_menu_colors.png 1KB
menu
main.xml 2KB
.classpath 372B
gen
.gitignore 5B
共 90 条
- 1
资源评论
yxkfw
- 粉丝: 77
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功