Androidのビューを構成するためのレイアウトをXMLで作成する場合、ルート要素にはなんらかのコンテナクラスの要素(ViewGroupの派生クラスを表す要素、例えばLinearLayout)を記述しなくてはならないというルールがある。 例えば、以下のように構成されたビュー階層があったとしよう。 この画面に対してサブコンテンツとして以下のようなXMLで構成されたレイアウトを上記ビューのLayer1階層に追加したいとする。 sub.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayoutMerge" android:layout_width="wrap_cont
Androidはビューをインフレートすることでカスタムなダイアログを生成することができる。 Activity中にて public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater factory = LayoutInflater.from(this); View layoutForDialog = factory.inflate(R.layout.layoutfordialog, null); Dialog dialog = new AlertDialog.Builder(this) .setIcon(android.R.drawable.ic_input_get) .setTitle("ダイアログのタイトル") .setCancelable(true)
こんな感じにタイトルバーに表示する文字列をFading領域から横スクロールしたい。いわゆるマーキー表示って奴だ。 Activity中に書くサンプル Window window = this.getWindow(); Class phoneWindowClass = Class.forName("com.android.internal.policy.impl.PhoneWindow"); Field field = phoneWindowClass.getDeclaredField("mTitleView"); field.setAccessible(true); TextView title = (TextView)field.get(window); title.setSingleLine(); title.setEllipsize(TruncateAt.MARQUEE); title
AndroidのService(サービス)メソッドを実行中に「通信中...」などと経過中のダイアログを表示したいなと思い、ProgressDialogを使用してみたのだが、 public boolean scrape(String siteurl, Bundle bundle) throws RemoteException { ProgressDialog dialog = new ProgressDialog(this); dialog.setIcon(android.R.drawable.ic_dialog_alert); dialog.setIndeterminate(true); dialog.setTitle("Webスクレイピングサービス"); dialog.setMessage("通信中です..."); try { dialog.show(); return WebScrap
直前のエントリで言及したように、JSDKレベルのHTTP接続はどうやら使い物にならないぽいので、Android SDKに同梱されているApache HttpClientを使うことにした。 Android内部で使用されているHttpClientのバージョンはそのソースコードから、4.0相当と思われる。 HttpClient.java * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java $ * $Revision: 676020 $ * $Date: 2008-07-11 09:38:49 -0700 (Fri, 11 Jul 2008) $ /** * Inte
ActivityにはServiceを呼び出すためのメソッドが用意されているが、AIDLを使用して互いにインタフェースを通じて通信を実施する場合は、まず最初にサービスをバインドするためにbindServiceメソッドを使用する。 IWebScrapingService service; private ServiceConnection serviceConn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder binder) { service = IWebScrapingService.Stub.asInterface(binder); } @Override public void onServiceDisconnected(ComponentN
拙作のカレンダビューに関して、以前にフリック・モーションで月を変えることに言及した。 ViewFlipperによるビューの切替えとアニメーション 実装としてはこれでOKだと思っていたのだが、いざ実機でテストしてみると腑に落ちない振る舞いをする。 現象 左右のフリック・モーションが認識されないことがある。(不定期) 実装は以前にエントリに書いたように、ViewFlipperクラスのonTouchEvent中のアクションの切替え時に、タッチされてからの移動変量を閾値として次月又は前月に移動することで実装している。 ViewFlipper#onTouch抜粋 protected float lastTouchX; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { c
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く