VizCommand #1 新生VizCommand & ウィンドウの表示

『VizCommand』も改めて組み直し・・・。
UIの構成が難しいが、機能優先にしたいところ・・・。

Win32プロジェクトの空のプロジェクトでWinMain.cppを追加して、

とし、バージョン情報も、

として、

f:id:BG1:20170111131229p:plain

ウィンドウ表示・・・。

・新生VizCommand · bg1bgst333/VizCommand@46f8195 · GitHub

ObjeqtNote #1 新生ObjeqtNote & ウィンドウの表示

『ObjeqtNote』も作り直し・・・。
『Aoi』とどう役割分担するか、まだ悩み中・・・。
こちらはどんどん機能載せていきたい・・・。

Win32プロジェクトの空のプロジェクトでWinMain.cppを追加して、

と、『Aoi』とほぼ一緒・・・。

バージョン情報も、

こんな感じで・・・。

f:id:BG1:20170111111841p:plain

ただ、ウィンドウを表示しているだけ・・・。

・新生ObjeqtNote · bg1bgst333/ObjeqtNote@5989f25 · GitHub

Aoi #1 新生Aoi & ウィンドウの表示

新年(ブログの日付上)1発目は、Application開発の仕切り直しから・・・。

テキストエディタ『Aoi』の作り直し・・・。

f:id:BG1:20170111014855p:plain

プロジェクトの作成・・・。
gitのレポジトリのトップにプロジェクトを作るように変更・・・。

f:id:BG1:20170111014930p:plain

でも変わらず空のプロジェクト・・・。

f:id:BG1:20170111015028p:plain

ソースの追加・・・。

f:id:BG1:20170111015044p:plain

WinMain.cppに、

いつも通りのWinMain内でウィンドウ表示・・・。

f:id:BG1:20170111015309p:plain

今回はリソースも追加・・・。

f:id:BG1:20170111015327p:plain

バージョン情報もつけておく・・・。

コードネームもOsakiに変更・・・。

f:id:BG1:20170111015607p:plain

ただのウィンドウ表示・・・。

・新生Aoi · bg1bgst333/Aoi@43b249f · GitHub

WebChromeClient

今度は、WebChromeClientを継承したCustomWebChromeClientクラスを定義して、やってみる・・・。

WebChromeClient | Android Developers

Class追加で、

f:id:BG1:20170109234542p:plain

で、

コンストラクタで、contextからactivityにキャストして、findViewByIdで、progressTextViewを取得・・・。
あとは、onProgressChangedでprogressTextView.setTextでnewProgressに更新・・・。

MainActivity.javaは、

CustomWebViewClientのcustomWVC、CustomWebChromeClientのcustomWCCをそれぞれWebViewにセット・・・。
(ちょっと名前変えた・・・。)
すっきりした・・・。

f:id:BG1:20170109235354p:plain

まあ、動作は変わらない・・・。

f:id:BG1:20170109235417p:plain

完了した時はこんな感じ・・・。

Sample/android/WebChromeClient/WebChromeClient/src/WebChromeClient at master · bg1bgst333/Sample · GitHub

WebView.setWebChromeClient

WebChromeClientも、WebViewのカスタマイズに関するオブジェクトだが、こちらはWebページのロード進捗や、faviconなど、UIに関するものが多い・・・。

setWebChromeClientで新たにWebChromeClient派生のオブジェクトをセットして、Webページのロード進捗を表示するようにカスタマイズする・・・。

WebView | Android Developers

activity_main.xmlは、

webviewの上にprogresstextviewというTextViewを設置・・・。

findViewByIdでprogressTextViewを取得・・・。
webView.setWebChromeClientにnewで生成したWebChromeClient派生のクラスオブジェクトをセット・・・。
onProgressChangedをオーバーライド・・・。
渡される進捗newProgressに"%"を付けてprogressTextViewにセットする・・・。

f:id:BG1:20170109121312p:plain

最初はURLバーの下に何も表示されていないが、ロードすると、

f:id:BG1:20170109121343p:plain

ロードが進むたびに進捗率が表示される・・・。
この時点で50%・・・。

f:id:BG1:20170109121442p:plain

でロードが完了すると100%になる・・・。

Sample/android/WebView/setWebChromeClient/src/WebView at master · bg1bgst333/Sample · GitHub

WebViewClient.shouldOverrideUrlLoading

shouldOverrideUrlLoadingは、ロードするURLが変わった時に呼ばれる・・・。

WebViewClient | Android Developers

これまでは、リンクをクリックしたり、リダイレクトが発生しても、URLバーのURLがそのままだったが、今回はURLが変わるたびに更新する・・・。

CustomWebViewClient.javaで、

コンストラクタでcontextをActivity型activityにキャストして、activity.findViewByIdでurlBarを取得・・・。

あとはshouldOverrideUrlLoadingに来るたび、urlBar.setTextでurlをセットすることで更新される・・・。

f:id:BG1:20170109103143p:plain

入力時は、http://yahoo.co.jpだが、

f:id:BG1:20170109103229p:plain

http://www.yahoo.co.jp/を経て(一瞬なので流石にキャプチャは取れない)、http://m.yahoo.co.jp/になった・・・。

さらにスポナビをクリックすると、

f:id:BG1:20170109103414p:plain

http://m.sports.yahoo.co.jp/になる・・・。

Sample/android/WebViewClient/shouldOverrideUrlLoading/src/WebViewClient at master · bg1bgst333/Sample · GitHub

WebViewClient

WebViewClientを継承した派生クラスをつくることで、ロード時のさまざまな処理をカスタマイズできる・・・。

WebViewClient | Android Developers

レイアウトや文字リソースなどはそのままに、

f:id:BG1:20170109044521p:plain

Classを追加・・・。

f:id:BG1:20170109044535p:plain

WebViewClientをベースとしたCustomWebViewClientとする・・・。

CustomWebViewClient.javaは、

独自のコンストラクタには引数にContext型のcontextを取る・・・。
何かと必要になるので・・・。
そして、shouldOverrideUrlLoadingで今回は、falseを返すだけではなくて、その前にToastでurlを表示する・・・。
この時、contextが必要なのでコンストラクタでもらうようにした・・・。
ちなみに、このshouldOverrideUrlLoadingに処理が来るのは、リダイレクトでURLが変わった場合、またはWebページ内のリンクを開いたときなどである・・・。

MainActivity.javaでは、

CustomWebViewClientのコンストラクタにthisをセットして、customWCを生成・・・。
webView.setWebViewClientにcustomWCをセットしている・・・。

f:id:BG1:20170109045432p:plain

http://yahoo.co.jpをロードすると、

f:id:BG1:20170109045458p:plain

http://www.yahoo.co.jp/となり、

f:id:BG1:20170109045557p:plain

http://m.yahoo.co.jp/となっている・・・。

つまり、2回リダイレクトされているということである・・・。

Sample/android/WebViewClient/WebViewClient/src/WebViewClient at master · bg1bgst333/Sample · GitHub