일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 다크나이트
- 방울토마토 씨부터 키우기
- 괌맛집
- 신혼여행
- 방토 농사
- 방울토마토 유기농
- 방울토마토키우기
- 집에서 방울토마토 키우기
- 스투키
- 휴대용무선충전기
- 안방농사
- 괌 신혼여행
- 메이플스토리
- 안드로이드
- Android
- 2in1무선충전기
- 겨울나기
- Ender 3 V3 KE
- 핫엔드
- 에어팟충전기
- 다이소 방울토마토
- 맥세이프충전기
- 집 방울토마토
- 어플만들기
- 다이소 방울토마토키트
- 메이플스토리M
- 쿠폰나눔
- 메이플
- 보일러절약
- 괌
Archives
- Today
- Total
괴도군의 블로그
[android] 나만의 앱을 만들어보자[2] 화면.. 본문
반응형
먼저 앱 개발하기에 앞서 기획을 살펴봤고..
(정확히는 요구사항분석이 끝나야함)
기능과 화면의 설계가 끝났다면 개발을 시작하도록 합니다.
요즘에 많이보이는 탭 + ViewPager형식으로 예제를 작성해봤습니다.
설명과 첨부파일까지 올립니다.
먼저 실행화면.. (갤럭시 S6 Edge+)
MainActivity.java
package com.test.testapplication; //java파일이 위치한 현재 패키지명(폴더명) //import를 하는이유는 풀경로를 쓰지않기 위함이고.. 정확한 대상을 지정하기 위함이다..(같은이름의 클래스가 생각보다 많다.) //import를 하지않고 직접 사용시에는 아래의 선언문의 주석을 참고 import android.support.v4.view.ViewPager; //support v4에 들어있는 ViewPager를 사용한다. import android.support.v7.app.AppCompatActivity; // 롤리팝부터는 support v7의 AppCompatActivity를 사용한다. import android.os.Bundle; //intent 데이터 전달객체 import com.astuetz.PagerSlidingTabStrip; //탭 import com.test.testapplication.model.Page; //만든 클래스 import java.util.ArrayList; //이름이 메인액티비티일뿐 실제 지정하는곳은 AndroidManifest.xml에서 설정한다. public class MainActivity extends AppCompatActivity { //화면들을 저장할 리스트 private ArrayList<Page> viewList = new ArrayList<>(); //뷰페이저 private ViewPager pager; //화면들을 뿌려주는 어댑터 private PagerAdapter pagerAdapter; //탭 private PagerSlidingTabStrip tabs; //import를 안했을 경우 ViewPager 사용법 private android.support.v4.view.ViewPager test; /** * 접근 제한자란? * 멤버변수들은 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 결코 좋은 것은 아닙니다. * 그런 이유로 프로그래머가 객체의 멤버들에게 접근 제한을 걸 수가 있는데 자바에서는 이를 접근 제한자라 합니다. * * public : 모든 접근을 허용 * protected : 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용 * default : 같은 패키지(폴더)에 있는 객체들만 허용 * private : 현재 객체 내에서만 허용 * */ /** * 앱이 켜지고 가장 먼저 실행되는 함수 * * @param savedInstanceState onSaveInstanceState()로 상태를 저장하고 다시 파라미터로 전달된다. */ @Override protected void onCreate(Bundle savedInstanceState) { //상속받은 상위클래스의 onCreate()를 호출한다. super.onCreate(savedInstanceState); //현재 액티비티의 화면을 res/layout/activity_main.xml로 띄운다. setContentView(R.layout.activity_main); //리스트에 보여줄화면과 탭에 표시될 제목을 적는다. //풀어서 선언하면 다음과 같다. Page page = new Page(this, R.layout.tab1, "첫번째"); viewList.add(page); viewList.add(new Page(this, R.layout.tab2, "두번째")); viewList.add(new Page(this, R.layout.tab3, "세번째")); //activity_main에 선언해둔 pager를 찾아서 변수에 연결시켜준다. pager = (ViewPager) findViewById(R.id.pager); pagerAdapter = new PagerAdapter(this, viewList); //viewpager를 사용할때는 adapter를 연결시켜줘야한다. pager.setAdapter(pagerAdapter); //탭도 연결시켜준다. tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); tabs.setViewPager(pager); } } | cs |
PagerAdapter.java
package com.test.testapplication; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.test.testapplication.model.Page; import java.util.ArrayList; /** * Created by JY-park on 16. 4. 15.. */ public class PagerAdapter extends android.support.v4.view.PagerAdapter { LayoutInflater inflater; ArrayList<Page> viewlist; public PagerAdapter(Context context, ArrayList<Page> viewArrayList) { inflater = LayoutInflater.from(context); viewlist = viewArrayList; } @Override public void startUpdate(ViewGroup container) { super.startUpdate(container); } @Override public CharSequence getPageTitle(int position) { return viewlist.get(position).getTitle(); } @Override public float getPageWidth(int position) { return super.getPageWidth(position); } @Override public int getCount() { return viewlist.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = viewlist.get(position).getView(); //ViewPager에 만들어 낸 View 추가 container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } @Override public boolean isViewFromObject(View v, Object obj) { return v==obj; } } | cs |
Page.java
package com.test.testapplication.model; import android.content.Context; import android.view.LayoutInflater; import android.view.View; /** * Created by JY-park on 16. 6. 1.. */ public class Page { private View view; private String title; public Page(Context context, int viewId, String title) { this.view = LayoutInflater.from(context).inflate(viewId,null); this.title = title; } public View getView() { return view; } public void setView(View view) { this.view = view; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } | cs |
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.astuetz.PagerSlidingTabStrip android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="48dip" android:background="@drawable/background_tab" custom:pstsIndicatorHeight="3dp" custom:pstsShouldExpand="true" custom:pstsTextAllCaps="false" custom:pstsUnderlineHeight="0dp" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_below="@+id/tabs" android:layout_width="fill_parent" android:layout_height="match_parent" /> </RelativeLayout> | cs |
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.testapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> | cs |
반응형
'#프로그래밍 > 앱 제작강의' 카테고리의 다른 글
[android]나만의 앱을 만들어보자[1] 기획.. (0) | 2016.05.31 |
---|
Comments