반응형
안녕하세요.
2. Activiy를 생성하여 layout을 연결합니다.
3. 위에서 빨간줄 뜨는 adpater는 아래와 같은데요. 현재는 musicdata가 없으므로 수동으로 하여서
4. 저의 xml은 아래와 같습니다. 커스텀한 레이아웃은 편하신대로 만드시면 될거같습니다.
요즘 시간이 조금 나는 관계로 조금은 글을 적극적으로 써볼까 합니다...
시간이 나는김에 안드로이드폰 기본으로 있는 mp3플레이어를 모방하여 만들어 내볼까 합니다.
Mp3 플레이어를 만들며 구현할것들은 대충 아래와 같습니다^^;
1. 자신이 원하는 형태로 만들어 보여줄수 있는 커스텀 Listview
2. Cursor를 이용하여 mp3파일 metadata를 가져와야 합니다.
3. mp3파일을 실행시킬 service 구동
4. notification을 이용하여 플레이어 종료 또는 곡 변경 그럼 지금부터 만들어 보도록 합시다.
1. 먼저 Layout을 그리고 아래와 같이 만들어 줍니다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="60dp"> <TextView android:id="@+id/txt_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="뮤직 페스티발" android:textSize="20sp" android:textStyle="bold"/> <FrameLayout android:layout_width="match_parent" android:layout_height="0.7dp" android:layout_alignParentBottom="true" android:background="#202735"/> </RelativeLayout> <ListView android:id="@+id/menuList" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
public class MusicServiceActivity extends Activity implements AdapterView.OnItemClickListener{ private String TAG = "MusicServiceActivity"; private Context mContext; private ListView musicListView; private MusicAdapter adapter; ArrayList<MusicData> list = new ArrayList<>(); @Override protected void onDestroy() { super.onDestroy(); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_music); mContext = MusicServiceActivity.this; init(); } private void init(){ adapter = new MusicAdapter(mContext, android.R.layout.simple_list_item_1, list); adapter.setMusicBtnListener(new MusicAdapter.btnClickListener() { @Override public void MusicBtnClick(int position) { ListenMusic(position); } }); musicListView = findViewById(R.id.menuList); musicListView.setAdapter(adapter); musicListView.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { } }
커스텀 listview를 띄어보시길 바랍니다.
public class MusicAdapter extends ArrayAdapter<MusicData>{ private ArrayList<MusicData> item; private Context mContext; public MusicAdapter( Context context, int resource, ArrayList<MusicData> item) { super(context, resource, item); this.mContext = context; this.item = item; } public void setAdapterList(ArrayList<MusicData> list){ item = list; notifyDataSetChanged(); } @NonNull @Override public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) { ViewHolder holder; View v = convertView; if(v == null){ LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.row_music_list, null); holder = new ViewHolder(); holder.img = v.findViewById(R.id.imgMusic); holder.title = v.findViewById(R.id.txt_music_title); holder.name = v.findViewById(R.id.txt_singer_name); holder.btn =v.findViewById(R.id.isMusic_click); v.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final MusicData data = item.get(position); if(data != null){ holder.img.setBackgroundResource(R.drawable.musical_note); holder.title.setText("곡명"); holder.name.setText("가수명"); holder.btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); } return v; } class ViewHolder { ImageView img; TextView title; TextView name; Button btn; } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/imgMusic" android:layout_width="70dp" android:layout_height="70dp" android:layout_marginTop="5dp" android:layout_marginBottom="4dp" android:layout_centerVertical="true"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_toRightOf="@id/imgMusic"> <TextView android:id="@+id/txt_music_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="17sp" android:text="test" android:textStyle="bold" /> <TextView android:id="@+id/txt_singer_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="7dp" android:textSize="13sp" android:text="test" android:textStyle="bold" /> </LinearLayout> <Button android:id="@+id/isMusic_click" android:layout_width="60dp" android:layout_height="35dp" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_marginRight="15dp"/> </RelativeLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="0.7dp" android:background="#202735"/> </LinearLayout>
아직은 위의 소스코드를 붙여 넣는다면 mp3파일 리스트를 읽어오지 못해서 제가 샘플로 올려놓은
이미지 처럼 나오지 않을겁니다.
다음 강의에서는 위의 이미지처럼 나오도록 휴대폰 데이터를 읽어보
도록 하겠습니다.
반응형
'프로그램 > Android' 카테고리의 다른 글
안드로이드 mp3플레어어 만들기(3.mp3 service 생성) (0) | 2017.08.28 |
---|---|
안드로이드 mp3플레어어 만들기(2. Cursor를 이용하여 mp3 데이터 가져오기) (0) | 2017.08.07 |
안드로이드 BarCode Reader (0) | 2016.09.27 |
URL 로 이미지 받아서 모서리 둥근 ImageView 생성 (0) | 2016.09.26 |
둥근 프로그래스바 Circle ProgressBar (0) | 2016.09.26 |