Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? #はじめに Webサービスを作っている際に、サービスの規模が大きくなるにつれてviewで用いているjsの記述が煩雑で見辛く、保守が難しくなってきたなーと思った経験ありませんか? 個人で開発している分には良いのですが、いざ他の人に改修を頼もうと思った際に、このDOMの操作に関わるjsはこのファイルに書いていて、あのDOMの操作に関わるjsのファイルはあっちのファイルに書いていて... なんでこのjsはhtmlファイルに直接書いてあるのに、こっちの部分はファイルに分けてあるの?と。 凄く極端な例で示しましたが、Webサービスの開発に携わられ
「みんなのコミック」は2018年10月31日を持ちまして更新を終了いたしました。 2020/11/09 追記: みんコミAdvent Calendarその他の知見を元に、漫画表示用カスタムビュー「MangaView」を公開しました。 https://github.com/keiji/mangaview はじめに この記事は「みんコミ Advent Calendar」の20日目の記事です。 「みんコミ」のAndroidアプリ(バージョン1.0.3)をベースに執筆しています。スクリーンショットは極力控える方針ですので、本記事を読む際には、「Google Play Store」からアプリをインストールしておくことをお勧めします。 (公開終了しています) abstract 別スレッドから描画でき、高速な描画が期待できるSurfaceViewは、描画にハードウェア支援(Hardware Accele
背景 FragmentのonCreateViewの中で、 あるテキストビューの位置を取得し、 staticフィールドに格納しておきたかった。 /** fields */ private static float TEXTVIEW_POSITION_Y; // ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //... TextView textview = (TextView) view.findViewById(R.id.textview); TEXTVIEW_POSITION_Y = textview.getY(); // returns 0 //... 問題 onCreate(Fragmentの場合はonC
There are many tutorials, libraries, and examples for implementing “drag & drop” and “swipe-to-dismiss” in Android, using RecyclerView. Most are still using the old View.OnDragListener, and Roman Nurik’s SwipeToDismiss approach, even though there are newer, and better, methods available. A few use the newer APIs, but often rely on GestureDetectors and onInterceptTouchEvent, or the implementation i
※2016/07/16 追記: これもう大分古いのでこれからAndroidやるなら最初からRecyclerViewからやったらいいんじゃないでしょーか Lollipop周りについてあんまり興味が湧かないと思いつつも触らないわけにもいかないしな、という感じでボチボチRecyclerViewやCardViewを触っていたわけですが、RecyclerViewの違和感がすごかったので色々考えた結果「RecyclerViewはListViewの代替ではないよね」って事に気づきました。新しいListViewだと思ってたのがいけなかったんですね。とりあえず色々考えた結論について以下に列挙します。 結論 RecyclerViewはListViewの代替ではない RecyclerViewはListViewの様な「沢山の子Viewの部分セットをrecycleしながら表示するView」という機能を分解したクラス
Original: Advocating Against Android Fragments by @Piwai Translated by @ninjinkun Reviewed by @hotchemi 最近私はDroidcon Parisでテックトーク(フランス語)を行い、SquareがAndroidのFragmentを利用して直面した問題と、Fragmentを避ける方法について説明した。 2011年に我々は以下の理由でFragmentを使う決断をした。 この時点で我々はタブレットをサポートしていなかった。しかしいつかは対応することがわかっていた。FragmentトはレスポンシブなUIを作るのを助けてくれる。 Fragmentはビューコントローラーだ。ビジネスロジックを単位ごとに分離してテスト可能にしてくれる。 FragmentのAPIはバックスタックのマネジメントを提供してくれる(
【Android】ヘッダー/フッタービューつきのAndroid GridViewをオープンソースとして公開します 平野 雄一 この記事の概要 AndroidのGridViewに対し、ヘッダービューとフッタービューの追加をサポートしたものをオープンソースとして公開しました。 We published HeaderFooterGridView by open source. HeaderFooterGridView supports adding header rows and footer rows to GridView for Android. 簡単な自己紹介 本ブログでの初めての記事になりますので、簡単な自己紹介を。 リクルートマーケティングパートナーズのiOS/Androidエンジニアの平野と申します。2014年7月にジョインし、現在は主に料理サプリのAndroidアプリに携わってい
https://www.youtube.com/watch?v=XhXC4SKOGfQ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 39分前 FacebookのiOSチーム、Adam ErnstとAri Grantによる@Sacle 2014での講演。データモデルとビューレイヤの改善の取組みについて紹介してくれてます。 1) データモデル 背景 2年前からHTML5からネイティブに切り替えて一旦大きく改善したが、その後機能を追加するたびにアプリのパフォーマンスが悪化。 ネイティブに移行後、オブジェクトのキャッシュレイヤとしてiOSのCore Dataを使ったのが失敗であった。 Core Dataの役割は「整合性を含むオブジェクトグラフ管理」 Facebook iOSアプリの場合、サーバ側を正のデータとするが、
「findViewById」にイラつくことがなくなりそうなプラグイン「Android Layout ID Converter」 Androidデベロッパーのみなさん、「findViewById」にイラっとくることありませんか? そんなイライラをライブラリなしですっきり解決する Android Studio プラグイン「Android Layout ID Converter」のご紹介をします。 プラグイン導入 なにはともあれ、プラグインをインストールしましょう。 Preferences... > Plugins > Browse Repositories... とたどっていき検索するとプラグインが表示されるので、[install plugin]ボタンを押します。 いつも通り Android Studio を再起動しろと言われて「は?」っと思いながらも再起動するとプラグインが有効化されます。
いいかげんあんどろでも勉強するかと 6 年遅れくらいで重い腰を上げかけている。気が重い。スマホとか知らないっすよ・・・。 あんどろ、というかスマホ固有の話題は色々あれど、その一つがタッチベースの UI なのは間違いない。そういえばタッチというのはどうやって実装されているんだろうか。それを一通り眺めれば、少しは気の重さが晴れるかもしれない。ということで今日はタッチイベントの実装を眺めてみたい。実装といっても静電容量だの電磁誘導だのではなくユーザー空間の話です。そして老人の勉強記録であり目新しい話はありません。間違ってたら教えてください。 参照するコードは何も考えず repo sync で降ってくる AOSP master。たぶんだいたい 4.4.x 相当(だよね?) View#onTouchEvent() あんどろプログラマからみたタッチイベントはふつう View#onTouchEvent(
Writing Custom Views for Android View のライフサイクルについて - attach/detach - traversals - save state ■ Attach/Detach onAttachedToWindow() ・super.onAttachedToWindow() を呼ぶこと ・関連する状態をリセットする ・状態の変化の監視を開始する(receiver を登録したりとか) ListView はここでデータチェンジのリスナーをセットしている onDetachedFromWindow() ・super.onDetachedFromWindow() を呼ぶこと ・ポストした Runnables を削除すること ・データや状態の監視を止めること ・リソース(Bitmap, Thread など)をクリーンアップすること View は Activity
Android2.3と4.1でActivityの挙動が少し異なるようなので調べてみました。 ActivityにSurfaceViewが一つあるだけのアプリを作成し、onCreate、onStart、onResume、onPause、onStop、onDestroy、onSaveInstanceState、onRestoreInstanceState、surfaceCreated、surfaceChanged、surfaceDestroyed それとSurfaceViewのコンストラクタにログ出力を入れて呼ばれるタイミングを調査しました。 使用した端末 ・HTC EVO (Android 2.3.4) ・Galaxy Nexus (Android 4.1.1) 1.アプリ起動後、戻るボタンで終了 2.3 4.1 onCreate onCreate SurfaceView Constructo
Viewをタッチすると移動させることができるUIを考えてみる。 ツールボタン的なUIに活用できるかもしれない。 これを実現するためには、サンプルプログラムのように実装したOnTouchListenerを移動させたいViewへセットしておけばよい。 移動対象のViewはRelativeLayoutの子Viewとなっており、タッチイベントでLayoutParamsのtopMarginとleftMarginを書き換えている。 複数のViewに同じリスナを登録すれば、それぞれのViewごとに移動させることができる。 MainActivity.java public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCre
追記: 指摘により、UIオブジェクト型を追加した(thx @kanreisa)。 クライアントサイドJavaScriptでのビューの作り方を大別すると、3つ4つある。 DOM操作型 テンプレートエンジン型 UIオブジェクト型 データバインディング型 ここでいうビューの作り方とは、有り体にいうとJavaScriptからどうやってDOM要素を生成したりするかどうか。イベントリスナーの登録とかも含む。 DOM操作型 昔ながらのやり方。jQueryとか使って直接DOM操作してビューを作る。 // 例えば、<div class='hoge'>fugafuga</div> みたいなDOMを表示する var myView = $("<div class='hoge'/>"); myView.text('fugafuga'); // body以下に挿入 $(body).append(myView); 長所
Android で、Bitmap をごにゅごにゅしていると、 java.lang.RuntimeException:"Canvas: trying to use a recycled bitmap" ってのに、出くわすことがあります。Web でいろいろ調べてみると、怪しげな解説がかなりあるので、本当のところ何が正しい理解なのかをまとめておきたいと思います。 そもそも、Bitmap#recycle() をやらないといけないのは、主に Android のこの辺の実装がよろしくなくて、recycle() してやらないと、メモリリークになるよ、といわれていることが、大きな要因です。勢い、メモリリーク怖さになんでも recycle() しようとして、件の例外に遭遇することとなる訳です。しかし、どういったケースでそれが必要になるのか、筋の通った記事をあまり見かけません。 まず、誰が ”trying
今回のテーマは Scroller を使用したカスタムビューの作成です。Scroller は座標を管理するオブジェクトで初期位置とターゲットの座標、あとそれに要する時間を指定してあげることでその時点での座標を計算し取得できます。オブジェクトの生成時に Interpolator を指定できるので移動量を任意に調整することもできます。 また View には computeScroll というメソッド持ち、その表示位置を変更させることができます。カスタムビューの中で computeScroll をオーバーライドしてあげることでカスタムビューにアニメーションを持たせる事ができるようになります。Scroller はここで使います。こんな感じで。 @Override public void computeScroll() { if (mScroller.computeScrollOffset())
羊さんが素敵なエントリを書いてくれてました「OverScrollでListViewをビョーンってする方法 - hdk_embeddedの日記 -」 でも、やっぱりフレームワークの ListView とか ScrollView で on/off できないってことはないんじゃないのかな?と思って調べてみました。 ScrollView の onTouchEvent メソッドのなかでは、ちゃんと overScrollBy メソッドが呼ばれています。 android.wdiget.ScrollView public boolean onTouchEvent(MotionEvent ev) { ... case MotionEvent.ACTION_MOVE: if (mIsBeingDragged) { // Scroll to follow the motion event final int a
iPhoneとAndroidを並べて使っていると、スクロールする画面で感じるストレスに差を感じることがある。 2つを比べてみると、iPhoneでは最上部までスクロールしてもまだスクロールすることができるのに対し、Androidではコンテンツの最上部までスクロールしてしまうと、それ以上スクロールを試みてもうんともすんとも言わないといった違いがあり、これがストレスの原因の一つと思われる。 そこで、Androidでもびろーんってのを実装してみようと考えたわけだが、Androidでは簡単に実現する方法が見当たらない。※Android 2.3 (Gingerbread)ではOverscrollを使う簡単な方法があるらしい。 なので今回は、OverscrollをAndroid 2.2以下でも簡単に実装することができる方法を考えてみた。そんでもってついでに公開してみた。Google Codeにサンプルプ
Androidでちょっとやりたいことがあって、拡大した画像を自由にスクロール表示させる必要があった。 で、そういうViewがあるのだと思って探していたら、意外にも見つからない。 よくピンチイン/アウトしたりドラッグしたりする画像ビューアあるけど、あれみんな自力で実装してるということ? そんなバカな、と思ったけど探しても見つからないし、とりあえず必要最低限のものはすぐできそうだったので作ってみた。 こちらのプログラムをかなり参考に、ベースにさせていただきました。 利用イメージはこんな感じ。 使い方は以下のようになります。 最後に記載しているMatrixImageView.javaのソースコードを貼っつけて、xmlファイル内でImageViewと同じように使用します。(もちろんソースコード内で直接MatrixImageViewを扱ってもOK) <jp.obanet.android.Matrix
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く