Commit bee3942e by Jeong Gilmo

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

- 手書きパレット編集画面についてファイルの修正
parent 9b7cdfb7
......@@ -9,16 +9,25 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.Layout;
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.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.DownloadListener;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageButton;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
......@@ -36,10 +45,12 @@ public class PhotoEditActivity extends Dialog {
private final String editToolName = "Drawing"; //EditToolの名
private WebView editPageWebView; //ダイアローグの上に編集画面をロード
private Bitmap bitmapOfPhoto; //写真のBitmap情報
private Bitmap completeImage; //写真のBitmap情報
private int photoWidth;
private int photoHeight;
private String photoFilePath; //ロードして修正するファイルのパス
private JsInf jsInf = new JsInf(); //Javascript Interface
private Context context;
private int screenRequestedOrientation;
/**
* 生成される時、イメージパスを取得。
......@@ -59,12 +70,44 @@ public class PhotoEditActivity extends Dialog {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Dialogの設定
((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 縦画面固定
requestWindowFeature(Window.FEATURE_NO_TITLE); //ダイアローグのタイトルバーを消す
setContentView(R.layout.photo_edit_dialog);
//ダイアローグの設定
screenRequestedOrientation = ((Activity) context).getRequestedOrientation(); //編集前の画面方向を保存する。
((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); // 縦画面固定
requestWindowFeature(Window.FEATURE_NO_TITLE); //ダイアローグのタイトルバーを消す
setContentView(R.layout.photo_edit_dialog); //ダイアローグにWebViewを設定
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);
......@@ -75,9 +118,6 @@ public class PhotoEditActivity extends Dialog {
}
});
//写真のBitmapをロード
bitmapOfPhoto = BitmapFactory.decodeFile(photoFilePath);
//WebViewの設定
editPageWebView = findViewById(R.id.edit_webview);
editPageWebView.setOverScrollMode(View.OVER_SCROLL_NEVER); //オーバースクロールしない。
......@@ -86,9 +126,14 @@ public class PhotoEditActivity extends Dialog {
editPageWebView.getSettings().setJavaScriptEnabled(true); //Javascriptを有効にする。
editPageWebView.setVisibility(View.GONE);
//ページをロード
editPageWebView.loadUrl(editToolPath);
editPageWebView.reload();
editPageWebView.setVisibility(View.VISIBLE);
editPageWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
......@@ -97,8 +142,8 @@ public class PhotoEditActivity extends Dialog {
if (url.contains(editToolName)) {
//最初ページロードの場合
//ページロードの終了後のCanvas設定
float ratio = (float) bitmapOfPhoto.getHeight() / (float) bitmapOfPhoto.getWidth(); //写真の割合を計算
view.loadUrl(String.format("javascript:resizeCanvasToRatio(%f);", ratio)); //写真の割合によってCanvasのサイズを決める。
float photoRatio = (float) (bitmapOfPhoto.getHeight()) / (float) bitmapOfPhoto.getWidth(); //写真の割合を計算
view.loadUrl(String.format("javascript:resizeCanvasToRatio(%f);", photoRatio)); //写真の割合によってCanvasのサイズを決める。
view.loadUrl(String.format("javascript:setBackground('%s');", photoFilePath)); //Canvasの背景をイメージにする
}
}
......@@ -119,7 +164,7 @@ public class PhotoEditActivity extends Dialog {
Bitmap bitmapOfDrawing = decodeBase64ToBitmap(url);
//写真と手書きを合わせる
completeImage = mergeImages(bitmapOfDrawing, bitmapOfPhoto);
Bitmap completeImage = mergeImages(bitmapOfDrawing, bitmapOfPhoto);
//合わせたイメージをphotoFilePathに保存
boolean isError = saveBitmapToPath(completeImage, photoFilePath, 100);
......@@ -164,7 +209,7 @@ public class PhotoEditActivity extends Dialog {
*/
private void superDismiss(){
super.dismiss();
Logger.e(TAG,"Dismissed.");
((Activity) context).setRequestedOrientation(screenRequestedOrientation); // 縦画面固定
}
/**
......@@ -194,11 +239,6 @@ public class PhotoEditActivity extends Dialog {
}
/**
*
* @param title
* @param message
*/
/**
* 終了確認ダイアローグを開ける。
* @param title ダイアローグのタイトル
* @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