You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
ç¾å¨ã® Android Developers ã®æ å ±ã¯é常ã«å å®ãã¦ãã¦ãDeveloper Guides ãé ã«èªã¿é²ãã§ããã ãã§éçºã«å¿ è¦ãªç¥èã¨Googleãæ³å®ãã¦ãã(ã§ããã)æãåºæ¬çãªå®è£ ãå¦ã¶ãã¨ãã§ããã ç¹ã«ãã®ãåºæ¬çãªå®è£ ãã¨ãããã®ãéè¦ã§ããããç¥ã£ã¦ãããªãã¨éçºè éã®ææçéãã¹ã ã¼ãºã«è¡ããªãã£ãããããããæ°ãã¤ãã¦ããã¹ã注æç¹ãè¦è½ã¨ããã¡ã«ãªã£ã¦ãã¾ãã ã¨ã¯ãããä»ã®è¨å¤§ãªå ¬å¼ããã¥ã¡ã³ãããã èªãã¨ããã®ã¯å³ããã®ã§ãAndroidéçºãããä¸ã§æä½éçè§£ãã¦ããã¦ã»ãã(ã¨åãæã£ã¦ãã)äºæã¨ãããã«ã¤ãã¦ç¥ããã¨ãã§ããããã¥ã¡ã³ãé¡ã«ã¤ãã¦ã¾ã¨ãã¦ã¿ããã¨ã«ããã 2018/03/25 : ãªãªã¼ã¹å¨ãã«ã¤ãã¦å¥è¨äºã«è¿½è¨ããã nein37.hatenablog.com å ¬å¼ããã¥ã¡ã³ãã®éè¦ãã¼ã¸ å ¬å¼ããã¥ã¡ã³ãã¨è¨ã£ãå ´åã
æ¬ããã¥ã¡ã³ãã«ã¤ã㦠Activity/Fragmentã®åçæã«é¢ãã¦ã®æåã¨ãç»é¢åè»¢ã®æåãã¾ã¨ããããããçµ±ä¸çã«å¦çããããã®ã¯ã©ã¹ãæç¤ºããã ç»é¢å転ãªã©ã®configChangeã«ã©ã対å¦ããã å ¬å¼ããã¥ã¡ã³ãã®Handling Runtime Changesã§ã¯ã以ä¸ã®äºã¤ã®å¯¾å¦æ¹æ³ãç´¹ä»ããã¦ããã configChanges屿§ã使ããActivity/Fragmentã®åçæããããªã setRetainInstance(true)ã使ããFragmentã®åçæããããªããåçæåå¾ã§ä½¿ããããªãã¸ã§ã¯ãã¯ãã®Fragmentã«æ ¼ç´ãã¦ããã ãããã®æ¹æ³ã¯ãããããåé¡ç¹ãããã Activityã®configChangesã§åçæããããªãå ´åã®åé¡ç¹ Acdtivityã®å±æ§ã« ã®ããã«configChangesãæå®ãã¦Activityã®åçæããããª
Androidã®ãåå¼· 第ä¸å ãã©ã°ã¡ã³ãã®ä½¿ç¨ 第ä¸åã¯ãã©ã°ã¡ã³ãã®ä½¿ãæ¹ãç´¹ä»ãã¾ãã â»ç·¨éä¸ã§ã 第ä¸åãç°å¢æ§ç¯ãAndroidPJã®è§£èª¬ããµã³ãã«ã®ä½æãã¤ãã³ãã®å®è£ ãç»é¢é·ç§»(Intent) 第äºå ListViewã¨ç¬èªAdapterã«ã¤ã㦠第ä¸åããã©ã°ã¡ã³ãã®ä½¿ç¨ 第ååã復å å¦çã®éè¦æ§ã«ã¤ã㦠第äºåãéåæéä¿¡ã®éè¦æ§ãANRã¨æ¦ã 第å åãç¬èªã¬ã¤ã¢ã¦ããä½ãããViewã®æ¡å¼µã®æ³¨æç¹ãOnMeasureãViewã®ã©ã¤ããµã¤ã¯ã«ã«ã¤ãã¦å¦ã¶ 第ä¸åãAPI x SQLiteDBé£åã¢ããªã使ãã¦ã¿ãã ãã©ã°ã¡ã³ãã£ã¦?? Fragmentã¯Android 3.xç³»ãã追å ãããã³ã³ãã¼ãã³ãã§ãã 徿¥ã¯ç»é¢ã使ããããã«ããViewã¨Activityããç»é¢ãã¨ã«ä½æãã¦ãã¾ããã ä¼¼ããããªç»é¢ãè¤æ°å¿ è¦ãªå ´åã§ãã£ã¦ãããViewã¨ãã¸ãã¯
Bundle ã¨ã¯ Android ã¢ããªéçºã®ãã¾ãã¾ãªã¨ããã«åºã¦ãã ãªãã¸ã§ã¯ãã®å ¥ãç© ã§ãããæ¬å½ã«é »åºããã®ã§ Bundle ã®æ±ãã«æ £ãã¦ããã¨ããããã¨æãã以ä¸ä¾ãæããã ä¾1: Activity ã®ç¶æ ä¿å ç»é¢å転ãé·æéæ¾ç½®ãã¦ã·ã¹ãã ã«æ®ºãããå ´åãªã©ã¯ onSaveInstanceState() ã§ç¶æ ä¿åã㦠onRestoreInstanceState() ã§å¾©å¸°ããã主㫠Activity ã®ãã£ã¼ã«ããã«ã¹ã¿ã ãã¥ã¼ãªã©ã¯ç¶æ ã復å ããå¿ è¦ãããã public class MyActivity extends Activity { @Override protected void onSaveInstanceState(Bundle outState) { outState.putString("hoge", "hoge"); outState.p
2018/2/28ãã¹ã¿ãã£ãã©ã¹æ ªå¼ä¼ç¤¾ãé社ãã¾ããã 2019/11/5ããªãã¸ããªãæ¶ãã¦ããã®ã§ãè¿ã æ¸ãç´ãã¾ããä»ã¨ãªã£ã¦ã¯Flowã使ãã°ããæ°ããã¾ãã⦠ããã«ã¡ã¯ããããã®ãã¼ã¯ããããªãæãmayahiroã§ãã ãããã®ãã¼ã¯ããããªãæãã¦ãã¾ãããä»ããã¸ã·ã§ã³ã¯Androidã¢ããªã¨ã³ã¸ãã¢ã§ãã ã¢ããã³ãã«ã¬ã³ãã¼ãã²ã¨æ®µè½ããã仿¥ãã®é ãçæ§å¹´æ«é²è¡ã§ãããã¦ããã£ãããã¾ãã§ããããï¼ ã¿ã°ã¯ã©ã¦ãã£ã½ãã¬ã¤ã¢ã¦ã ãã¦ãAndroidéçºã«ããã¦ãã¿ã°ã¯ã©ã¦ãã£ã½ãã¬ã¤ã¢ã¦ããè¡ãããå ´åãã©ãããã°è¯ãã®ã§ãããï¼ ~~ãã®åº¦ãStudyplusã®Androidã¢ããªã«ããã¦ã~~ããã£ã½ãã¬ã¤ã¢ã¦ããå®ç¾ããå¿ è¦ããããGoogleå çã«èããã¨ãã以ä¸ã®2ã¤ã®ã©ã¤ãã©ãªãæåãªããã§ããã https://github.com/ApmeM/
ããã«ã¡ã¯ãããã³ãã¨ã³ãã¨ã³ã¸ãã¢ã®é è¤ã§ãã çãããConstraintLayoutã使ç¨ãã¦ãã¾ããï¼ å¼ç¤¾ã§ã¯æè¿ãã»ã¨ãã©ã®ã¬ã¤ã¢ã¦ããConstraintLayoutã使ç¨ãã¦å®è£ ãã¦ãã¾ãã ä»åã¯ConstraintLayoutã使ç¨ãã¦ã¬ã¤ã¢ã¦ããçµãã éã«ä¾¿å©ã ãªã¨æã£ããã¤ã³ããé£ããã¦ã¯ã¾ã£ããã¨ã«ã¤ãã¦ç´¹ä»ãããã¨æãã¾ãã ä»åã¯ConstraintLayoutã使ç¨ããã¬ã¤ã¢ã¦ãã®çµã¿æ¹ã«ã¤ãã¦æ³¨ç®ããã®ã§ãåºæ¬çãªä½¿ãæ¹ã«ã¤ãã¦ã¯èª¬æãã¾ããã ConstraintLayoutã®åºæ¬çãªä½¿ãæ¹ã¯ä¸è¨ã®è¨äºãåãããããã¦ããããã§ãã Google Developer Yukiã®ææ: ConstraintLayout å®ç¨ä¾ ä»åã¯ConstraintLayout1.1.0-beta5ã使ç¨ãã¦ãã¾ãã ãµã³ãã«ã³ã¼ãã¯GitHubã«ããã¦ããã¾ãã g
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp"> <ImageView android:id="@+id/image_icon" android:layout_width="96dp" android:layout_height="96dp" android:layout_marginRight="16dp"/> <TextView android:id="@+id/text_primary" android:layout_width="match_parent" android:layout_hei
åæ ConstraintLayoutã¯ååã®éã, å¶ç´ã«ãã£ã¦ã¬ã¤ã¢ã¦ããçµããã®ã§ã. ä»ã¾ã§ã®LinearLayoutãRelativeLayoutã®ããã«Viewã®é ç½®ã«ããã¬ã¤ã¢ã¦ãããèãæ¹ãå¤ãã¦, ã¬ã¤ã¢ã¦ããå¶ç´ã§å®ç¾©ãããã¨ã«ãã£ã¦ã¬ã¹ãã³ã·ãUIã®ãããªæè»ãªUIãè¤éãªã¬ã¤ã¢ã¦ãããããã©ãããªViewãã¨ã©ã«ãã§å®ç¾ã§ããããã«ãªã, ããã©ã¼ãã³ã¹ã®åä¸ãæå¾ ã§ãã¾ã. ConstraintLayoutã«ã¤ãã¦ã¯ä¸è¨ã®Developerãµã¤ãã«ã¾ã¨ãããã¦ãã¾ã. å°å ¥æ¹æ³ã¾ã§å«ããåç»ãå ¬éããã¦ãã¾ã. Build a Responsive UI with ConstraintLayout https://developer.android.com/training/constraint-layout/index.html Layout Editorã®ä½¿ã
package sample.hara.myscrollview; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ScrollView; public class MyScrollView extends ScrollView { public interface ScrollToBottomListener { void onScrollToBottom(MyScrollView scrollView); } private ScrollToBottomListener scrollToBottomListener; private int scrollBottomMargin = 0; public MyS
ç§ã®åå¼·ã¡ã¢ã§ãã ãããããªã¨ãããåèã«ããã¦ããã ãã¦ãã¾ããããã°è¨äºãæ¬ãæ¸ãã¦ä¸ãã£ãæ¹ã ãæ¬å½ã«ãããã¨ããããã¾ãã å¼ç¨å :https://developer.android.com/guide/components/fragments Fragmentã®ã©ã¤ããµã¤ã¯ã«ã¯ç¶æ¿å ã®Activityã®å½±é¿ã常ã«åããã Fragmentã¨ãã¦å®è£ ãã大ããªå©ç¹ã®1ã¤ããããããå¥ã®ã©ã¤ããµã¤ã¯ã«ãæã¤ãã¨ãã§ãããã¨ã Fragmentã®ã©ã¤ããµã¤ã¯ã«ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ããã ç°¡åãªèª¬æã¯ã½ã¼ã¹ãã¡ã¤ã«ã«æ¸ãããã§ããã ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ Fragmentãçæããã ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ã¼ â onAttach() â onCreate() â onCreateView() â onActivityCreated() â onStart() â onResume()
Android6.0(Android M)ãçºè¡¨ããã¾ããã®ã§ã Andorid6.0ããæ°è¦ã«è¿½å ãããã¢ããªã®æ¨©é(Permissions)ã®å¯¾å¿æ¹æ³ãã¾ã¨ãã¾ãã Android6.0æªå¯¾å¿ã®ã¢ããªã®æå targetSDKã23ã«ãã¦ããªãå ´åãæ¢åã¢ããªã®èµ·åæã«å¤åã¯ããã¾ããã ã¾ããAndroid5.1以ä¸ã§ã¯å¾æ¥éãã¢ããªã®ã¤ã³ã¹ãã¼ã«æã«permissionãæ±ãã¾ãã ããããtargetSDKã23ã«ãã¦ããªãå ´åã§ãã Android6.0ããè¨å®ç»é¢ã«æ°è¦è¿½å ããããã¢ããªã®æ¨©éãç»é¢ãã permissionãOFFã«ã§ããããã«ãªã£ã¦ãã¾ãã ï¼targetSDKã22以ä¸ã®å ´åãããã©ã«ãã§ã¯ONã«ãªã£ã¦ãã¾ããï¼ permissionãOFFã«ãªã£ã¦ããç¶æ ã§è¨±å¯ãå¿ è¦ãªã¡ã½ããã«ã¢ã¯ã»ã¹ããã¨ã 空ã®ãã¼ã¿ãè¿ãããããã¢ããªãä¾å¤ãè¿ãã¾ãã And
仿¥ã®è©± ãªã¹ã表示ã«ä½¿ã£ã¦ããGridViewãRecyclerViewã«ç½®ãæãã¾ãã. ãã£ããã¨ã¯ï¼å¤§ããåãã¦ä»¥ä¸ã®3ã¤ã§ãï¼ layout.xmlã§GridViewãRecyclerViewã«ç½®ãæãã AdapterãRecyclerViewç¨ã«æ¸ãæãã Activityã§GridViewãRecyclerViewã«ç½®ãæãã 仿¥ã¯ï¼ãã®ãã¨ã«ã¤ãã¦æ¸ãã¦ããã¾ãï¼ ã©ã¤ãã©ãªã®ã¤ã³ãã¼ã appé ä¸ã®build.gradleã« compile 'com.android.support:recyclerview-v7:22.2.1' ãªã©ã¨æ¸ãã°OKã§ãï¼
RecyclerViewã¨ã¯ 主ã«ãåçãªä»¶æ°ã®Viewãç¹°ãè¿ã表示ããããã®Widgetã ãµãã¼ãã©ã¤ãã©ãªã®com.android.support:recyclerview-v7ã§å©ç¨å¯è½ã ListViewã¨ã®éã RecyclerViewã¯ListViewã¨ç°ãªã HeaderViewã¨FooterViewãç¡ã åºåãç·çã®ã»ã«è£ 飾ã¯èªåã§å®è£ ããªãã¨ãããªã ListItemã®ã¯ãªãã¯ã¤ãã³ããç¡ãããèªåã§å®è£ ããªãã¨ãããªã ViewHolderãæ¨æºã§çµã¿è¾¼ã¾ãã¦ãã addãremoveã®ã¢ãã¡ã¼ã·ã§ã³ãç°¡åã«ä»ä¸ã§ãã æ¨ªã¹ã¯ãã¼ã«ãã°ãªãã表示çãç°¡åã«è¨å®ã§ãã çãæ§ã ãªéããããã å®è£ æ¹æ³ é常ã®ç¸¦ã¹ã¯ãã¼ã«ãªã¹ãã®ç°¡åãªä½ãæ¹ãè¨è¼ã ã»ã«ã«ã¯ä¸è¡ã®ããã¹ãã表示ããã ãã Layout ã¾ãç»é¢ã«RecyclerViewãè¨ç½®
ããã«ã¡ã¯ãå ±åéçºé¨ã®åå·ã§ãã Fenrir Advent Calendar 2014 20æ¥ç®ã§ãã ä»å¹´ããã£ã¨ãã°ãã¨ããåºæ¥äºã¨ããã° Android 5.0 Lollipop ã®ãªãªã¼ã¹ã§ãããï¼ Lollipop ã§ã¯ Material Design ãæ¡ç¨ãããè²ã¨éãªãã§ã¢ããªã®ä¸ç観ã表ãããã«ãªãã¾ãããããã¾ã§ã® Android ã¨ã¯ç°ãªããã¢ãã¡ã¼ã·ã§ã³ãã¤ã³ã¿ã©ã¯ã·ã§ã³ãéè¦ãããã¶ã¤ã³ã¸ã¨é²åãã¦ãã¾ãã è¦ãç®ã®å¤åããããã¨ãªãããLollipop ã§ã¯æ©è½é¢ãæ°å¤ãå¼·åããã¦ãã¾ãã ãã®ä¸ã®ä¸ã¤ãRecyclerView ã¯éå¸¸ã«æè»ã§è¡¨ç¾åã®é«ã UI ã³ã³ãã¼ãã³ãã§ãã RecyclerView ã使ã£ãæ°ãã表ç¾ã«ææ¦ãã¦ã¿ã¾ããã RecyclerView ã¨ã¯ Android ã§ã¯ãã¼ã¿ã³ã¬ã¯ã·ã§ã³è¡¨ç¾ã®ããã« ListView 㨠Ad
ç»é¢ãã¹ã¯ãã¼ã«ããéã«ãããã¼ãé ããããªæåãCoordinatorLayoutã§å®è£ ã§ãã¾ãã æè¿ãã¨ããã¢ããªã®ç»é¢ã«ãã®æåãå®è£ ããéã«ãããã試è¡é¯èª¤ããã®ã§ãï½¢ãããã£ãããããã¼ããã¾ãé ãã¦ããããã¤ã§ã¼ã¤ï½£ã£ã¦ãªã£ãä¾ããï½¢ããã§ãããã£ããã¬ã¤ã¢ã¦ããå´©ããªãã£ããã¤ã§ã¼ã¤ï½£ã£ã¦ãªã£ããã³ã·ã§ã³ã®ã¾ã¾ã§æ¸ãã¦ã¾ãã ãããã¼ãé ãããã« ã¹ã¯ãã¼ã«ããããããã¼ãé ããããã«ããUIãä½ãããã®åºç¤ç¥èã¨ãã§ãã ã¨ãããããã®å å®¹ãææ¡åºæ¥ã¦ãã¨ããããããã¦ããã¡ã«ãªãã¨ãªãã§ããã ã¹ã¯ãã¼ã«ããã¬ã¤ã¢ã¦ã CoordinatorLayoutã§ã¹ã¯ãã¼ã«æã«ãããã¼ãé ãæåãè¡ãããéã¯ãã¹ã¯ãã¼ã«ããé¨åãNestedScrollViewãRecyclerViewã§ããå¿ è¦ãããã¾ãã ãããScrollViewã¨ãListViewã®ç¶æ ã§ï½¢ãããã¼ãã»
androidã§åä»ãªã¬ã¤ã¢ã¦ãåããonMeasureã¨onLayoutãçè§£ãããªã¼ãã¼ã©ã¤ãããã¨ããçæ³ã®ã¬ã¤ã¢ã¦ãã«è¿ã¥ãã¾ãã çµæ§æåãé£ããã®ã§ãé·ããªã£ã¦ãã¾ãã¾ãããããã®æ¦è¦ã§ãã ï¼â»ãããã£ã±ãªæµãã§ç´°ããé¨åã¯éãã¾ãããã¤ã¡ã¼ã¸ã¯ã¤ãããã¨æãã¾ãï¼ ãããããã®2ã¤ã¯ï¼ Androidã§ã¯ViewçææããViewã®å å®¹ãæ´æ°ãããï¼TextView#setText()ç)ã§ã Viewèªä½ã®åã¬ã¤ã¢ã¦ããå¿ è¦ãªã¨ãã«ï¼ã¤ãå¼ã³åºããã¾ãã 以ä¸ã®ãããªã¤ã¡ã¼ã¸ã§ãã 親Viewã®onMeasureãå¼ã³åºããã 親ViewãåViewã®measureãå¼ã³ãå¹ é«ããè¨æ¸¬ããã (2)ã®æ å ±ããã¨ã«ã親Viewãèªåèªèº«ã®å¹ é«ããè¨å®ãã 親Viewã®onLayoutãå¼ã³åºããã 親ViewãåViewã®layoutãå¼ã³ãåViewã®å ´æã確å®ããã ã
Picassoã¯ãããä¸ã®ç»åããã£ã¦ããã®ãç°¡åã«ã§ãã¦ãã¾ããé常ã§ããã°éåæã§ã® httpæ¥ç¶ãèããªããã°ãããªãã¨ãããã³ã¼ããã¨ã¦ãç°¡åã«ãªãã¾ãã PicassoãGridViewã«å°å ¥ Picasso ã«ãµã³ãã«ã³ã¼ããããã¾ãããã è¨å¤§ãªéãªã®ã§ç¾å³ããã¨ããã ãã¤ã¾ãã§ã¿ããã¨ãããã¨ã§ããPicasso 大ããç»åãæ±ã£ã¦ã¿ãã§åºæ¬çãªä½¿ãæ¹ããããã¾ãã GirdViewã®åºæ¬çãªã¨ããã¯ãGridViewã®ä½ãæ¹ä½¿ãæ¹ ãåç §ãã¦ãã ããã ãã£ããããå·®åã¨ãã¦ã¯ViewHolderãããã¦ãPicassoã®ç»åãã¦ã³ãã¼ããè¨è¿°ããã¨ããã§ãã public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null)
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}