안녕하세요.

저번엔 클릭이벤트로 클릭시,롱클릭시,프로필클릭시 등 클릭이벤트를 넣는법을 포스팅 했습니다.

이번에는 클릭후 실직적인 데이터의 이동과 화면전환에 대해서 포스팅하겠습니다.



해당 포지션의 이미지 클릭시 이벤트 처리를 하였습니다.



다음과같이 사진과 이름과 나이에 대한 데이터를 이동시키고 profile 엑티비티에 적용시킨 모습입니다.

하나의 profile을 만들어두면 어뎁터에서 클릭리스너가 사용되어 profile의 정보가 계속 바뀌고 하나의 액티비티로

프로필을 재사용할 수 있겠죠 ?



Adapter의 ViewHolder의 personPhoto 에 클릭 리스너를 달아 줬습니다.

여기서 중요한건 position 입니다.

 해당 뷰의 위치를 확인해서 데이터를 불러와야 profile Activity로 해당 데이터를 전달 시켜 주는 겁니다. 

다음과 같이 온클릭 리스너에 인텐트를 넣어주고 putExtra를 통해 객체의 데이터를 이동시켜줍니다.

그리고 마지막에 context.startActiviy(intent)를 통해 새로운 엑티비트를 열어줍니다.




객체 내용입니다.






초보자들이 자주 실수하는 부분이 있습니다. manifests 에 새로만든 엑티비티를 입력해줘야

profile 엑티비티를 실행시킬 수 있습니다.





어뎁터코드입니다.


public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {
public static ArrayList<Person> person ;
Context context ;
public RVAdapter( ArrayList<Person> person){
this.person = person;
}
@NonNull
@Override
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup,int position) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recycler_view, viewGroup, false);
PersonViewHolder pvh = new PersonViewHolder(v, position);
return pvh;
}
@Override
public void onBindViewHolder(final PersonViewHolder personViewHolder, final int position) {
personViewHolder.personName.setText(person.get(position).name);
personViewHolder.personAge.setText(person.get(position).age);
personViewHolder.personPhoto.setImageResource(person.get(position).img);
personViewHolder.personPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view ) {
Log.d("test", "클릭됨");
context = view.getContext();
Intent intent = new Intent(context, UserProfile.class);
intent.putExtra("age",person.get(position).age);
intent.putExtra("name", person.get(position).name);
intent.putExtra("img", person.get(position).img);
Log.d("getPosition", String.valueOf(position));
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return person.size();
}


public static class PersonViewHolder extends RecyclerView.ViewHolder {
CardView cv;
TextView personName;
TextView personAge;
ImageView personPhoto;
PersonViewHolder(final View itemView ,final int position) {
super(itemView);
cv = (CardView)itemView.findViewById(R.id.cv);
personName = (TextView)itemView.findViewById(R.id.person_name);
personAge = (TextView)itemView.findViewById(R.id.person_age);
personPhoto=(ImageView)itemView.findViewById(R.id.person_photo);
personPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("test", "포토클릭됨");
}
});
itemView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
Log.d("test", "롱클릭됨");
return true;
}
});
}
}
}
class Person {
String name ;
String age ;
int img;
public Person(String name, String age, int img) {
this.name = name;
this.age = age;
this.img = img;
}


UserProfile 입니다.


public class UserProfile extends AppCompatActivity {
ArrayList<Person> person;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_profile);
TextView textViewName =(TextView)findViewById(R.id.person_name);
TextView textViewAge =(TextView)findViewById(R.id.person_age);
ImageView imageViewphoto =(ImageView)findViewById(R.id.person_photo) ;


Intent intent = getIntent();
textViewName.setText(intent.getStringExtra("name"));
textViewAge.setText(intent.getStringExtra("age"));
imageViewphoto.setImageResource(intent.getIntExtra("img",0));
}
}


user_Profile  xml 입니다.


<?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">

<ImageView
android:id="@+id/person_photo"
android:layout_width="318dp"
android:layout_height="289dp"
android:layout_alignParentTop="true"
android:layout_gravity="center"
android:gravity="center"
android:text="name"
android:layout_marginTop="100dp"
android:textSize="100dp" />
<TextView
android:id="@+id/person_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="50dp"
android:layout_gravity="left"
android:gravity="center"
android:text="name"
android:textSize="40dp" />
<TextView
android:id="@+id/person_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="50dp"
android:layout_gravity="left"
android:gravity="center"
android:text="age"
android:textSize="40dp" />
</LinearLayout>


온클릭과 롱클릭을 같이 사용하고 싶은 경우가 있습니다.

롱클릭 클리후 손을 때면 온클릭이 실행되는데 이것은 리턴값을 바꾸면 가볍게 해결됩니다.




온클릭과 롱클릭 코드입니다.



온클릭후 손을때면 다음과 같이 온클릭도 로그가 찍히네요


여기서 롱클릭의 리턴값을 false -> true로 바꾸면




다음과 같이 롱클릭만 클릭이 됩니다.


'프로그래밍 > 안드로이드,xml' 카테고리의 다른 글

안드로이드] 오토 스크롤 뷰페이저  (0) 2018.11.08
안드 클릭 이벤트 처리  (0) 2018.10.31
앱 공부 현황  (0) 2018.10.29
녹스에뮬 사용하기  (0) 2018.10.25
핸드폰 개발자 옵션 켜기.  (0) 2018.10.25


애완동물 채팅방 ( 오픈 채팅방 같은것 ) 


현재 적용시킨 것


recyclerView


Tablayout


cardView


Viewpager


폰트적용 -옥수수폰트


앞으로 할일 : 컨텐츠 추가 

프로필 삭제 밑 추가 

채팅방 추가

 서버적용

 설정창 만들기 

위치 + 구글 api 지도 

검색 기능 

카메라 기능


적용한 내용은 곧 포스팅 하겠습니다.


안녕하세요.


안드로이드 개발중 자체 에뮬은 켜지는 속도도 느리고 답답합니다.

보통은 핸드폰 개발자모드를 통해서 핸드폰 테스트를 많이 하지만 핸드폰에 부담이 갈 수 있기에 공기계가 아니면 잘 사용하지 않습니다. 

요즘엔 핸드폰게임이나 앱을 앱플레이어를 통해  사용하는 경우가 많습니다.


오늘 포스팅할 내용은 녹스 앱플레이어를 통해 Apk를 생성하는 과정입니다.


https://kr.bignox.com/


녹스 홈페이지입니다.



다운로드를 눌러줍니다.



바로설치를 눌러줍니다. 



설치가 완료되고 신나는 마음으로 안드에서 RunApp을 실행해봅니다.

!!... 타겟에 안찍히는 녹스.. 

처음에는 많이 당황할수 있는데 RunApp을 끄시고 녹스도 다시 실행해 줍니다.




깔자마자 녹스가 타겟으로 안잡히는거 같습니다. 다시 켜보니 잘잡힙니다.



SDK 를 안받으신분들은 다운로드 해줍니다.



빌드가 런되고 APK를 생성합니다.



짜잔 OX_Quiz 보이시나요 ?

예전에 개인적으로 연습했던 프로젝트입니다. 



정상적으로 실행되는 모습입니다.

이제 녹스 에뮬로 신나는 코딩을 해봅시다.



안녕하세요.


이번엔 핸드폰으로 개발자 옵션을 켜서 APK 파일을 실행시켜 보겠습니다.

실제로 앱을 만들면 핸드폰으로 사용하는 것이라 대부분 공기계나 본인이 사용하는 핸드폰을 이용해서 앱을 테스트 해봅니다. 에뮬에서 찾지못한 이슈가 생기는 경우도 있고 직접 터치 테스트를 통해 불편한 점도 찾을 수 있겠죠.


설정 앱을 들어가 줍시다.



설정 -> 디바이스 정보 클릭




설정 -> 디바이스 정보 클릭 -> 소프트웨어정보 클릭




설정 -> 디바이스 정보 클릭 -> 소프트웨어정보 클릭 후

빌드번호를 여러번 클릭해줍니다.



개발자 모드가 실행됬다는 다이얼로그가 뜹니다.




다시 설정으로 가보시면 개발자옵션이라는 텍스트가 생겼습니다.



들어가서 사용중-> 으로 바꿔주시면 개발자모드가 실행됩니다.






안드로이드에서 Run 을 눌러주시면 다음과같이 usdb 디버깅을 허용하시겠습니까 ? 라는 팝업창이 뜹니다.


그후 에뮬을 클릭해서 실행시켜주시면..



다음과 같이 정상적으로 APK 가 설치되고 실행됩니다..



--


usb디버깅 허용이 안뜨시는분들



개발자옵션에서 usb 디버깅 >>슬라이드후



http://local.sec.samsung.com/comLocal/support/down/kies_main.do?kind=usb


삼성 usb 드라이브를 설치해줍니다.


그후 실행하시면 정상적으로 작동합니다..


저도 한참 찾았네요.. (ㅠㅠ);

안녕하세요. 안드로이드 첫글 작성을 시작하겠습니다.


안드로이드는 자바언어를 기반으로 하는 프로그램입니다.


jdk 다운로드 와 환경변수를 설정해줍니다.


https://kim1224as.tistory.com/3


그후 안드로이드 스튜디오를 설치해줍니다.


https://developer.android.com/studio/#win-bundle



Andropd stubio 다운로드를 누르시고체크박스 클릭후 다운로드해주면 됩니다.



Next~



설치경로 지정해주시고 next~ next~ 



설치가 진행됩니다.



설치가 완료되면 next 버튼이 활성화 됩니다.




다운로드가 완료되서 Start Android Studio를 체크해서 바로 실행해 봅시다.





기존에 사용하시던 안드로이드가 있다면 위에 커스텀 버전을 누르고 경로를 지정해주도록 합시다 . 처음 설치하시는 분은 밑에꺼 그대로 OK 눌러주세요~




넥스트버튼을 눌러주시고~




넥스트~



개인적으로 왼쪽거 추천해드립니다. 프로그래머라는 직업이 화면을 오래 봐야하기 때문에 검정색바탕이 눈피로를 줄여줍니다.



피니쉬 눌러줍니다.



그러면 본격적인 안드로이드 스튜디오 다운로드가 시작됩니다.



다운로드가 완료 되었습니다. 

Finish 클릭을 하면 




짜잔 안드로이드 스튜디오 다운로드가 완료되었습니다.


이제 실행을 해봅시다.


Start a new Android Studio project 를 클릭해줍시다.



이름은 My Applecation 그리고 location은 앞으로 작업할 곳으로 옮겨줍니다.



저는 API 18 의 (Jelly Bean) 을 많이 사용합니다. 젤리빈으로 바꾸고



Empty Activity 를 클릭해줍시다. 아무것도 없는 빈 공간입니다.



Activity Name 은 "MainActivity" 로 생성합니다.



그후 피니쉬 ! 하고 잠시 기다리시면...



위와같이 메인과



xml layout이 정상적으로 뜬게 보입니다.


이상입니다. 즐코딩하세요 !



+ Recent posts