SlideShare une entreprise Scribd logo
1  sur  74
Xamarin Android
oraclejava
Xamarin 설치 하드웨어
• UWP(Universal Window Platform)을 개발
하려면 Windows10이 필수
• Windows Store/Windows Phone 8.1을 개
발하려면 Window8.1이 필수
• Android만 개발하려면 Windows7도 가능
– Android 실제기기를 준비하면 더 좋음
당신의 HDD/SDD는 충분한가?
• C#/.NET (Xamarin) 10GB
• Android 용 Microsoft Visual Studio 에뮬
레이터(2016年1月) 1GB
– 공통툴 혹은 개발 키트
• Android 네이티브 개발 키트 (R10E、32비트) 3GB
• Android SDK 1GB 미만
• Android SDK 셋업파일 (API 레벨 19혹은21) 5GB
• Java SE 개발키트(JDK) (7.0.550.13) 1GB
Windows 8.1이상에서 Hyper-V 지
원 유효화 필요
• Windows Phone 8.1 에뮬레이터
• Windows 10 Mobile 에뮬레이터
• Android Visual Studio 에뮬레이터
– 사용하기 위해
– Hyper-V란? X64기반의 컴퓨터에서 1대의 컴
퓨터에서 복수개의 가상환경을 실현 가능(단
윈도우 8부터 지원)
Xamarin Andriod 설치 순서 #1
Xamarin Andriod 설치 순서 #2
Download
Xamarin
클릭
Xamarin Andriod 설치 순서 #3
적당히 입력
(제대로 입력하시면
더 좋음 – 소식 받기)
Xamarin Andriod 설치 순서 #4
Xamarin Andriod 설치 순서 #5
Xamarin Andriod 설치 순서 #6
D:로 변경
(C는 SSD로
용량 적음)
Xamarin Andriod 설치 순서 #7
Xamarin Andriod 설치 순서 #8
인내심을 가
지고 기다림
Xamarin Andriod 설치 순서 #9
설치가 다 되었다면…
• 안드로이드 프로젝트 작성
– Visual C# > Android > Blank App(Android)
Xamarin 기동시 문제점?
• 설치후 에뮬레이터를 기동시 몇분을 기다
려도 화면이 락이 걸린 상태로 있다…
해결방안 – XAP 설치
라이선스를 수락하고 Install
XAP 설치 #2
설치 진행중…
XAP 설치 #3
VirtualBox 설치 화면 전환 (설치 위치는 자유롭게)
XAP 설치 #4
VirtualBox 설치 종료(종료후 디바이스 드라이버 인스톨 허가)
XAP 설치 #5
이제부터 본격적인 XAP 설치
XAP 설치 #6
설치 위치는 자유
XAP 설치 #7
인스톨 종료
XAP 설치 #8
사용가능한 에뮬레이터 목록
XAP 설치 #9
XAP 설치 #10
여기까지
2분이내에 뜸
LAYOUT
Linear Layout
• 수평(horizontal) 혹은 수직 방향으로 자식
요소들을 출력하는 레이아웃
Linear Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minWidth="25px"
android:minHeight="25px">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
<Button
android:text="Button"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<Button
android:text="긴 제목을 가진 Button"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
</LinearLayout>
소스코드 설명
• Fill Parent – 부모를 채운다
• Wrap Content – 허용되는 부모의 너비/높
이에 대해 최대한으로 채운다
• Match Parent – Fill Parent와 동일(OS버전
변경으로 추가됨)
단위 설명
• DP – Density independent Pixels 스크린의 물리
적인 dp해상도에 독립적인 픽셀
• SP – Scale independent Pixels, 사용자의 폰트 사
이즈에 독립적인 크기. 폰트 크기에 사용 추천
• DPI –DP와 동일
• PX – Pixels, 스크린의 실제 픽셀
• IN – Inches, 스크린의 실제 크기(인치 단위)
• MM – Millimetres, 스크린의 실제 크기(mm 단위)
• PT – Points, 1/72 인치(스크린의 실제 크기 단위)
Relative Layout
• 항상 자식요소와 관계(Relation)을 가지는
레이아웃.
• 복잡한 레이아웃 작성 가능
Relative Layout
1. Relative to Parent Container
2. Layout_AlignParentBottom – displays child at bottom of parent
3. Layout_AlignParentLeft – displays child on the left side of the
parent
4. Layout_AlignParentRight – displays child on the right side of
the parent
5. Layout_AlignParentTop – displays child at the top of the parent
6. Layout_CenterHorizontal – centers the child horizontally in the
parent
7. Layout_CenterInParent – centers the child both horizontally
and vertically in the parent
8. Layout_CenterVertical – centers the child vertically in the
parent
Relative Layout
9. Relative to Other View
10. Layout_Above – places the child above the
view
11. Layout_Below – places the child below the
view
12. Layout_ToLeftOf – places the element left
of the view
13. Layout_ToRightOf – places the element
right of the view
Relative Layout
14. Align with Other View
15. Layout_AlignBaseline – aligns baseline of the
new view with the baseline of specified view
16. Layout_AlignBottom – aligns bottom of the
new view with the bottom of the specified view
17. Layout_AlignLeft – aligns left of the new view
with the left of the specified view
18. Layout_AlignRight – aligns right of the new
view with the right of the specified view
19. Layout_AlignTop – aligns top of the new view
with the top of the specified view
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:text="한글"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/textView1" />
</RelativeLayout>
실행결과
TableLayout
• 가장 많이 사용하는 레이아웃 중 하나
• 행(Rows)과 열(Columns)로 구성
• 하나의 테이블 로우(Table Row)로 행을 구
성
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:stretchColumns="1"
p1:id="@+id/tableLayout1">
<TableRow
p1:id="@+id/tableRow1">
<TextView
p1:text="사용자 이름"
p1:layout_width="wrap_content"
p1:layout_height="wrap_content"
p1:layout_column="0" />
<EditText
p1:width="100px"
p1:layout_width="match_parent"
p1:layout_height="30dp" />
</TableRow>
<TableRow
p1:id="@+id/tableRow2">
<TextView
p1:text="비밀번호"
p1:layout_width="wrap_content"
p1:layout_height="wrap_content"
p1:layout_column="0" />
<EditText
p1:width="100px"
p1:layout_width="match_parent"
p1:layout_height="30dp" />
</TableRow>
<TableRow
p1:id="@+id/tableRow3">
<Button
p1:text="버튼"
p1:layout_width="wrap_content"
p1:layout_height="wrap_content" />
</TableRow>
</TableLayout>
실행결과
FrameLayout
• FrameLayout내의 각각의 자식 요소는 레
이아웃의 좌측상단에서 부터 레이아웃이
된다…
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/frameLayout1">
<ImageView
p1:src="@drawable/icon"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/imageView1" />
<TextView
p1:text="안드로이드"
p1:textAppearance="?android:attr/textAppearanceMedium"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:textColor="#000000"
p1:id="@+id/textView1"
p1:gravity="center" />
</FrameLayout>
실행결과
ListView
• 템플릿 작성
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com
/apk/res/android"
android:id="@+id/textItem"
android:textSize="44sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Activity 작성
[Activity(Label = "XamarinBasic2", MainLauncher = false, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
var listView = FindViewById<ListView>(Resource.Id.listView1);
var data = new string[] { "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "
일요일" };
listView.Adapter = new ArrayAdapter(this, Resource.Layout.ListViewTemplate1, data);
}
}
Entity 작성
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
}
Main Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView1" />
</LinearLayout>
샘플 데이터 작성
private List<Person> CreateSampleData(int range)
{
var persons = new List<Person>();
for (int i = 1; i<=range; i++)
{
var person = new Person
{
FirstName = $"길동{i}",
LastName = $"홍{i}",
Gender = "남",
Age = 20 + i
};
persons.Add(person);
}
return persons;
}
Adapter클래스 작성
public class PeopleScreenAdapter : BaseAdapter<Person>
{
List<Person> p_items;
Activity p_context;
public PeopleScreenAdapter(Activity activity, List<Person> items)
{
p_items = items;
p_context = activity;
}
public override Person this[int position]
{
get
{
return p_items[position];
}
}
public override int Count
{
get
{
return p_items.Count;
}
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = p_items[position];
View view = convertView;
if (view == null)
{
view = p_context.LayoutInflater.Inflate(Resource.Layout.ListViewTemplate2
, null);
}
view.FindViewById<TextView>(Resource.Id.textItem).Text =
$"{item.FirstName} {item.LastName} ({item.Gender}) : {item.Age}";
return view;
}
}
OnCreate
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
var listView =
FindViewById<ListView>(Resource.Id.listView1);
var data = CreateSampleData(20);
//listView.Adapter = new ArrayAdapter(this,
Resource.Layout.ListViewTemplate1, data);
listView.Adapter = new PeopleScreenAdapter(this, data);
}
ListView 실행결과
수정 과제
실전 예제(로그인 시스템)
실전 예제(로그인 시스템)
클릭 이벤트
mBtnSignUp.Click += (object sender,
EventArgs args) =>
{
//다이얼로그 호출
};
ProgressBar
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="35"
android:minWidth="25px"
android:minHeight="25px">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar1"
android:background="@drawable/ProgressBarStyle"
android:layout_centerInParent="true"
android:indeterminate="true"
android:visibility="invisible" />
</RelativeLayout>
C# 이벤트 처리(다이얼로그에서)
• public event
EventHandler<OnSignUpEventArgs>
mOnSignUpComplete;
• mOnSignUpComplete.Invoke(this, new
OnSignUpEventArgs(mTxtFirstName.Text,
mTxtEmail.Text, mTxtPassword.Text));
C# 이벤트 처리(메인에서)
• signUpDialog.mOnSignUpComplete +=
signUpDialog_mOnSignUpComplete;
• void signUpDialog_mOnSignUpComplete(object sender,
OnSignUpEventArgs e)
{
mProgressBar.Visibility = ViewStates.Visible;
Thread thread = new Thread(ActLikeARequest);
thread.Start();
}
실전예제(슬라이딩 탭 레이아웃)
슬라이딩 탭 레이아웃
Linq를 이용한 ListView 검색
Linq의 예
List<Friend> searchedFriends = (from friend in mFriends
where
friend.FirstName.Contains(mSearch.Text,
StringComparison.OrdinalIgnoreCase) ||
friend.LastName.Contains(mSearch.Text,
StringComparison.OrdinalIgnoreCase)
||
friend.Age.Contains(mSearch.Text,
StringComparison.OrdinalIgnoreCase) ||
friend.Gender.Contains(mSearch.Text,
StringComparison.OrdinalIgnoreCase)
select
friend).ToList<Friend>();
실전예제(갤러리로부터 이미지 로
드)
실전예제(갤러리로부터 이미지 로
드)
실전예제(갤러리로부터 이미지 로
드)
WebRequest로부터 Sql 인서트
WebRequest로부터 Sql 인서트
웹브라우저
웹브라우저
Facebook 로그인
Facebook 로그인

Contenu connexe

Similaire à Xamarin android

하이브리드 앱(Hybrid App)
하이브리드 앱(Hybrid App)하이브리드 앱(Hybrid App)
하이브리드 앱(Hybrid App)Changhwan Yi
 
2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummit2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummitVeronika Bae
 
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기NAVER Engineering
 
5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹지수 윤
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"Changhwan Yi
 
안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부mosaicnet
 
AD의 TAD와 협업.pptx
AD의 TAD와 협업.pptxAD의 TAD와 협업.pptx
AD의 TAD와 협업.pptxVisual Tech Dev
 
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다yamoo9
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용jinwook shin
 
대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)
대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)
대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)경완 강
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디Youngbin Han
 
HD 애플리케이션 만들기(파이어몽키 활용)
HD 애플리케이션 만들기(파이어몽키 활용)HD 애플리케이션 만들기(파이어몽키 활용)
HD 애플리케이션 만들기(파이어몽키 활용)Devgear
 
투어팁스모바일웹 제작가이드
투어팁스모바일웹 제작가이드투어팁스모바일웹 제작가이드
투어팁스모바일웹 제작가이드병수 김
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장Devgear
 
모바일앱개발 교육자료
모바일앱개발 교육자료모바일앱개발 교육자료
모바일앱개발 교육자료JinHyuck Churn
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발YEONG-CHEON YOU
 
GDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's NoteGDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's NoteSeok-yong Kim
 

Similaire à Xamarin android (20)

하이브리드 앱(Hybrid App)
하이브리드 앱(Hybrid App)하이브리드 앱(Hybrid App)
하이브리드 앱(Hybrid App)
 
2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummit2018 GDG 인천 DevFest GoogleAndroidDevSummit
2018 GDG 인천 DevFest GoogleAndroidDevSummit
 
모바일환경과 개발방향
모바일환경과 개발방향 모바일환경과 개발방향
모바일환경과 개발방향
 
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
 
5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"
 
안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부
 
AD의 TAD와 협업.pptx
AD의 TAD와 협업.pptxAD의 TAD와 협업.pptx
AD의 TAD와 협업.pptx
 
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
 
대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)
대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)
대화면 기기와 폴더블을 위한 앱 개발 (인공지능위크 2023)
 
React native development
React native developmentReact native development
React native development
 
Tizen UIFW - EFL
Tizen UIFW - EFLTizen UIFW - EFL
Tizen UIFW - EFL
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
 
HD 애플리케이션 만들기(파이어몽키 활용)
HD 애플리케이션 만들기(파이어몽키 활용)HD 애플리케이션 만들기(파이어몽키 활용)
HD 애플리케이션 만들기(파이어몽키 활용)
 
투어팁스모바일웹 제작가이드
투어팁스모바일웹 제작가이드투어팁스모바일웹 제작가이드
투어팁스모바일웹 제작가이드
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
 
모바일앱개발 교육자료
모바일앱개발 교육자료모바일앱개발 교육자료
모바일앱개발 교육자료
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
 
GDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's NoteGDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's Note
 

Plus de HyungKuIm

Jboss seminar
Jboss seminarJboss seminar
Jboss seminarHyungKuIm
 
E government framework
E government frameworkE government framework
E government frameworkHyungKuIm
 
Node.js and react
Node.js and reactNode.js and react
Node.js and reactHyungKuIm
 
Node.js and angular js
Node.js and angular jsNode.js and angular js
Node.js and angular jsHyungKuIm
 

Plus de HyungKuIm (10)

Jboss seminar
Jboss seminarJboss seminar
Jboss seminar
 
Flex design
Flex designFlex design
Flex design
 
E government framework
E government frameworkE government framework
E government framework
 
Grid layout
Grid layoutGrid layout
Grid layout
 
Nexacro
NexacroNexacro
Nexacro
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
Node.js and react
Node.js and reactNode.js and react
Node.js and react
 
Node.js and angular js
Node.js and angular jsNode.js and angular js
Node.js and angular js
 
Swift2
Swift2Swift2
Swift2
 
Vue js
Vue jsVue js
Vue js
 

Xamarin android