読者です 読者をやめる 読者になる 読者になる

SslErrorHandler.cancel

onReceivedSslErrorが発生し、ユーザがロードをキャンセルしたい場合は、SslErrorHandler.cancelを使う・・・。SslErrorHandler | Android DevelopersCustomWebViewClient.javaで、ポジティブボタンの"Proceed"に加えて、ネガティブボタンの"Cancel"も追加・…

SslErrorHandler.proceed

onReceivedSslErrorで、SSLエラーを拾えるのはわかったが、そのままだとページを表示できない・・・。 ユーザの許可を得て、ロードを薦めるには、SslErrorHandler.proceedを使う・・・。SslErrorHandler | Android Developers今回はダイアログを表示し、Proc…

WebSettings

WebSettingsは、WebViewのさまざまな設定を持つクラス・・・。WebSettings | Android Developersとりあえずユーザエージェントを取得してみる・・・。onPageFinishedで、view.getSettingsでwebSettingsを取得・・・。 webSettings.getUserAgentStringでユー…

WebViewClient.onReceivedSslError

onReceivedSslErrorは、SSLエラーが発生した時のハンドラ・・・。WebViewClient | Android DevelopersSSLエラーは普通のエラーと違って、こちらに来るらしい・・・。CustomWebViewClient.javaで、 // エラーが発生した時. @Override public void onReceivedE…

WebViewClient.onReceivedError

onReceivedErrorは、エラーが発生した時のハンドラ・・・。WebViewClient | Android Developersエラーが発生した時には、エラーページへ遷移し、トーストでエラーコードと説明を表示してみる・・・。assetsフォルダの下にerror.htmlというファイルを作成し、…

WebChromeClient.onProgressChanged

onProgressChangedは、ロードの進捗の変化があった時に発生するハンドラ・・・。WebChromeClient | Android Developers今回はプログレスバーで進捗を表示する・・・。activity_main.xmlに、ProgressBarを追加・・・。CustomWebViewClient.javaで、コンストラ…

WebViewClient.onPageFinished

onPageFinishedは、ページのロードが終了した時のハンドラ・・・。WebViewClient | Android Developersこれまで、TextViewのprogressTextViewで進捗を表示していたが、ロードしていない時は非表示、ロードを開始してからは表示状態にして、ロードが完了した…

WebViewClient.onPageStarted

onPageStartedは、ページのロードが開始された時のハンドラ・・・。WebViewClient | Android DevelopersshouldOverrideUrlLoadingだと、バックキーで戻って来た時に呼ばれないことがあるので、こちらでURLの更新をする・・・。CustomWebViewClient.javaで、s…

Activity.onBackPressed

バックキーでもgoBackで戻れるようにしたいが、そのためにはバックキーが押された時の動作を変えないといけない・・・。Activity | Android DevelopersonBackPressedをオーバーライドして、バックキーの動作を変える・・・。MainActivity.javaで、canGoBack…

WebView.canGoBack

canGoBackは、goBackで前のページに戻れるかどうかをチェックする・・・。WebView | Android Developers当然、1つ目のページからさらに前に戻ることはできないので、トーストで"戻れません!"と表示してみる・・・。MainActivity.javaで、webView.canGoBackが…

WebView.goBack

goBackで一つ前のページに戻ることができる・・・。WebView | Android Developersresの下にmenuフォルダつくって、その下にmain.xmlを用意し、今回はメニューにgoBackのアイテムを追加・・・。strings.xmlは、"GoBack"と表示されるアイテム・・・。MainActiv…

pipe

pipeは、プロセス間通信に使う名前なしパイプを生成するシステムコール・・・。Man page of PIPE引数には要素数2のint型配列を渡す・・・。0番目が読み込み用、1番目が書き込み用に使われる・・・。 主に、親プロセスと子プロセスの間でのプロセス間通信に使…

インデクサ

インデクサは、プロパティを拡張したようなもので、オブジェクトのメンバに配列のような添字でアクセスできる・・・。 さらに、プロパティと同じく、getとsetでアクセス制限もできる・・・。 オブジェクトの中に、配列やリストのようなコレクションをメンバ…

usingステートメント

これまで、Disposeによるリソース解放は、finallyで手動で行うような形になっていた・・・。 usingステートメントを使うと、IDisposableインターフェイス実装オブジェクトについては、finallyがなくても自動でリソース解放してくれる・・・。CustomReader.cs…

IDisposable

IDisposableは、割り当てられたアンマネージドリソースを解放する機構を実装するためのインターフェイス・・・。IDisposable インターフェイス (System)リソースを明示的に解放しないといけないクラスにDisposeメソッドを実装し、この中で解放処理を実行する…

finally

finallyは、tryブロックの中で例外が発生しても発生しなくても実行すべき処理を書く場所・・・。 今回は、2つのファイルを連続して読み込んで内容を出力・・・。 2つ目で例外が発生しても、1つ目のファイルを閉じる処理は実行するような形にする・・・。 Mai…

move(utility)

代入は、実質的にはオブジェクトのコピーである・・・。 obj = func(); // funcは右辺値なので一時オブジェクトをobjにコピーすることになる. 例えば、上のような場合にobjやfunc()の戻り値がint型ならまだしも、これが大きなクラスオブジェクトのコピーとな…

右辺値参照

C++11では、右辺に置かれる定数リテラルや文字列リテラル、オブジェクトのコンストラクタや関数などは、右辺値と呼ぶ・・・。 一方、左辺に置かれる変数やオブジェクト、ポインタなどは左辺値と呼ぶ・・・。そして、C++03以前では単に「参照」と呼ばれていた…

代入演算子のオーバーロード

コピーコンストラクタの項で、「オブジェクトの代入は、コピーではあるがコピーコンストラクタの対象外で、この場合コピー代入演算子のオーバーロードが必要」ということを書いた・・・。 このオブジェクトの代入の場合も、アドレスのコピーをしないようにコ…

変数

Pythonも宣言はない・・・。変数への代入 - 変数 - Python入門というより初期化された時点で作成される感じか・・・。 $ vi variable.pyとし、valに123をセットした時点で変数が生成・・・。 pythonのprintは改行してしまうので、今回は値だけ出力・・・。 $…

変数

Rubyも宣言なく、直接変数を使える・・・。変数と定数 (Ruby 2.4.0) $ vi variable.rbとし、Rubyは$とか付けずに変数名valだけ・・・。 valに123を代入して、printに渡す・・・。 こちらのprintも改行しないので、 $ ruby variable.rb val = 123 $このように…

変数

Perlには変数の型の宣言が必要ないので、そのまま最初から変数に値を代入することができる・・・。perldata - Perl のデータ型 - perldoc.jp変数に値を入れて出力してみる・・・。 $ vi variable.plとし、Perlの変数は頭に$を付ける・・・。 スカラー変数と…

print

続いてPython・・・。 しばらくはPython2を前提とする・・・。Python2のprintはprint文であり、括弧なしで使う・・・。6. 単純文 (simple statement) — Python 2.7.x ドキュメント $ vi print.pyとして、Python2だと括弧はいらないが、Python3だとprint関数…

print

次はRuby・・・。こちらも出力用にprintがある・・・。module Kernel (Ruby 2.4.0)正確には、Kernelモジュールのモジュール関数のひとつらしい・・・。 $ vi print.rbで開いて、printのあとの括弧内に文字列"ABCDE"と置いてるが、括弧は省略していいらしい・…

print

突然ですが、スクリプト系言語をやることに・・・。 まず、Perlから・・・。Perlの組み込み関数 print の翻訳 - perldoc.jp文字列を出力をするにはprintを使う・・・。 $ vi print.plとviで開いて、1行目の"#!"のあとにperlコマンドのパスを付けるとperlスク…

WebChromeClient

今度は、WebChromeClientを継承したCustomWebChromeClientクラスを定義して、やってみる・・・。WebChromeClient | Android DevelopersClass追加で、で、コンストラクタで、contextからactivityにキャストして、findViewByIdで、progressTextViewを取得・・…

WebView.setWebChromeClient

WebChromeClientも、WebViewのカスタマイズに関するオブジェクトだが、こちらはWebページのロード進捗や、faviconなど、UIに関するものが多い・・・。setWebChromeClientで新たにWebChromeClient派生のオブジェクトをセットして、Webページのロード進捗を表…

WebViewClient.shouldOverrideUrlLoading

shouldOverrideUrlLoadingは、ロードするURLが変わった時に呼ばれる・・・。WebViewClient | Android Developersこれまでは、リンクをクリックしたり、リダイレクトが発生しても、URLバーのURLがそのままだったが、今回はURLが変わるたびに更新する・・・。C…

WebViewClient

WebViewClientを継承した派生クラスをつくることで、ロード時のさまざまな処理をカスタマイズできる・・・。WebViewClient | Android Developersレイアウトや文字リソースなどはそのままに、Classを追加・・・。WebViewClientをベースとしたCustomWebViewCli…

WebView.setWebViewClient

普通にWebViewでロードしようとすると、サイトによってはChromeを起動してしまう場合がある・・・。Googleはそのまま表示される・・・。しかし、Yahoo Japanの場合、Chromeを起動して、そっちでロードしてしまう・・・。そういう場合、WebViewClientのshould…

WebView.loadUrl

久しぶりにWebViewについて・・・。WebView.loadUrlで指定のURLのWebページをロードできる・・・。WebView | Android Developers普通のWebサイトのページは、WebViewの項でロードできたが、ローカルHTMLファイルの場合はどうだろう・・・。activity_main.xml…

TextView.hint

TextViewのhint属性を使うと、EditTextで入力されていない状態の時に、入力を促すヒント文字列を表示できる・・・。TextView | Android DevelopersこっちもなぜかEditTextじゃなくてTextView・・・。strings.xmlに、文字列リソースとして、edittext1_hintを…

TextView.inputType

TextViewのinputType属性で、EditTextなどの入力に使うデフォルトのキーボード表示を指定し、入力制限などを行うことができる・・・。TextView | Android Developersなぜ、EditTextではなく、TextViewに用意されてるのかはわからないが・・・。activity_main…

TextView.textStyle

ボールド(太字)、イタリック(斜体)、ぐらいの文字スタイルなら、textStyleで設定できる・・・。TextView | Android Developersactivity_main.xmlで、textview1にはnormal(通常)、textview2にはbold(太字)、textview3にはitalic(斜体)をセット・・・。真ん中…

TextView.textColor

文字の色はtextColorで設定する・・・。TextView | Android Developersまず、XMLを追加・・・。colors.xmlとして、colorリソースのredを8桁の16進数で定義・・・。activity_main.xmlは、textview1は、android:textColor="@color/red"でリソースから赤をセッ…

TextView.textSize

文字の大きさはtextSizeで設定する・・・。TextView | Android Developersstrings.xmlで、textview1_text~textview3_textを定義・・・。XMLを追加・・・。dimens.xmlを追加・・・。 これは、dpやspなどの寸法をあらかじめ定義しておくリソースファイル・・…

TextView.text

基本に立ち返って・・・。TextViewのXML属性textには、TextViewに表示する文字列を指定する・・・。TextView | Android Developersstrings.xmlには、nameを"textview1_text"として、"ABC"という文字列をリソース定義・・・。activity_main.xmlでは、textview…

Bundle

Bundleは、あるオブジェクトから別のオブジェクトに複数のパラメータを渡すのに便利なクラス・・・。Bundle | Android Developersいろいろなところで使われるが、今回はIntentで起動したActivityにパラメータを渡す・・・。activity_main.xmlで、strings.xml…

Application

アプリケーションの開始から終了まで、永続的にデータを保持していたい場合、Activityのメンバに持っていても、Activityは常に破棄される可能性があるので、その時にデータも消えてしまう・・・。Application | Android DevelopersApplicationクラスなら、開…

Context

Androidのクラスには、Contextを引数に取るものが非常に多い・・・。Contextは、アプリケーション情報をあるクラスから他のクラスへ渡して共有するための仕組み・・・。Context | Android Developersそして、Activityや、Service、後述するApplicationクラス…

R.attr.theme

スタイルは、個々のViewのUI設定をまとめたものだが、テーマは、アプリケーションまたはアクティビティ単位でUI設定をまとめたもの・・・。Styles and Themes | Android DevelopersAndroidManifestのapplicationタグにthemeをセットすることで、統一感のある…

R.style

これまで、ButtonやTextViewなどのViewにいろいろな属性を直接指定してきたが、styles.xmlにスタイルとしてまとめて設定しておけば、Viewのstyle属性にセットするだけで、そのスタイルのViewになる・・・。スタイルとテーマ | Android DevelopersAndroidの既…

StateListDrawable.state_pressed

ステートリストを使うと、Viewの状態によって、画像や形状を変化させることができる・・・。Drawable Resources | Android DevelopersStateListDrawableのstate_pressed属性がtrueの時は押された時、falseの時は離された時なので、その状態ごとにshapeの形状…

GradientDrawable.shape

Drawableの項で、drawableフォルダにXMLでdrawable情報を定義できた・・・。Drawableリソースについては、ドローアブル リソース | Android Developersに詳細があり、shapeタグを使ったものは、ドローアブル リソース | Android Developers"シェイプ ドロー…

View.padding

マージンとパディングは混同しやすい・・・。(マージンとパディングの違いの詳細については、 Android Advent Calendar: 今さら聞けないmarginとpadding ここを参照のこと)親Viewとの境界線、またはView同士の間隔には、layout_margin~を使った・・・。 こ…

ViewGroup.MarginLayoutParams.layout_marginLeft

左側の間隔はlayout_marginLeftで調整する・・・。ViewGroup.MarginLayoutParams | Android Developers前回は、親のViewGroupとの境界線の間隔しか設定しなかったが、今回は6つのTextViewを用意し、同階層のViewとView同士の間隔も設定する・・・。strings.x…

ViewGroup.MarginLayoutParams.layout_marginTop

とあるViewから見て、同じ階層にある近くの他のViewとの間隔を決める場合や、親のViewの境界線との間隔を決める場合、layout_margin~を使う・・・。ViewGroup.MarginLayoutParams | Android Developers今回はlayout_marginTopで、上との間隔だけセットする…

Drawable

Drawableは、Viewの描画に使うリソース情報を抽象化したものといったが、なにも画像だけとは限らない・・・。Drawable | Android Developersどういった形状にするかをXMLで定義することもできる・・・。activity_main.xmlは、前と同じ2つのButton・・・。str…

Resources.getDrawable

Resources.getDrawableでDrawableリソースを取得できる・・・。Resources | Android DevelopersDrawableは、Viewの描画に使うリソース情報を抽象化したもので、例えば背景画像などもDrawableリソースとして扱える・・・。drawableの適当なフォルダに(ここで…

Resources.getColor

Resources.getColorで、リソースに定義した色情報を取得できる・・・。Resources | Android Developersactivity_main.xmlに、Buttonを3つ・・・。strings.xmlに"Button1"~"Button3"・・・。ここで、Android XML Fileを追加・・・。valuesの下にcolors.xmlを…