본문 바로가기

전체 글

(228)
listView 항목에 Audio Albumart(thumbnail)을 지연 없이 나타내기.AsyncTask ListView에 아래 그림과 같이 AlbumArt(thumbnail)을 표시하는데 빠른 스크롤시에도 지연 현상이 없도록 AsyncTask를 이용한다. 최초 반응성이 많이 늦어지만 AsyncTask를 사용하므로써 1차적으로 많이 개선되었다.(참고 자료 :http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/) Source class ViewHolder {public long albumId;public TextView tvTitle;public TextView tvArtist;public TextView tvDuration;public ImageView ivAlbumArt;}ViewHolder에 albumArt를 구분할수 있는 albumI..
Audio AlbumArt 가져오기. Audio AlbumArt의 Uri를 얻는다. 방법은 아래와 같다.audio data를 질의 하여 ALBUM_ID 컬럼의 데이터를 얻어와albumart Uri에 albumId값을 더해 albumart thumbnail 데이터를 얻어온다. Source long albumId = cursor.getLong(cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.ALBUM_ID));Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");Uri sAlbumArtUri = ContentUris.withAppendedId(sArtworkUri, albumId); Uri를 얻으면 ImageV..
android.content.CursorLoader 와 LoaderCallbacks 인터페이스 CursorLoader A loader that queries the ContentResolver and returns a Cursor. This class implements the Loader protocol in a standard way for querying cursors, building on AsyncTaskLoader to perform the cursor query on a background thread so that it does not block the application's UI. A CursorLoader must be built with the full information for the query to perform, either through the CursorLoader..
[widget]android.widget.CursorAdapter, ViewHolder pattern CursorAdapter : 데이터베이스의 data를 리스트에 바인딩 할때 사용한다.* CursorAdapter는 newView 의 View는 재 사용 한다.==>ArrayAdapter에서 getView에서 하는 View 재사용 하는 로직이 없다.ViewHolder pattern을 사용하여 bindView에서 findViewById 함수 사용을 줄인다. ListView listViewTmp = (ListView)findViewById(R.id.listView1);Cursor cursor = getMusicDataList();cursorAdapter = new CursorAdapter(this, cursor) {@Overridepublic View newView(Context context, Cursor ..
android.database.Cursor 와 ContentProvider[Uri] Cursor 객체 레코드의 집합. android.database.Cursor : This interface provides random read-write access to the result set returned by a database query. Cursor implementations are not required to be synchronized so code using a Cursor from multiple threads should perform its own synchronization when using the Cursor. ContentProvider 안드로이드 어플리케이션에서 어플리케이션간에 데이터를 공유할수 있는 기본적인 방법 android.content.ContentProvid..
[widget]android.widget.ListView [3] convertView 사용과 Holder Pattern getView를 사용하여 임의의 View를 구현할때 convertView 와 Holder pattern을 사용하면 성능을 향상 시킬 수 있다. 1. 안드로이드는 listview의 Item을 재활용하기 때문에 convertView가 null 인지 확인하는 구문을 넣으면반복적으로 inflate하는 로직을 줄일수 있어 성능을 향상 시킬 수 있다.class CustomArrayAdapter extends ArrayAdapter{public CustomArrayAdapter(Context context) {super(context,0);}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHold..
[widget]android.widget.ListView [2] CustomArrayAdapter --getView ArrayAdapter를 상속 받은 CustomArrayAdapter를 구현getView 메소드를 Override하여 View를 임의로 구현함 activity_muisc_list.xml custom_list_item.xml Source @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_muisc_list);ListView listViewTmp = (ListView)findViewById(R.id.listView1);CustomArrayAdapter customArrayAdapter = new CustomArrayAdapter(..
[widget]android.widget.ListView [1] ListView 세로로 정렬된 라인들 집합. layout Source@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_muisc_list);ListView listViewTmp = (ListView)findViewById(R.id.listView1);ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1);arrayAdapter.add("BB");arrayAdapter.add("CC");arrayAdapter.add("DD");l..