Commit bee3942e by Jeong Gilmo

#33721 手書きパレット機能の追加

- 手書きパレット編集画面についてファイルの修正
parent 9b7cdfb7
...@@ -9,16 +9,25 @@ import android.graphics.Bitmap; ...@@ -9,16 +9,25 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Rect;
import android.os.Bundle; import android.os.Bundle;
import android.text.Layout;
import android.util.Base64; import android.util.Base64;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.Surface;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowManager;
import android.webkit.DownloadListener; import android.webkit.DownloadListener;
import android.webkit.JavascriptInterface; import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.Toast;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
...@@ -36,10 +45,12 @@ public class PhotoEditActivity extends Dialog { ...@@ -36,10 +45,12 @@ public class PhotoEditActivity extends Dialog {
private final String editToolName = "Drawing"; //EditToolの名 private final String editToolName = "Drawing"; //EditToolの名
private WebView editPageWebView; //ダイアローグの上に編集画面をロード private WebView editPageWebView; //ダイアローグの上に編集画面をロード
private Bitmap bitmapOfPhoto; //写真のBitmap情報 private Bitmap bitmapOfPhoto; //写真のBitmap情報
private Bitmap completeImage; //写真のBitmap情報 private int photoWidth;
private int photoHeight;
private String photoFilePath; //ロードして修正するファイルのパス private String photoFilePath; //ロードして修正するファイルのパス
private JsInf jsInf = new JsInf(); //Javascript Interface private JsInf jsInf = new JsInf(); //Javascript Interface
private Context context; private Context context;
private int screenRequestedOrientation;
/** /**
* 生成される時、イメージパスを取得。 * 生成される時、イメージパスを取得。
...@@ -59,12 +70,44 @@ public class PhotoEditActivity extends Dialog { ...@@ -59,12 +70,44 @@ public class PhotoEditActivity extends Dialog {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//Dialogの設定 //ダイアローグの設定
((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 縦画面固定 screenRequestedOrientation = ((Activity) context).getRequestedOrientation(); //編集前の画面方向を保存する。
requestWindowFeature(Window.FEATURE_NO_TITLE); //ダイアローグのタイトルバーを消す ((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); // 縦画面固定
setContentView(R.layout.photo_edit_dialog); requestWindowFeature(Window.FEATURE_NO_TITLE); //ダイアローグのタイトルバーを消す
setContentView(R.layout.photo_edit_dialog); //ダイアローグにWebViewを設定
setCanceledOnTouchOutside(false); //編集画面の外をタッチしてもダイアローグを閉じらないようにする。 setCanceledOnTouchOutside(false); //編集画面の外をタッチしてもダイアローグを閉じらないようにする。
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); //ダイアローグ画面のサイズ設定
//写真のBitmapをロード
bitmapOfPhoto = BitmapFactory.decodeFile(photoFilePath);
photoWidth = bitmapOfPhoto.getWidth();
photoHeight = bitmapOfPhoto.getHeight();
//ダイアローグのサイズの設定
//画面のサイズを取得
Rect displayRectangle = new Rect();
Window window = ((Activity) context).getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);
//画面の方向によってダイアローグのサイズを決定
int screenOrientation = context.getResources().getConfiguration().orientation; //画面の方向
switch (screenOrientation){
case Surface.ROTATION_0: case Surface.ROTATION_180: //横
float photoRatio = (float) photoWidth / (float) photoHeight; //画面の横と縦の割合
float displayHeight = displayRectangle.height() * 0.9f; //画面の縦幅の90パーセント
float displayWidth = displayRectangle.width() * 0.9f; //画面の縦幅の90パーセント
int dialogWidth = (int) (displayHeight * photoRatio); //ダイアローグの横幅を計算
if(dialogWidth < displayWidth){ //計算した横幅が画面より小さい場合はそのまま設定
getWindow().setLayout(dialogWidth, ViewGroup.LayoutParams.WRAP_CONTENT);
}
else{ //計算した横幅が画面より大き場合は画面の横幅に設定
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
break;
case Surface.ROTATION_90: case Surface.ROTATION_270: //縦
//画面方向が縦の場合、画面の横幅に設定
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
break;
}
//クローズボタン //クローズボタン
final ImageButton imageButton = findViewById(R.id.edit_page_close_btn); final ImageButton imageButton = findViewById(R.id.edit_page_close_btn);
...@@ -75,9 +118,6 @@ public class PhotoEditActivity extends Dialog { ...@@ -75,9 +118,6 @@ public class PhotoEditActivity extends Dialog {
} }
}); });
//写真のBitmapをロード
bitmapOfPhoto = BitmapFactory.decodeFile(photoFilePath);
//WebViewの設定 //WebViewの設定
editPageWebView = findViewById(R.id.edit_webview); editPageWebView = findViewById(R.id.edit_webview);
editPageWebView.setOverScrollMode(View.OVER_SCROLL_NEVER); //オーバースクロールしない。 editPageWebView.setOverScrollMode(View.OVER_SCROLL_NEVER); //オーバースクロールしない。
...@@ -86,9 +126,14 @@ public class PhotoEditActivity extends Dialog { ...@@ -86,9 +126,14 @@ public class PhotoEditActivity extends Dialog {
editPageWebView.getSettings().setJavaScriptEnabled(true); //Javascriptを有効にする。 editPageWebView.getSettings().setJavaScriptEnabled(true); //Javascriptを有効にする。
editPageWebView.setVisibility(View.GONE);
//ページをロード //ページをロード
editPageWebView.loadUrl(editToolPath); editPageWebView.loadUrl(editToolPath);
editPageWebView.reload();
editPageWebView.setVisibility(View.VISIBLE);
editPageWebView.setWebViewClient(new WebViewClient() { editPageWebView.setWebViewClient(new WebViewClient() {
@Override @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
...@@ -97,8 +142,8 @@ public class PhotoEditActivity extends Dialog { ...@@ -97,8 +142,8 @@ public class PhotoEditActivity extends Dialog {
if (url.contains(editToolName)) { if (url.contains(editToolName)) {
//最初ページロードの場合 //最初ページロードの場合
//ページロードの終了後のCanvas設定 //ページロードの終了後のCanvas設定
float ratio = (float) bitmapOfPhoto.getHeight() / (float) bitmapOfPhoto.getWidth(); //写真の割合を計算 float photoRatio = (float) (bitmapOfPhoto.getHeight()) / (float) bitmapOfPhoto.getWidth(); //写真の割合を計算
view.loadUrl(String.format("javascript:resizeCanvasToRatio(%f);", ratio)); //写真の割合によってCanvasのサイズを決める。 view.loadUrl(String.format("javascript:resizeCanvasToRatio(%f);", photoRatio)); //写真の割合によってCanvasのサイズを決める。
view.loadUrl(String.format("javascript:setBackground('%s');", photoFilePath)); //Canvasの背景をイメージにする view.loadUrl(String.format("javascript:setBackground('%s');", photoFilePath)); //Canvasの背景をイメージにする
} }
} }
...@@ -119,7 +164,7 @@ public class PhotoEditActivity extends Dialog { ...@@ -119,7 +164,7 @@ public class PhotoEditActivity extends Dialog {
Bitmap bitmapOfDrawing = decodeBase64ToBitmap(url); Bitmap bitmapOfDrawing = decodeBase64ToBitmap(url);
//写真と手書きを合わせる //写真と手書きを合わせる
completeImage = mergeImages(bitmapOfDrawing, bitmapOfPhoto); Bitmap completeImage = mergeImages(bitmapOfDrawing, bitmapOfPhoto);
//合わせたイメージをphotoFilePathに保存 //合わせたイメージをphotoFilePathに保存
boolean isError = saveBitmapToPath(completeImage, photoFilePath, 100); boolean isError = saveBitmapToPath(completeImage, photoFilePath, 100);
...@@ -164,7 +209,7 @@ public class PhotoEditActivity extends Dialog { ...@@ -164,7 +209,7 @@ public class PhotoEditActivity extends Dialog {
*/ */
private void superDismiss(){ private void superDismiss(){
super.dismiss(); super.dismiss();
Logger.e(TAG,"Dismissed."); ((Activity) context).setRequestedOrientation(screenRequestedOrientation); // 縦画面固定
} }
/** /**
...@@ -194,11 +239,6 @@ public class PhotoEditActivity extends Dialog { ...@@ -194,11 +239,6 @@ public class PhotoEditActivity extends Dialog {
} }
/** /**
*
* @param title
* @param message
*/
/**
* 終了確認ダイアローグを開ける。 * 終了確認ダイアローグを開ける。
* @param title ダイアローグのタイトル * @param title ダイアローグのタイトル
* @param message ダイアローグのメッセージ * @param message ダイアローグのメッセージ
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment