Androidプログラミング質問スレ revision54
■ このスレッドは過去ログ倉庫に格納されています
GUIで見た目が合ってるから問題ないという感じでリリースされるから無駄に入れ子しまくりのクソ重い画面が出来上がるんだろうな レイアウトの細かい設定が確認できない、入れ子がどうなってるのかよく分からない。
それはそのエディタが欠陥品で糞なだけです。エディタ開発者に改善要望出してください。 >>82
それが許されるのは個人開発で小規模にやってる人だけだろう
それなりの規模になってくると、君が言うエンジンの詳細を把握して
最適化できる人間が設計しないと見た目はいいが動作はモッサリという残念な仕上がりになって
あっという間に低評価で埋まっておしまい スタジオのレイアウトエディタも悪くはないがこんな熱く擁護する奴が出てくるとは 擁護とは侵害だな。vi使いの慣れれば使いやすいという信仰が許せないだけ。
単にxml直書きに慣れてるというだけで苦行を薦める輩は駆逐しないとな。xmlは本質的に糞なんだよ。 自分が許す許さないとか、感情論で使う技術選ぶ時点でプログラマー失格かと おれの理想とするプログラマー論はマ板でやれ。「慣れれば使いやすい」という設計はいかがなものか、ということだ。
そしてviのようにな使いにくいソフトの信者ほど普及に熱心ということだ。そして被害者が拡大し、開発が遅れる。 練習なしでも使いやすくて簡単に100点取れるならそれを使えばいいが
実際にはそんな都合の良いものは存在せず、練習なしで使えるものは所詮平均点以下しか取れないのが現実
それなら慣れれば高得点取れる技術を習得する方が良い
そもそもviだろうがxmlだろうが1日あれば使えるだろうに何が苦行なのか
というか、XML弄らなくても同じレベルで勝手に最適化してくれるGUIエディタなんてあるなら早く教えてくれよ > そもそもviだろうがxmlだろうが1日あれば使えるだろう
騙されるな。邪教の信者はこうやって嘘をついて初心者を地獄に招きいれるのだ。
なぜLinuxで統合開発環境の普及が20年も遅れたのか。vi信者のせいだ。
その結果、linux陣営はGUIの開発が遅れ、20年も普及が遅れたのだ。googleが拾ってくれなければ消えていた。
というか、不満があるならGUIエディタの一つぐらい自分で作れ。 まぁ使いこなせるならどっちでもいいんだろうけど。
作るものが決まっていて、
設定項目も把握しているなら、
レイアウトエディタも悪くないのかもしれない。
または企画段階で、動かさず色々並べてみるとか。
細部を把握しつつ、構成を試行錯誤するなら、
迷わずコードで書いた方が修正しやすいと思う 自分が理解できない・使えないものを色々屁理屈こねて批判するだけ
残念な奴だな なんでAndroidStudioのレイアウトエディタの話でviが出てくるんだ?
普通AndroidStudioでやるよな? 自分の主張が弱いことを把握しているから何か別のものを叩くことで「俺の主張はこんなに優れているんだ!」と信じ込ませることが目的 >>78
レイアウトエディタはGUIでviewごとコピペできるよ?
>>81
左にComponent treeで構成出てるよ?
細かい設定もView fewer attributesでできるし、
それでも足りなきゃ下のタブやctrl+クリックでxmlに切り替えることもできる
関係ないけど俺vi使い >>97
プログラミングでの使い回しは単なるコピペではない
関数で言えば引数によって結果が変わるように、ベースは同じだけど微妙な違いがあるものを効率的に作るときにソースを読み書きする能力は必須 >>98
>>78と言ってる事ちがくねえ?
あとレイアウトエディタ使っててxmlが読めない奴なんかおらんでしょ?
一からタイピングするのが苦行だからエディタで工程ショートカットするだけじゃん? そのxmlが読めない奴がxmlに文句言ってるんだよなあ 楽譜が読めるとは頭の中でメロディを再現できるということ。このお玉じゃくしはドでこれはミでと読めるレベルではない。
xmlでレイアウトが書けるということは実行して表示しなくても頭の中でレイアウトが正しくイメージできているということ。
おまえの指摘は甚だレベルが低い。後30年経験積んだら相手してやる。馬鹿め。 で、xml直書きしなくてもそれと同レベルに自動的に最適化してくれるレイアウトエディタ早く教えてくれよ 頭おかしい人の書き込みを読むのは
クソコードを解読するような趣があるな 煽るだけの書きこみしかしない人って職場でどんな立場の人が分かるよな。とても残念な人生だよな。 cpuの脆弱性問題でbiosまでアップデートしたらエミュとか使い物にならなくなったりしないかな?
怖くてアップデートできないわ 関係あんのかなBIOSって起動初期だけちょこっと使われるだけじゃないの
起動後に悪用出来るのかしら biosまでアップデートするとパフォーマンスがかなり低下するって話しあるからね
ゲームなんかでもfps落ちるって云うしエミュには影響出そうな androidの場合にはPCで言うBIOSに当たる物は更新されないと
思うので関係ないと思うけど すいません、ここにはレイアウトに詳しい方々がいるようなので質問させてください
縦に長いアプリ画面を作っていると、端末の画面サイズによっては下の方の表示が切れます
これを解決するために、全てのレイアウトで一番上をScrollViewにしてしまおうと考えているのですが、この発想は危険でしょうか? 下にスクロールできることが一目見て分かるようになっていなかったらそもそもスクロールしようと思わないので下の方が無視される、ぐらいか AndroidStudioでSQLiteを使用してDBを作成した時、
DBファイルはアプリと同じ場所に出来ますが、PCからは権限が無い為に見れないですよね?
毎回ADBを起動するのも面倒だし、
内部ストレージの直下とかに作る方法ってありますでしょうか? >>113
sqliteopenhelper改造すればできそうだけど、dbファイルを好きなディレクトリにコピーしちゃう方がかんたんな気がする。 AndroidStudio3.0.1で作成したアプリって、スマホのどこに入っていますか?
接続して「Android Device Monitor」を使用しても、スマホ(Devices)選択後にdataフォルダ等は見つかりましたが、
dataフォルダの中が開けませんでした。
DDMSを使用しても、同様にdataフォルダの中が見られませんでした。 すいませんでした、adbで見られるのですね
コマンドライン入力が面倒なだけですが、見ることが出来ました。 >>113
SQLiteOpenHelperのnameにフルパス渡せばそこに作られなかったっけ? >>117
ファイル名だけじゃなくフルパスで書けばいいのですね、ありがとうございます。
SQLite使っててふと思ったのですが、
insert()で追記したら、その後は何もしなくても問題は無いのでしょうか?
テキストファイルの様な、write()したらflush()してclose()してメディアスキャンでPCに認識させる、
といった処理は不要で良いのでしょうか? 今更になってRxJavaを使い出したんだけどdisposableの扱いがよくわからない
いかなる場合でもdisposable.dispose()を忘れたらリークする?
disposeするまで継続的にストリームにデータが流れてくるタイプならdisposeしないとダメってのはわかる
retrofitのようにrest apiを1回呼んで終わりってタイプのものもdisposeしないといけないのかな? >>119
compleさせればdisposeはいらぬ
ver1はしらん >>118
それに該当するのはDBだとcommitかな。
これはDB接続時に autocommit になってたと思った。だから自分でやらなくても良い。
しかしその場合は沢山読み書きすると効率が悪くなって遅くなる。
そういう場合は 接続時に autocommit をoffにしておいて後は自分で適当な所でcommitするように書けば良い。 あ、commitだけでなくDB接続する必要がなくなったら切断するとかも必要だよ。 >>120
いらぬのか
良かった
毎回disposeするの大変だよね いちいち、破棄しなくていい/しなきゃいけないって考えるより、
CompositeDisposalを使う方が遥かに楽だ。 compositにどんどん使い終わったdisposableが溜まっていくの気持ち悪くない? なんか公式の検索が機能してないんだけど
メニューも出なかったりでバグってんのかな?
ChromeとスマホのChromeとIEで試したけどどっちもダメだわ >>121
ありがとうございます。
今のところcommitを使っていないけどDBに書き込めて取り出せるので、autocommitで動いているみたいです。
Androidでは情報が少なかったですが、pythonやperlでも似た感じと考えて良さそうな感じでしょうか。
https://www.antun.net/tips/api/sqlite.html
http://netlog.jpn.org/r271-635/2009/12/sqlite_perl_prepare_commit.html
明示的にcommitしないと、autocommitで保存してくれる ← 今ココ
書き込み速度を上げたい時は、明示的にcommitを書く >>127
DB接続時のオプションでautocommitにするかしないか設定できないかな?
Androidの場合どうなるのか知らないんだけど。
で、そこでautocommitをやらないようにした場合は自分でcommitする必要がある。 Androidの場合は、
beginTransaction()
...
setTransactionSuccessful()
endTransaction()
これしかない。
ジャーナルとかインデックス省略して、INSERT/DELETEを速くするとかはできない。 recyclerViewのadapterをswipeRefreshで更新して一番上に項目を追加するようにしたら、
スクロール位置が更新前のままで、更新後に再度上にスワイプしないと新しい項目が表示されないんですが、
更新時にスクロール位置をトップにするにはどうしたらいいんでしょうか。
ちなみに更新時にadapterを新規に作り直してrecyclerViewにセットする方法だとうまくいきましたが
差分追加の方法でやりたいです。 カメラアプリ作ろうと思ってとりあえずSurfaceView使ってカメラ画面写したいんだけど
いまいちうまくいかない
getSupportedPreviewSizes()ってのを使って解像度取得してそれをsetPreviewSizeで使うやり方でやってるけど
実機実行した時にカメラ禁止マーク+電話のマークみたいな画像が出てくる
Runのログには「E/Camera: Error 1」
どこがダメなんだろう 機種書き忘れてました
京セラのKC-01でandroidバージョンは4.4です >>126
公式ってdeveloper.android.comのこと?
なんかちょい前からおかしいね
一番下の言語設定でEnglishにしたら検索できると思うよ >>133
日本語版は内容が古いままだったりあまりメンテされてない雰囲気、やる気ないんだろうな SQLiteのトランザクション処理について、質問があります。
ググるとサンプルが色々とありますが、
DBをclose()しているサンプルとしていないサンプルがあります。
db.endTransaction()を行った後にclose()するのって実際のところ、どうなのでしょうか?
用途としては1行100Byteほどのデータを1秒に数回、dbと接続してinsertして切断しています。
(メモリに数行溜め込んで一気に書いた方が速くなるとは思いますが。)
// トランザクション開始
db.beginTransaction();
try {
/** Insert等のDB操作 */
db.setTransactionSuccessful();
} catch(Exception e) {
e.printStackTrace();
}
finally {
// トランザクション終了
db.endTransaction();
db.close(); // ←質問:必要?不要?邪魔?
} トランザクションごとにdb.closeする必要はないはずなんだけど
SQLiteでdb.closeをし忘れたまま再度DBを開いちゃったりすると
DBが壊れてしまうのでトランザクション毎にdb.closeするサンプルが
あるのではないかと
あとは意味もわからずそういうサンプルをそのままコピペしてる
サンプルが多いのかもしれない 必要・不要ってより、そのdbの中身のインスタンスはどこで取得してるのよ??
// トランザクション開始
の直前でインスタンス生成して一時的にしか使わないならdb.closeしとけばいいだろうし。
dbのインスタンスを使いまわすならcloseしちゃまずいし。
それ次第だろ。 まぁ、俺の普通は一つのSQLiteDatabaseのインスタンスを使いまわすから、closeはしないで
使いまわすけど。SQLiteDatabaseはスレッドセーフになってるから、ばしばし色んなスレッドから
アクセスして問題ないし。 >>136
> SQLiteでdb.closeをし忘れたまま再度DBを開いちゃったりすると
> DBが壊れてしまう
そんなアホな... http://relog.xii.jp/mt5r/2010/10/android-2.html
このページのコード使ってアンドロイドスタジオで動かしたいんだけど、
javaはアンドロイドスタジオのプロジェクト作成機能で
ProgressCircleって名前で作成したんだけどXMLはどのようにファイルを作ればいいのでしょうか。 付属アプリじゃないカメラアプリならとりあえず正常に動作すると思って参考にしようとしたけど
どうやら付属のカメラアプリじゃないとまともに動かないっぽい
起動した直後に問題発生で終了する
今は付属カメラアプリのappファイル探してるけど見つからなくてつまづいているところ 今時SQLiteを生で書く馬鹿はいない
realmかormaかAACのroom使え デファクトのormはなんなん?
オプソライブラリいっぱいあって困る SQLiteじゃないとダメなら、Room一択。
NoSQLでも構わないなら、ObjectBox。
Realmは、Entityの継承縛りとマイグレーションが糞過ぎる。 Android Studioを3.0.1にアップデートしたら
use of overloaded operator '<<' is ambiguous というエラーが出てビルドが通らなくなりました・・・
エラー箇所:
AppData\Local\Android\sdk\ndk-bundle\sources\third_party\googletest\googletest\include\gtest\gtest-printers.h
解決策をご存知の方教えていただけないでしょうか? アプデ通知にndk使うなら2.3から上げちゃダメと但し書きがあったよ
関係ないが今ハマってるのがmacでjava 8u161 2 最新のパッケージでセットアップすると
色々こけるlinuxは平気なんだけどな AnkoでAnkoLogger使ってみたけど、verbose()とdebug()が反応しないのはなんでなんだ
それ以外はちゃんとログ出るのに >>145
取り敢えBuild->Clean Projectやろう >>146, >>149
レスありがとうございます。145です。
2.3から上げちゃいけないという警告があったのですね。全然気づきませんでした。
他アプリは3.0対応していたため(特にエラーが発生しなかったため)安易に上げてしまいました。
Clean Projectもやってみましたが状況に変化がありませんでした。 >>147
いまセットアップすると最新のSDKツール が落ちてくるんだがデバイスモニターが
java8要求してきやがるのよで入れても動かない古いの落とそうとしてもビルドツ
ールは選べるけどSDKツールは選べないっぽいしで
>146でjava8u162が悪いと書いたけど8u144もダメだったから多分SDKツール
かもね おい、おまえら教えろ
Androidのアプリを作ってみようと思っているんだけど、
最初に作る簡単なアプリってのはどんなのがいい?
Androidの特徴がわかり、かつ難しくないのがいいんだけど。
スキルとかはこんな感じです
・これまでの主な言語や環境 c#、asp.net、JavaScript(JQuery)、SQL(MSSQL)
・Android Studioを使用予定
・kotlinの言語仕様を一通り学んだのでkotlin使用
・HelloWorldはすでにやってみたので次のお題を探している TODOメモか日記帳
プログラミングの初心者じゃないならいきなり作りたいもの作っても良いんじゃないか HelloWorldの次なら電卓かな
Androidの特徴を掴むのなら、GoogleMapとGPSを使って、
自分が行った場所の記録アプリとかでもいいかもしれんが aideというAndroidのアプリをつかってるんですが
標準ライブラリのソースをみる方法ありますか?
スレ違いだったらすみません >>153
ありがとうイイネ
TODOの中身を表示させたり、削除、編集するクラスを作って
リストに入れて保持したりするんかな。わくわくするね
>>154
ありがとう
関数電卓なのは難しいけど、普通の電卓のようなのならいい練習になりそうだね
GPSに関しては実機がないから無理なんだよね
安い1万円以内のAndroid6.0ぐらいのスマホを購入するかなあ APIよりUI(フラグメントは後でいいけど)やらないと始まらんだろ。
今はGPSとかセンサー系もエミュレータでもテストできるけど、
やっぱり使ってて楽しいので実機がいい。 やっぱりいきなり作ってみるより、解説本やネットの情報をみて
そのAPIとかUIとかのを一通り学んだほうがいいのかなあ(´・ω・`) ガチなアプリ作るわけじゃないんだし両方とも作りながら試行錯誤したら良いんじゃない? 本2冊読んでclean-arcを覚えてからコーディングに入ったけど順調
作りながら学習だとコードがめちゃくちゃになってすぐに行き詰まる 他所で何か完成させたことあるなら本読みながらながら制作でいい
初めてなら好きなだけ本読めばいい読んでも出来るようになるとは限らないがな どうせお勉強が目的になっていて何も完成させられないに決まっている
作りたいものが何もないのにプロミングの勉強してても意味ない >>156
電卓はマジオススメやで
レイアウトの勉強になるし、応用で向きを変えたり設定で16進数電卓にするといい
(実際に向きが変わる毎に切り替わったらウザいが)
実機が無くてもこの辺りは勉強になる
特に他言語からJava(kotlinは知らんが)に来ると、byte型の扱いでイーってなるしw 作りたいものからライブラリ探してやるのが一番だと思う
今までアプリ使ったことあるならなおさら 何も理解してない素人ほど勉強に電卓作らせようとするんだよな。
電卓ってのはコンパイラの勉強する人が作るものだよ。 なんだかんだ言って、自分で使うようなアプリがベターだわな。
フリーだと何しているか信用できないメモ帳を自分で作るとか。 普段使いするけど痒いとこに手が届かないアプリって割とあるしね 普通のJavaみたいに
配列に入ってる文字列を一つずつ改行しながら表示するにはどうやればいいですか?
普通のJavaでは
for(int i=0;i < a.length; i++){
System.out.println(a[i]);
}
こうやると思うのですが
AndroidでTextViewでやるに
for(int i=0;i < a.length; i++){
mTextView.setText(a[i] + "\n");
}
自分でこうやろうとしても改行されず新しい下の方の文字列に上書きされてしまいます >>自分でこうやろうとしても改行されず新しい下の方の文字列に上書き
わかってんじゃん。君がやってる事は新しい文字列で上書きしてるだけ。
だから、やらなければいけないことは文字列を連結すればいい。
StringBuilder sb = new StringBuilder();
for(int i=0;i < a.length; i++){
sb.append(a[i] + "\n");
}
mTextView.setText(sb.toString()); // 連結した結果を表示 >>171
TextViewには、appendというメソッドがあるから。
あと、StringBuilderはCharSequenceでもあるから、toStringは激しく余分。 textviewの文字列の一部にダイアログを起動するリンクがあったとして、
それをespressoでクリックする方法ないですか? >>171
>>172
できました!ありがとうございました! >>172
横からだが今まで必ずtoStringしてたわ
勉強になりました メモリ足りなくなったなどでプロセスキルされて、再起動されるときに完全に初期状態で
表示する方法はありますでしょうか??
例えば、複数のアクティビティを遷移してバックスタックが空じゃないとき、再起動されると
バックスタックも完全に復元されますよね??
これを防ぎたいのです。
ユーザビィリティが悪くなるのは分かりますが、復元するのがめんどくさいので。 復元が標準でついてるのに、それを無視するスタイルで進めていくと、後々逆に面倒くさくなるぞ
負債が溜まっていく アクティビティ間やフラグメント間でのパラメータの受けた渡しがめんどくさいんです。
SerializableまたはParcelableでBundle経由で受け渡すと、受け取り側でdesrializeされた時に
何もしないと別のオブジェクトになったりして。
逆に、オブジェクトを直接渡さず、IDだけとか渡すのも色々めんどくさいしかけを作らなきゃいけなくて。 まじでAndroidの最大のウンコのなんですけど、この部分。
だから、システムによってプロセスキルされてメモリがぱーになったら、復元しなくていいから、
アプリを最初から起動してほしいんです(要はユーザーが最後に訪問してたアクティビテイとかは
全部復元しないで無視)。
マニュフェストのフラグ一発でできないんですかね? ■ このスレッドは過去ログ倉庫に格納されています