일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 비박스 #웹취약점분석 #버그바운티 #bee-box #웹 #모의해킹
- snedmail #linux #정보보안기사 #정보보안산업기사 #mail protocol
- 디지털포렌식챌린지 #dfchallenge #디지털포렌식 #Forensic
- 자바
- 안드로이드 #서비스 #안드로이스 서비스 #Android #java
- HTML Injection #bWAPP
- 객체
- 파이썬
- 프로그래밍
- evm
- 포렌식
- #정보보안 #어셈블리 #저급언어 #기계어 #it #정보보안
- forensic
- 정보보안기사 #정보보안산업기사 #2020년 정보보안기사 #시험일정
- 메소드
- CIDR #서브넷 #Network #ip 주소고갈
- EnCase #mount #Forensic #image mount
- 안드로이드 #스레드 #핸들러 #예제
- 정보보안기사 #정보보안산업기사 #클라우드컴퓨팅 #보안 #컴퓨팅보안
- 디지털포렌식 연구회 워크샵 #디지털포렌식 #디지털포렌식챌린지 #Forensic #ctf #정보보호학회
- PYTHON
- Forensic #CTF #디지털포렌식 #disk forensic
- 디지털 포렌식
- 탈중화
- It
- 코딩
- Injection #Reflected #웹취약점
- Forensic CTF #disk Forensic #windows file analyzer #WFA #Codegate 2012 F100
- 파일 접근 권한 #linux #chown #chmond #umask #명령어
- java
- Today
- Total
Jsecurity
안드로이드 - 명화 선호도 투표 앱 만들기 본문
명화 이미지 첨부 파일 (/res/drawable에 복사하여 추가)
프로그램 설명
1. 화면설계를 테이블 레이아웃으로 설계한다.
2. 명화를 선택을 했을시 카운트수를 누적하는 계산을 처리한다.
3. 투표결과를 화면을 선택을 했을시 Intent 를 사용하여 데이터를 전송한다.
4. 투표결과를 보고 잘 처리했다는 메세지를 다시 리턴한다.
5. 투표결과 화면에서 최고의 투표수를 받은 화면을 보여준다.
6. 투표결과를 위 화면과 같이 해당 명화당 내용이 나올수 있도록 처리한다.
메인 액티비티 (activity_main.xml)
바깥 리니어레이아웃 안에 리니어레이아웃 4개로 구성 한 뒤, layout_weight를 3:3:3:1로 한다.
3개의 레이아웃에는 각각 3개의 이미지 뷰를 넣고 layout_weigh는 1:1:1로 한다.
이미지뷰에 적당한 간격으로 layout_margin(ex : 5dp)을 준다.
이미지뷰의 id는 iv1~iv9
버튼의 id는 btnResult로 한다.
Total
LinearLayout 4개, imageView 9개
boutton 1개
서브 액티비티 (result.xml)
최고 득표를 위한 LinearLayout 1개와 점수표와 버튼을 만들기 위해 TableRow 9개를 생성한다.
텍스트뷰의 id는 tv1~tv9
레이팅바의 id는 rbar1~rbar9
버튼의 id는 btnReturn으로 한다.
Total
LinearLayout 1개
TableRow 9개
TextView 10개
RatingBar 9개
imageView 1개
button 1개
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setTitle("명화 선호토 투표");
//초기값 설정 ------------------------------------------------------
final int[] voteCount = {0,0,0,0,0,0,0,0,0};
//ImageView 위젯을 담을 객체선언
ImageView[] image = new ImageView[9];
Integer[] imageID = {
R.id.iv1, R.id.iv2, R.id.iv3, R.id.iv4, R.id.iv5, R.id.iv6, R.id.iv7, R.id.iv8, R.id.iv9
};
final String[] imgName = {
"독서하는 소녀",
"꽃장식 모자 소녀",
"부채를 든 소녀",
"이레느깡 단 베르양",
"잠자는 소녀",
"테라스의 두 자매",
"피아노 레슨",
"피아노 앞의 소녀들",
"해변에서",
};
//초기값설정 ------------------------------------------------------
//각 이미지뷰에 ClickListener 정의
for(int i=0; i < imageID.length; i++) {
final int idx = i; //내부 클래스 사용위해 final 선언
image[i] = (ImageView)findViewById(imageID[i]);
image[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
voteCount[idx]++; //투표수 counting
//토스트 메시지 출력
Toast.makeText(getApplicationContext(), imgName[idx] +"총 " + voteCount[idx] + " 표", Toast.LENGTH_SHORT).show();
}
});
}
//버튼 ClickListener 정의
Button btnResult = (Button)findViewById(R.id.btnResult);
btnResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//intent 선언
Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
//Data setting
intent.putExtra("voteCount", voteCount);
intent.putExtra("imgName", imgName);
//ResultAcitivy 출력
startActivity(intent);
}
});
}
}
result.java
public class result extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
setTitle("투표 결과");
//mainActivity에서 전달한 데이터 수령
Intent intent = getIntent();
int[] voteResult = intent.getIntArrayExtra("voteCount");
String[] imageName = intent.getStringArrayExtra("imgName");
//초기값 설정 ------------------------------------------------------
TextView[] tv = new TextView[imageName.length];
RatingBar[] rbar = new RatingBar[imageName.length];
Integer[] tvID = {R.id.tv1, R.id.tv2, R.id.tv3, R.id.tv4, R.id.tv5, R.id.tv6, R.id.tv7, R.id.tv8, R.id.tv9};
Integer[] rbarID = {R.id.rbar1, R.id.rbar2, R.id.rbar3, R.id.rbar4, R.id.rbar5, R.id.rbar6, R.id.rbar7,R.id.rbar8, R.id.rbar9};
for( int i = 0; i < voteResult.length; i++ ) {
tv[i] = (TextView)findViewById(tvID[i]);
rbar[i] = (RatingBar)findViewById(rbarID[i]);
}
for( int i = 0; i < voteResult.length; i++ ) {
tv[i].setText(imageName[i]);
rbar[i].setRating((float)voteResult[i]);
}
//초기값설정 ------------------------------------------------------
TextView rtv1 = findViewById(R.id.rtv1);
ImageView riv1 = findViewById(R.id.riv1);
int max = -1;
//이미지명, 최대 득표수 설정
for( int i = 0; i < voteResult.length; i++ ) {
if (max < voteResult[i]){
max = voteResult[i];
}
//최대 득표된 이미지 출력
if (voteResult[i] == max) {
if(i == 0) { riv1.setImageResource(R.drawable.pic1); }
else if(i == 1) { riv1.setImageResource(R.drawable.pic2); }
else if(i == 2) { riv1.setImageResource(R.drawable.pic3); }
else if(i == 3) { riv1.setImageResource(R.drawable.pic4); }
else if(i == 4) { riv1.setImageResource(R.drawable.pic5); }
else if(i == 5) { riv1.setImageResource(R.drawable.pic6); }
else if(i == 6) { riv1.setImageResource(R.drawable.pic7); }
else if(i == 7) { riv1.setImageResource(R.drawable.pic8); }
else if(i == 8) { riv1.setImageResource(R.drawable.pic9); }
rtv1.setText(imageName[i]); //이미지명 출력
}
}
// 버튼 ClickListener 정의
Button btnReturn = (Button)findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
'프로그래밍언어 > Java_Language' 카테고리의 다른 글
안드로이드 - 서비스 (0) | 2019.10.29 |
---|---|
안드로이드 앱 프로그래밍 프로젝트 생성 (0) | 2019.08.26 |
JSP 액션태그 (0) | 2019.04.13 |
컬렉션 (collection) 개념 (0) | 2019.04.02 |
Java 9일차 : 상속(inheritance) (0) | 2018.11.14 |