Android Studio: (About) 10 Things You (Probably) Didn’t Know You Could Do

이 "Android Tool Time"프로 팁에서, Android Studio 전문가에게 소개해 드리겠습니다 영역을 지키고 생산성을 높일 수있는 팁

[음악 재생] 당신은 아마도 이미 가장 일반적인 바로 가기의 전환 모호하지 않은 클래스 이름을 자동으로 가져 오는 경우, Shift 키를 두 번 누르면 모든 곳을 검색 할 수 있습니다 또는 Shift-F6을 사용하여 변수, 메소드 또는 클래스의 이름을 바꿀 수 있습니다 그래서 우리는 그것들을 건너 뛰고 조금 더 시험해 볼 것입니다 그보다 미묘합니다 여기서는 복제 된 메서드를 변경해야합니다

위도를 설정합니다 나는 삶을 편하게하기 위해 자동 완성을 가져올 수있다 Control-Space를 사용합니다 그러나 올바른 방법을 선택할 때, 그것은 오래된 방법 앞에 성가신 방법으로 새로운 방법을 삽입합니다 대신 Tab 키를 누르지 않으면, 이전 방법을 새 방법으로 바꿉니다

마찬가지로 Control-Shift-Space를 누르면, 예상되는 유형에 대한 제안 만받습니다 그리고 내가 선택을 한 후에 탭을 치면 이전 값을 대체합니다 Control-Space와 Control-Shift-Space 모두에서, 바로 가기를 두 번째로 친다 자동 완성 옵션을 제안합니다

컬렉션, 목록 및 배열을 기반으로합니다 커서 키를 사용하여 코드를 탐색하는 방법을 이미 알고 있습니다 Alt-Left 및 Right을 사용하여 단어 건너 뛰기 선택하려면 Shift 키를 누른 상태에서 선택합니다 그러나 Alt-Up을 사용할 수 있다는 것을 알고 계셨습니까? 선택한 항목을 다음 항목으로 확장 노드 및 Alt-Down을 축소하여 해당 축소 너의 선택? 선택되면, Alt-Shift Up 또는 Down을 사용하여 코드를 이동하십시오 후위 (postfix) 코드 완성을 사용하여 이미 입력 된 것을 변환하십시오

표현과 같은 다른 표현으로 목록 전체에 대한 루프 또는 표현식 돌리기 if 문으로 Command-J를 사용하여 주어진 postfix를 볼 수 있습니다 문맥 더 복잡한 패턴의 경우 라이브를 사용하십시오 템플리트 된 코드 스니 j을 삽입 할 템플리트 예를 들어, 단축키 사용 새로운 토스트를 쉽게 추가 할 수 있습니다

표시 할 텍스트를 지정합니다 수십 개의 일반 및 Android가 있습니다 특정 라이브 템플릿 로깅 바로 가기 선택, 현재 메소드를 삽입하는 로그 M 포함 이름과 전달 된 각 매개 변수의 이름과 값 보다 쉬운 로그 문은 디버깅, 하지만 당신도 알 수 있니? 표현식의 결과를 기록 할 수있는 조건부 중단 점? 사용자 정의를 정의 할 수도 있습니다 표현식을 평가하는 동안 객체 렌더링 두 문자열 값에 의존하는 것이 아닙니다

Android Studio에는 여러 가지 유용한 기능이 있습니다 모든 바로 가기를 잊어 버리는 것은 쉽다 다행히도, 당신은 단지 기억할 필요가 있습니다 one – Command-Shift-A– 그리고 타이핑을 시작합니다 키워드를 찾으십시오

예를 들어 구조 검색 기능 코드 패턴을 검색 할 수 있습니다 정규식에 의존하지 않고 구조 검색 검사를 활성화하고 마우스를 빌린 경우, 메소드와 구문에 대한 경고를 제공 할 수도 있습니다 당신이 당신의 코드 내에서 낙담하기를 바란다 마찬가지로 Structural Replace 기능을 사용할 수 있습니다 사용되지 않는 코드 또는 일반적인 안티 패턴을 찾아서 대체합니다

구조 검색 검사 사용 빠른 수정 옵션으로 대체 스 니펫을 제공합니다 수백 가지 팁과 트릭이 있습니다 Android Studio 환경을 더 빠르게 만들기 위해, 보다 생산적이며 대부분 마우스가 필요 없습니다 YouTube의 Android 개발자 구독 더 많은 Android 도구를 사용하려면 "Android Tool Time"을 조정하십시오 시간 전문가 팁

What's New in Android Studio UI Design and Debugging Tools (Google I/O'19)

[음악 재생] VADIM CAEN : 안녕하세요 우리 이야기에 일찍와 주셔서 감사합니다

Android Studio, UI 디자인 및 디버깅의 새로운 기능 도구 고맙습니다 [박수 갈채] 저는 Vadim입니다 Android Studio에서 디자인 툴을 작업합니다 JEROME GAILLARD : 저는 Android Studio 팀의 Jerome입니다

JOE BAKER-MALONE : 저는 Android Studio 팀의 Joe입니다 ASHLEY ROSE : 저는 Android 프레임 워크와 JetPack의 Ashley입니다 VADIM CAEN : 좋습니다 시작하기 전에 모바일 제품에 대해 약간의 이야기를합니다 어제 어쩌면 Android Studio 팀은 개선을 위해 모바일 제품에 중점을 두었습니다

Android Studio의 엔드 투 엔드 사용자 경험 Android Studio 개선은 수정 사항 만이 아닙니다 또한 사용 방법을 개선하는 방법이기도합니다 우리가 확인한 틈새를 채우십시오 우리의 도구 체인은 – 설계 할 때 – 새로운 레이아웃을 구축하고 새로운 탐색 기능을 구축합니다 이 레이아웃 사이에, 당신의 자원을 관리하고, 장치에서 런타임에 검사를 처리합니다

이 도구 체인을 사용하려면 전형적인 사용자 여행을 거치면서, Google Trips 애플리케이션을 구축하십시오 그리고 Jerome은 Layout Editor에 대해 이야기 할 것입니다 여기에서 볼 수있는 첫 번째 레이아웃을 작성하는 방법에 대해 설명합니다 제롬 가이 야드 : 감사합니다, 바딤 그래서 우선, 우리는 Google Trips 앱의 첫 화면, 레이아웃 편집기를 사용하여

레이아웃 편집기를 열면 이것은 화면의 종류입니다 너는 볼거야 여기는 단지 빈 레이아웃 일뿐입니다 우리가 할 첫 번째 일은 청사진 모드로 전환하는 것입니다 속도가 빠르면 빠르며 방금 만들려고 할 때 산만해진다

레이아웃상의 제약 넌 그냥보고 싶지 않아 구성 요소가 실제로 어떻게 보이는지 나는 팔레트에서 – 레이아웃에 필요한 모든 구성 요소를 드래그하여 어느 정도 확실한 곳에서 일단 내가 끝내면 그 시간이 온다

제약 조건을 만들 수 있습니다 좀 더 효율적인 건물 제약이되는 방법으로, 나는 그들을 하나 하나 만들 수 있었다 하지만 문맥 메뉴를 사용하면 한 번에 여러 가지 제약 조건을 만들 수 있습니다 예를 들어 여기서는 RecyclerView를 중앙에 배치하려고합니다 레이아웃 내에서

내가 할 수있는 한 가지는 RecyclerView를 마우스 오른쪽 버튼으로 클릭하는 것입니다 문맥 메뉴에는 옵션이 있습니다 수평으로 센터링의 그것이하는 일은 왼쪽 클릭 한 번으로 오른쪽 제약 조건을 RecyclerView가 중앙에 배치되도록합니다 일단 모든 제약 조건을 다 만들면, 이것은 내 레이아웃이 청사진 모드에서 보이는 것과 같습니다

분명히, 그것은 나에게 정말로 말하지 않는다 디자인에 비해 옳은 것을 만들면 지금 당장 나는 주어진다 이제 디자인 모드로 돌아가겠습니다 그것이 어떻게 생겼는지 보아라 디자인 모드에서는 보이지 않는 것을 볼 수 있습니다

내가받은 원래 디자인과 매우 흡사하다 그 이유는 RecyclerView 뷰 꽤 비어 있습니다 아시다시피, RecyclerView는 일반적으로 런타임에 데이터를 채우고, 하지만 그때는별로 도움이되지 않습니다 레이아웃을 만들고 데이터가 올바르게 표시되는지 확인하십시오 당신이 보게 될 것입니다

이 문제를 해결하려면 디자인 [? 도구?] 속성을 사용합니다 그래서 디자인 시간 속성, 당신은 간단하게 – RecyclerView에서 컨텍스트 메뉴를 다시 사용하십시오 샘플 데이터 선택기 등을 사용할 수 있습니다 샘플 데이터 선택 도구에서 미리 정의 된 템플릿 중 하나를 선택할 수 있습니다 RecyclerView 항목에 대해 귀하가 제공하는 정보

여기에서 첫 번째 이메일 클라이언트를 선택했습니다 그렇게하면 해당 RecyclerView에 대한 레이아웃이 생성됩니다 항목, 이메일 클라이언트 카드 그리고 동시에, 그것을 당신의 RecyclerView에 연결합니다, 그러면 레이아웃 편집기에 채워진 상태로 표시됩니다 물론 우리는 이메일 클라이언트를 구축하지 않습니다

RecyclerView에서 빌드하고자하는 것 그 여행 카드입니다 그래서 나는 그 RecyclerView 아이템을 편집하려고합니다 Trip 카드로 만들었습니다 자원 관리자 패널에서 – 여기에서 볼 수있는 왼쪽 편에, 바딤이 선물 할거야 너에게 훨씬 더 자세하게 – 간단히 말해서 RecyclerView 항목의 이름을 뭔가로 바꿀 수 있습니다

내 프로젝트에 더 적합한, 그리고 나 편집을 시작할 수 있습니다 리소스 관리자에서 레이아웃을 두 번 클릭하십시오 레이아웃 편집기에서 레이아웃을 열면됩니다 화면에서 볼 수 있듯이, 나는 꽤 많이 가지고있다 내 오른쪽 여행 카드에 필요한 모든 권리가있는 구성 요소, ImageView, 몇 개의 태그보기, 그러나 그들은 분명히 올바른 제약 조건을 가지고 있지 않습니다

그래서 모든 제약 조건을 삭제하고, 툴바에서 해당 버튼을 클릭합니다 그 작업이 끝나면, 나는 재구성 만 할 것입니다 모든 제약 한 가지 문제는 우리가 꽤 많은 구성 요소를 가지고 있다는 것입니다 작은 영역에서 서로 겹치기

그것은 약간 어수선 할 수 있습니다 그리고 우리는이 상황에서, 건물 제약 조건은 약간 어려울 수 있습니다 제약 조건을 드래그하는 것이 때로는 어려울 수 있습니다 올바른 대상, 올바른 구성 요소, 특히 구성 요소가 겹치는 경우 이제 우리가 할 수있는 일은 제약을 원하는 곳으로 직접 드래그합니다 연결하려는 구성 요소에서, 그런 다음 팝업 메뉴가 열리고 어떤 유형인지 묻습니다 설정할 제약 조건을 선택하십시오

정말 흥미로워 지네 제약 조건을 다음 위치로 드래그합니다 겹치는 구성 요소가 있습니다 그 상황에서, 우리는 여러 유형의 제약 조건을 사용할 수 있지만 겹치는 구성 요소를 선택하십시오 그 제약 조건을 첨부하고 싶습니다

그리고 그것은 그것을 훨씬 쉽게 만들어야합니다 경우에 제약 조건 레이아웃을 작성하는 방법 중첩되고 작은 구성 요소가있는 곳 도움이 될 수있는 마지막 방법 제약 조건을 효율적으로 만들 수 있습니다 구성 요소를 사용 중입니다 구성 요소에서 여러 구성 요소를 선택하는 경우 – 여기에서는 두 가지 텍스트보기를 선택했습니다

다시 컨텍스트 메뉴에서 마우스 오른쪽 버튼을 클릭하고 선택합니다 사용할 수있는 제약 조건 중 하나 당신은 하나의 제약 조건을 만들 수 있습니다 선택한 여러 구성 요소에 적용됩니다 그래서 여기에서 두 가지 제약 조건을 만듭니다 이 두 텍스트보기에서 동시에 우리가 모든 제약 조건을 다 만들면, 우리의 견해를 조금이라도 사용자 정의 할 때입니다

이를 위해 우리는 Attributes Panel을 사용할 것입니다 레이아웃 편집기의 오른쪽에 있습니다 우리는 Attributes 패널을 재 설계했습니다 Declared Attributes라는 맨 위에 새 섹션을 표시합니다 이 섹션에서는 모든 속성 구체적으로 설정된 선택한보기에 대한 그 견해에 대해서

바로 거기에서 모든 속성을 편집 할 수 있습니다 이미 설정된 해당 뷰에 새 속성을 설정하려면, 더하기 버튼을 클릭하기 만하면됩니다 해당 속성의 이름과 값을 추가하십시오 Attributes 패널에서 할 수있는 또 다른 일 Constraint Widget을 사용하여 여백을 설정합니다 귀하의 의견에 보고 싶어했을거야

숫자와 같은 실제 값만 설정할 수있을뿐만 아니라 증거금의 가치 ​​- 정의 된 맞춤 측정 기준을 설정할 수도 있습니다 프로젝트에서 그것이 우리가 @ dot dot dot option을 추가 한 이유입니다 드롭 다운의 맨 아래에 버튼을 클릭하면 자원 선택 도구가 열리고, 이미 가지고있는 특성 항목을 선택할 수 있습니다 프로젝트에서 정의하거나 바로 거기에 새로운 차원이 있습니다 일어날 필요가있는 마지막 한 가지 – 그 레이아웃을 보면서 – ImageView가 샘플 데이터로 채워지는 것을 볼 수 있습니다

하지만 단지 기본 샘플 데이터 일뿐입니다 Android Studio에서 제공됩니다 그래서 그것은 실제로 그 종류를 대표하지 않습니다 RecyclerView가 런타임에 수신 할 데이터의 양입니다 그래서 당신이 할 수있는 것은 당신 자신의 샘플 데이터를 설정하는 것입니다

그 ImageView에 cities라는 이미지를 cities라는 디렉토리에 추가했습니다 우리 프로젝트의 샘플 데이터 폴더에 있습니다 샘플 데이터 그림에 나타나는지 확인할 수 있습니다 샘플 데이터를 설정할 수 있습니다

우리의 원래 레이아웃으로 돌아가서, 우리는 이제 그것이 많이 보임을 볼 수 있습니다 당신이 가진 원래의 디자인과 더 비슷합니다 거기에서, 당신은 정말로 디자인이 제대로 구현되었으며 실제 데이터를 수신 할 때 작동합니다 장치에서 실행 중입니다 이제 우리는 첫 번째 제약 조건의 구축을 마쳤습니다

첫 번째 화면에서 계속 진행하고 싶습니다 우리의 응용 프로그램에서 우리의 다음 화면을 구축합니다 레이아웃 파일을 만드는 것만으로 돌아 가기보다는, 레이아웃 편집기에서 빌드하고, 우리는 네비게이션을 생각하고 바로 거기에서 시작하고 싶다 우리의 애플 리케이션의 흐름, 그리고 어떻게 첫 번째 화면이 전환됩니다 두 번째 화면으로 그렇게하기 위해 우리는 네비게이션을 살펴볼 것입니다 편집자

탐색 편집기는 시각적 도구입니다 이를 통해 Navigation Architecture를보다 쉽게 ​​사용할 수 있습니다 JetPack 라이브러리의 구성 요소 탐색 아키텍처 구성 요소의 방식 작품은 네비게이션 호스트 단편을 사용하는 것에 의존합니다 응용 프로그램의 기본 레이아웃

여기에 우리의 활동 주 레이아웃 파일, 우리는 Layout Editor에서 드래그 할 것입니다 NavHostFragment 팔레트 – 기본적으로 거기에 있습니다 그것을 디자인 표면 위로 끌어 올 것입니다 그렇게 할 때, 그것은 당신에게 선택을 요구할 것입니다 해당 NavHostFragment와 관련된 탐색 그래프 아직 탐색 그래프를 만들지 않은 경우, 그 대화 상자에서 바로 할 수 있습니다

우리가하는 일이야 이것이 레이아웃이 어떻게 생겼는지입니다 그것은 비어 있습니다 이 NavHostFragment가 있습니다 네비게이션 아키텍처 구성 요소 그것을 채울 것입니다 당신이로드 할 여러 단편들

그러나 두 번 클릭하면 탐색 편집기가 열립니다 이것은 네비게이션 에디터가 비어있을 때 보이는 것과 같습니다 우리가하고 싶은 첫 번째 일 첫 번째 화면을 시작 목적지로 추가합니다 우리의 애플 리케이션을 위해 대상 추가 메뉴에서 앱에있는 모든 레이아웃이 미리 선택되었습니다

그래서 우리를 위해, 우린 그 조각을 환영합니다 이전에 작업해온 레이아웃입니다 바로 거기에 놓으십시오 다음으로, 우리는 두 번째 화면을 추가하기를 원한다 그러나 이미 레이아웃을 만들지 않았기 때문에, 우리는 단순히 새로운 목적지를 만들 수 있습니다

추가 대상 메뉴에서 그렇게하면 생성의 가능성을 얻을 수 있습니다 새로운 프래그먼트 클래스와 그 관련 레이아웃, 이것이 레이아웃이 될 것입니다 두 번째 화면으로 사용됩니다 두 화면이 Navigation Editor에 있으면, 그들을 연결하는 시간이 온다

그것은 행동으로 할 수 있습니다 화면에 표시된대로 작업을 간단하게 만들 수 있습니다 또한 Attributes 패널에서 직접 탐색 편집기의 해당 동작에 대한 속성 중 일부를 설정하고, 애니메이션이 재생되는 것과 같습니다 그 동작을 통해 전환 할 때, 또는 뒤로 누르면 행동으로 할 수있는 또 다른 매우 흥미로운 일 한 화면에서 다음 화면으로 유형 안전 데이터를 전달합니다

그렇게하고 싶다면 다음과 같이 할 수 있습니다 수신 대상에 – 인수 섹션에서 더하기 단추를 클릭하십시오 속성 패널의 단순히 대화 상자를 열면 인수의 이름을 지정하십시오 인수의 유형 그것은 미리 정의 된 유형일 수 있습니다

또는 프로젝트에서 정의한 유형일 수 있습니다 당신이 원하는 어떤 물건이라도 물론, 네비게이션 그래프 만들기 앱 탐색을 완벽하게 지정하기에는 충분하지 않습니다 또한 약간의 코드를 작성해야합니다 그러나 당신이 볼 수있는 것처럼 그것은 꽤 간단합니다

여기, 나는 RecyclerView의 항목에 불과하다 OnClickListener의 경우 전환하려고합니다 그 행동을 끝내라 그래서 내가하는 일은 액션 객체를 만드는 것입니다 내비게이션에서 지정한 인수를 전달합니다

편집자 일단 행동을 취하면 나는 간단하게 탐색 라이브러리의 navigate 메소드 호출 실제로 전환을 수행합니다 그것이 실제로 정의한 전환을 수행하는 데 필요한 전부입니다 탐색 편집기에서 할 수있는 마지막 사항 나머지 네비게이션 흐름을 채우기 위해 자리 표시자를 사용하며, 그 순간에 귀찮게하고 싶지 않으면 새로운 조각 나중에, 그렇게 할 준비가되면, 당신은 단순히 돌아가서 레이아웃으로 대체 할 수 있습니다

지금은 실제로 빌드 할 때가되었다고 생각합니다 우리의 두 번째 레이아웃 보시다시피, 많은 이미지가 포함 된 레이아웃입니다 많은 자원이 필요합니다 우리는 어떻게 자원을 볼 것인가? 관리자는 우리가 그것을 구축하는 데 도움이 될 수 있습니다

VADIM CAEN : 나는 갭을 채우기 전에 이야기하고있었습니다 Android Studio에 존재했던 하나의 차이 리소스를 관리하는 방법이었습니다 문제가 무엇인지 살펴 보겠습니다 Android Studio 리소스 디렉토리 구조 프레임 워크를 위해 만들어진 것이지 실제로는 아닙니다 사용자에게 리소스를 얻을 때 디자이너에게서 보면 이렇게 보일 수도 있습니다

폴더가 많을 수도 있습니다 죄송합니다 먼저 Android Studio에서 다른 문제가 발생했습니다 전체 축소판보기가 없습니다 특정 Android보기

그래서 레이아웃, 벡터 잔해 또는 모양 – 미리 볼 수있는 유일한 방법은 하나의 레이아웃을 두 번 클릭하거나 하나의 파일에 두 번 클릭하는 것입니다 미리보기에서 확인하십시오 이 문제를 해결하기 위해 Android Studio에 도입했습니다 34 Resource Manager는 다음과 같은 새로운 도구입니다

리소스를 가져오고, 사용하고, 탐색 할 수 있도록 도와줍니다 보다 그래픽적인 방식으로 그것을 열려면 간단히 Resource Manager 버튼을 클릭하면됩니다 Android Studio의 왼쪽에있는 프로젝트 버튼 아래, 이 중립 창을 열 것입니다 한번 더 그래서 우리 문제로 되돌아갑니다

왼쪽에는 프로젝트 구조가 있습니다 오른쪽에는 디자이너가 우리에게 준 것을 가지고 있습니다 우리는 파일에서 다른 프로그램을 볼 수 있습니다 디자이너가 우리에게 준 것 어쩌면 그들은 자신이 좋아하는 디자인 소프트웨어를 사용했을 것입니다

기본 내보내기 옵션을 사용했습니다 폴더에 드로어 블 접두어가 누락되었을 수 있습니다 이름 또는 접미사 @ 2x와 함께 웹 형식을 사용했을 수도 있습니다 그리고 당신이해야 할 일은 @ 2x 접미사를 제거하는 것입니다

그런 다음 하나씩 하나씩 파일을 붙여 넣습니다 다른 문제는 폴더가 누락되었을 수 있으며, 그리고 당신은 문서로 돌아 가야 할 것입니다 이 특정 폴더에 대한 한정자가 무엇인지 기억하고, 그리고 당신은 올바른 순서로 그들을 넣어야합니다 Resource Manager와는 어떻게 작동합니까? 이제 전체 묶음을 끌어다 놓기 만하면됩니다 당신이 Resource Manager에 가져온 파일들, 자동으로 가져오고 이름별로 그룹화됩니다

여기에서 볼 수 있듯이 우리의 자원은 이름별로 그룹화되어 있습니다 올바른 한정어가 적용되었습니다 그래서 방금 무슨 일이 있었던거야? [박수 갈채] 고맙습니다 한정어를 식별하면 여기에는 웹 또는 Android가 파일 경로에있을 수 있습니다 우리는 단순히 해당 안드로이드 폴더를 만들 것입니다, 파일에있을 수있는 접미어를 제거하고, 프로젝트에 복사하십시오

물론 한정자를 추가하려는 경우 (예 : 무작위로 지방, 그리고 프랑스어와 같은 임의의 언어, 프랑스와 같은 지역에서는 간단하게 여기에서 할 수 있습니다 그리고 당신은 명령을 기억할 필요가 없습니다 수동으로 폴더를 만들면 자동으로 생성됩니다 올바른 한정어로 이 시점에서 원하는 경우 파일의 이름을 바꿀 수도 있습니다 이제 우리의 자원은 Resource Manager에서 그룹화됩니다

한 번에 모두 볼 수 있습니다 따라서 기본적으로 하나의 리소스 버전 만 표시됩니다 하지만 리소스를 두 번 클릭하면 당신은 모든 다른 버전을 볼 수 있습니다 다른 한정자가 적용되면 분석 할 파일 유형 어떤 파일이 응용 프로그램에서 가장 많은 공간을 차지했는지 자, 이것은 제가 정말로 흥분되는 특징입니다

이제 SVG를 드래그 앤 드롭 할 수 있습니다 VectorDrawable로 변환됩니다 [CROWD CHEERING] 고맙습니다 그래서 여기에 파일 선택기가 열려 있습니다 나는 아무것도 선택할 필요가 없다

간단히 클릭하고 열 수 있으며 모든 SVG를 열 수 있습니다 가져오고 변환됩니다 또 다른 멋진 기능은 모든 레이아웃을 미리 보는 것입니다 이름으로 레이아웃을 인식하는 것이 어려울 수도 있습니다 따라서 레이아웃 탭에서 리소스 관리자를 열면, 모든 레이아웃을 볼 수 있습니다

당신이 찾고있는 것을 찾으려면 전에 말했듯이 도구 체인이 있습니다 이 전체 도구 체인을 함께 통합하려고합니다 우리가 한 것은 통합 된 것입니다 [INAUDIBLE] 레이아웃 편집기로

예를 들어 여기에 포함시키고 자하는 레이아웃이 있습니다 그래서 상단 부분 이 레이아웃을 레이아웃 편집기로 드래그 앤 드롭 만하면됩니다 [INAUDIBLE]을 만듭니다 Drawable에도 똑같이 적용됩니다

Drawable을 드래그 앤 드롭하면 ImageView가 생성됩니다 이 견해의 끝까지 빨리 감습니다 이전 레이아웃에서 볼 수 있습니다 우리 툴바는 올바른 색상이 아닙니다 우리가 할 수있는 것은 컬러 탭을 열고, 우리 프로젝트에 정의 된 모든 색상을 볼 수 있습니다

그 중 하나를 두 번 클릭하기 만하면됩니다 파일을 열어서 커서를 옮깁니다 여기서 색상이 정의됩니다 그런 다음 새로운 색상 선택기를 사용할 수 있습니다 시각적으로 색을 선택하십시오

색상 선택기는 RGB 및 HSB에서 작동하며, HSB를 선택한 디자이너와 함께 일한다면 값을 사용하거나 자료를 사용할 수 있습니다 이미있는 팔레트 이제 두 개의 레이아웃이 준비되었습니다 앱에서 실행하고 싶습니다 Ashley와 Joe가 우리에게 말하기를 다시 환영 할 것입니다

새로운 레이아웃을 검사하는 방법 [박수 갈채] JOE BAKER-MALONE : 감사합니다, 바딤 이제 개발주기의 다음 단계로 넘어갑니다 우리가 실제로 앱을 실행하게되면, 실제 데이터와 함께 작동하는 방법을보고 조정할 수 있습니다 우리가해야 할 수도 있습니다

이제 오늘, 레이아웃이 어떻게 작동하는지보고 싶다면 런타임에는 Layout Inspector 도구가 있습니다 Android Studio에서 레이아웃 속성은 스냅 샷을 제공합니다 한 화면의 전체보기 계층 구조, 및 속성에 대한 일부 정보 각보기에서 설정됩니다 하지만 지금은 많은 한계가 있습니다 이것은 부분적으로 안드로이드 프레임 워크의 데이터에 기인합니다 표시 할 수 있도록 Studio에 제공됩니다

이제 Android Q에서는 프레임 워크에 Studio에 대한 여러 가지 새로운 API 추가 더 많은 뷰 및 레이아웃 디버깅을 노출하는 데 사용 정보 Ashley는 새 API에 대해 곧 이야기 할 것입니다 프레임 워크 추가가 우리에게 충분한 지 확인하려면 우리가 원하는 정보를 사용자에게 보여주고, Android Studio 팀의 우리 부부 프로젝트 마블에서 약간의 시간을 보냈습니다 새 API를 채택하고 우리가 할 수있는 것을 확인하십시오 우리는 완전히 새로운 Layout Inspector 작업을 시작했습니다

내가 너에게 지금 보여줄 것은 일의 몰래 절정이다 우리는 지금까지 해왔습니다 자, 이것은 초기 작업입니다 최신 미리보기 빌드에는 아직 포함되어 있지 않습니다 그러나 차드가 어제 개발자 기조 연설에서 말했듯이, 우리는 미리보기를 좋아합니다

우리는 개발자 의견을 환영합니다 그래서, 우리는 당신의 손에 그것을 밖으로 가져갈 것입니다 최대한 빨리 자, 어떻게 작동하는지 봅시다 Google 여행 앱부터 시작하겠습니다

우리가 해왔 던 이제 에뮬레이터에서 실행 중임을 알 수 있습니다 우리는 물건을 끌어 올려서 사용자로부터 실제 데이터를 실행하고, 디자인 타임에 사용한 샘플 데이터가 아닙니다 여기서 아래로 스크롤하면 볼 수 있습니다 실제 데이터의 일부 여행 설명 우리가 샘플 데이터에서 가지고있는 것보다 상당히 길다 텍스트가 정렬되는 지점까지 우리가 의도하지 않은 방식으로 이미지를 지배했다

새로운 레이아웃 검사기에서 이것을 살펴 보겠습니다 새로운 레이아웃 검사기가 우리에게 제공하는 것을 볼 수 있습니다 레이아웃 검사기에서 현재 가지고있는 것과 유사한보기입니다 문제의 텍스트보기를 선택하면 여기, 그리고 오른쪽에있는 Attributes Panel을보고, 우리는 몇 가지 차이점이 있음을 알 수 있습니다 현재 레이아웃 검사기에서 가지고있는 것입니다

우선, 실제 속성 이름이 있습니다 이전에는 getter 메소드 모음이 있었지만 그렇지 않을 수도 있습니다 잘 실제 속성 이렇게하면지도를 훨씬 쉽게 찾을 수 있습니다 여기서 본 것에서부터 정의한 것에 이르기까지 자신 만의 레이아웃과 스타일로

두 번째로, 우리는 멋지게 형식화 된 속성 값 다양한 가치 유형에 대해 우리는 전에 그것을 항상 얻을 수는 없었다 예를 들어 ID, 열거 형을 볼 수 있습니다 가치, 색깔, 등등 세 번째로, 우리는 지금 몇 가지 정보를 가지고있다 그 속성 값이 설정되는 곳

따라서 우리는이 선언 된 속성 섹션을 볼 수 있습니다 여기, 우리가 Layout Editor에서 가지고있는 것과 비슷합니다 직접 설정된 속성의 경우 선택한보기에서 이제 텍스트 크기와 관련된 속성을 살펴 보겠습니다 이 옵션을 선택하면 기본 탐색 기능을 사용할 수 있습니다 여기에서 직접 키 스트로크를 선언하는 방법 해당 값이 설정되는 레이아웃 xml로 이동합니다

조금 더 작게 변경하십시오 개발자 기조 연설에서 들었던 것처럼, Android Studio 35 미리보기에서 이 새로운 변경 기능을 적용하십시오 이것 이후에 바로 그 부분에 대해 더 많은 것을들을 수 있습니다 Android 개발자 도구에서 새로 워진 이야기

하지만 지금은 에뮬레이터의 변경 사항을 확인하는 데 사용하겠습니다 우리의 애플 리케이션을 재배치 할 필요없이 실제로 새로운 레이아웃에서 업데이트가 즉시 표시됩니다 경감 님 Layout Inspector가 무엇을 미러링하고 있기 때문입니다

기기 라이브에서 발생합니다 우리가 여기서 다시 스크롤한다면, 레이아웃 검사기가 오른쪽으로 스크롤되는 것을 볼 수 있습니다 게다가 [박수 갈채] 예 다른 시나리오를 살펴 보겠습니다

앱의 어두운 테마를 구현하고 싶다고 가정 해 보겠습니다 여기서 우리는 밝은 배경색을 가지고 있음을 알 수 있습니다 배경색이 어디인지 알아 보겠습니다 에서 온다 우리가 여기에있는 단편 xml을 보면, 우리는 거기에 직접 설정되어 있지 않습니다

Layout Inspector를 살펴 보겠습니다 여기서 배경을 선택하면, 정말 잘 볼 수 있다면 우리는 배경색이 없다

이보기에서 직접 설정하십시오 왜 그럴까? 글쎄, 우리는 여기에서 가장 많은보기를 선택했습니다 배경색을 어느 정도 낮추어 놓을 수도 있습니다 뷰 계층 구조에서 그러나 어떤 시각이 설정되고 있습니까? 글쎄, 새로운 레이아웃 검사기가 우리에게 제공합니다

쉽게 찾을 수있는 방법 [크라우드 반응] [웃음] 3D보기에서는 어느 것이 쉽게 볼 수 있습니다 여기에서 무엇을 그리는가? 이제이보기를 선택하면 배경이 색상이 실제로 설정되어 있습니다 그러나 어떤 파일에 설정되어 있습니까? 이것은 선언 된 속성 섹션의 맨 위에 있지 않습니다 그래서 우리는 그것이이 견해에 직접적으로 설정되어 있지 않다는 것을 알고 있습니다

그러나 다시 한번 우리가 Attributes에서 속성을 선택하면 Panel, 거기에서 직접 탐색 할 수 있습니다 그것이 설정되는 곳으로 이 경우 스타일로 설정됩니다 그리고 우리는 그 스타일을 직접 탐색 할 수 있습니다 보기에 명시 적으로 참조되지 않는 경우에도 마찬가지입니다

우리가 본 3D 표현은 우리는 다른 방식으로 사물을 시각화하고, 여기서 유용한 정보를 계속 찾고 있습니다 예를 들어 초점을 맞추는 것이 유용 할 수 있습니다 한보기 및 그 자녀들에게 또는 무엇을 기반으로보기를 함께 그룹화하는 것이 유용 할 수 있습니다 그들이 정의 된 레이아웃 파일

이 화면의 예는 상단에서 볼 수 있습니다 우리는 RecyclerView 항목을 가지고 조각을 만든 다음, 활동 그리고 그 뒤에, 다양한 견해들 프레임 워크에 의해 정의됩니다 가벼운 새로운 레이아웃 검사기를 위해 더 많은 계획을 세웠습니다 저는 우리가 무엇을 생각해 낼 수 있는지에 대해 매우 기쁩니다

이제는 필요한 프레임 워크 변경 사항에 대해 이야기합니다 이것을 가능하게하려면 여기 애쉴리가 있습니다 애쉴리 로즈 : 고마워, 조 [박수 갈채] Android Q의 경우 세 가지 새로운 API가 추가되었습니다 이러한 새로운 검사 기능을 사용할 수 있습니다

우리는 모든 도면 명령을 수행 할 수 있습니다 화면에 프레임을 만들었습니다 그것을 직렬화하여 Studio로 다시 보내십시오 그래서 그것들을 재생할 수 있고 멋진 3D보기를 만들 수 있습니다 우리는 얼마나 길게 빨랐 는가? 뷰 계층 구조에서 뷰의 특성을 가져오고, 추가 메타 데이터를 추가 할 수 있습니다

그것을보다 정확하게 만드는 것입니다 그리고 우리는 리소스 프레임 워크에 몇 가지 새로운 API를 추가했습니다 속성 값의 출처를 보자 의사 결정에 대한 더 많은 통찰력 그 과정은 다음과 같은 경우에 적용되었다 해당 속성 값에 도달합니다

그럼 Skia Picture에 대해 이야기 해 봅시다 Skia는 UI 툴킷의 기초가되는 2D 그래픽 라이브러리입니다 이것은 실제로 슬라이드에 맞도록 단순화 된보기입니다 하지만 그것은 그리기 명령의 목록입니다 더 일찍부터 우리 여행 카드 중의 1 개를 형성하는 것에 들어간다

우리가 그것을 보았다면 그림자, 둥근 사각형, 이미지, 텍스트 – 그 모든 것들을 자산과 함께 그것을 렌더링하는데 필요한 이미지 데이터, 폰트 데이터 등을 포함한다 우리는 Skia에서 이것을 기본적으로 얻습니다 매우 빠릅니다 실시간 미리보기를 수행 할 수 있기 때문에 이걸 몇 초에 한 번하십시오 그것은 일반적으로 매우 작습니다

그러나이 문제는 우리가 스위치를 확대하려면 여기를 클릭하십시오 그것은 텍스트, 둥근 사각형, 그리고 서클 슬라이더 스위치에 대한 약간의 이미지 그것들이 어떤 관점에서 왔는지는 모른다 그들은 명령을 내리는 것입니다 그리기 명령을 그룹화하는 방법이 필요했습니다

그들이 어떤 시각에서 왔는지에 따라 우리는 렌더링 노트 API를 보았습니다 두보기의 기초가되는 조직 트리입니다 그리고 drawables– 우리는 각각의 렌더링 노트에 고유 한 ID를 추가했습니다 그런 다음이 고유 한 ID를보기에 노출 시켰습니다

Skia 그림 자체에 주석을 달았습니다 여기서 각 렌더 노드는 그리기를 시작하고 멈 춥니 다 스튜디오 측에서 보기가 시작된 위치와 중단 된 위치를 확인하고 연결할 수 있습니다 이 3 개의 그리기 명령은 다시 스위치보기로 돌아갑니다 또한 우리는 시작과 중지가 있기 때문에, 우리는 멋진 중첩 된 프레임 워크를 가지고 있습니다

HTML – 우리가 볼 수있는 모든 도면 명령이 다시 있습니다 단순화 된이 카드보기를 만드는 데 들어갔다 같이 [? 오랫동안도?] 그들이 시작하고 멈추는 전망, 우리는 중첩을 해봅시다 부동산 검사를 어떻게 수정하는지 조금 이야기 해 봅시다 Joe의 관점에서 일찍 – 모든 것이 게터 이름이나 메소드 이름이었습니다

그건 우리가 반사를 사용했기 때문이었습니다 런타임시 뷰 인스턴스 내부의 속성 반사는 세계에서 가장 빠른 것이 아닙니다 특히 휴대 기기에서 매우 복잡한 앱의 경우 전체보기를 렌더링하는 데 최대 몇 초가 걸릴 수 있습니다 계층

그래서 우리는 다음과 같은 접근 방식을 들여다 보았습니다 모든 것을 직렬화하는 메서드가 있습니다 그것은 조금 부서지기 시작합니다 보기에 새 속성을 추가하면 업데이트되지 않습니다 우리는 주석 처리기에 추가했습니다

그것은 우리가 반사를 유연하게 유지할 수있게 해줍니다 우리를 제공했다 특수 효과를 추가하기 만하면됩니다 새 게터를 추가하면됩니다 사용자 정의에 대해 어떻게 보일지 살펴 보겠습니다

이는 사용자가 누구에게나 관련이 있기 때문에 볼 수 있습니다 곧 라이브러리보기를 빌드하십시오 우리는 컬러보기를했습니다 속성은 색이며 주석을 달았습니다 InspectableProperty

주석 처리기가 보이면 그것으로 우리에게 조금 더 많은 맥락이 생깁니다 우리가 이전에 얻은 것보다 훨씬 낫습니다 그래서 우리는 Kotlin에 있고 @ColorInt 주석을 볼 수 있습니다 정수형뿐만 아니라 우리는이 정수에 색을 채웠다는 것을 압니다 그리고 그것은 단지 수치가 아닙니다

재산의 이름이 있습니다 우리는 속성 ID에 대한 추론을하는 데 사용할 수 있습니다 그것을 부르는 것 물론 우리는 주석에 대한 속성을 사용하여 추론하기 그 자체 그래서이 코드 생성은 어떻게 생겼습니까? 이 객체는 이 견해와 나란히 앉을 것이다

그 중 하나가 어떻게 생겼는지 살펴 보겠습니다 이것은 검사 동반자입니다 그것은 Q를위한 새로운 API입니다 두 가지 목적이 있습니다 하나는 클래스가 주어진 경우의 목록을 정의합니다

여기에 그 클래스에 정의 된 속성이 있습니다 이 경우 색상을 정의했습니다 지도 색상에 대한 호출을 살펴보면, 색깔이기 때문에 거기에 유형이 있습니다 우리는 속성 이름을 가지고 있고 유추했습니다 ID의 속성 R

attr 이것은 또한 우리가 – 추론 된 속성 ID가없는 경우, 또는 당신이 하나를 공급했다면 우리는 그것을 거기에 넣을 것입니다 내가보기에 Studio를 가르치면, 여기에 내가 가지고있는 속성이 있습니다 여기에 그들의 속성 ID가 무엇인지, 이것은 우리가 그 부분을 가능하게합니다 코드 완성 기능으로 이동하십시오

다음 단계는 실제로 우리가 보기의 인스턴스가 있으면 속성을 읽고 싶습니다 다시 말하지만, 우리의 견해가 Kotlin에서 정의되고 자바를 사용하고 있기 때문에 – 이것이 생성 된 코드이기 때문에 – 우리는 viewgetColor를 호출한다 직접 호출한다 getter에게 반사가 필요 없습니다

매우 빠릅니다 이를 통해 뷰 계층의 실시간 업데이트를 수행 할 수 있습니다 Studio에서는 우리가 가지고 있지 않기 때문에 우리가 전에했던 모든 추가적인 오버 헤드 우리를 얻는 모든 것이 현재의 가치에 달려 있습니다 우리가 말할 수있는 것은 여기에 우리가 가지고있는이 사랑스러운 푸른 색 텍스트 색입니다

우리는 그것이 무엇인지에 관계없이 말할 수 있습니다 그것이 런타임에 설정되었는지 여부 viewsetColor를 호출했을 수도 있습니다 또는 자원에 설정되어있는 경우

그러나 대부분의 속성 값은 자원에서 설정되며, 그래서 우리는 그 사건을 돕고 싶었습니다 우리는이 경우에, 그것은 위젯에 정의되어 있습니다 리소스에 API를 추가하여, 나는이 가치를 얻었다 그게 어디서 왔는지 말해줘 Google은 해당 데이터를 추적하여 전체 리소스를 통해 저장합니다

뼈대 또한, 우리는 통찰력을 얻고 싶었습니다 스타일이 어떻게 영향을 미치는지 그래서 자원 프레임 워크가 해결 될 때 속성 값 – 어떤 스타일을 적용할지 결정해야합니다 의사 결정 트리를 가져 와서 API를 추가하여이를 나타냅니다

근본적으로 고려 된 스타일 목록입니다 그러나 결국 사용되거나 사용되지 않을 수 있습니다 해당 속성 값을 해석하는 동안 이 모든 문제는 일시적인 현상입니다 왜냐하면보기, 일단 팽창되면, 그들은 그들의 관계를 잊는다 리소스

일단 그들이 건설되면, 그들은 그들이 어디에서 온 것인지 기억하지 못한다 개발자 옵션을 추가했습니다 속성 ID의 맵과, 그들이 왔던 곳, 스타일 해상도는보기의 테마에서 스택됩니다 그래서 스튜디오 – 준비가되었거나 관심이있을 때 재산으로 더 자세히 조사하고 싶어요 돌아와

보기로하고,보기에게 묻는다, 헤이, 어디에서 당신의 속성 값이 왔는지, 그들의 스타일은 무엇입니까? Q가 가진 모든 것을 꽤 많이 감쌌다 바딤과 제롬을 환영하고 싶습니다 우리를 감싸는 무대에 [박수 갈채] VADIM CAEN : 전체 툴 체인에 대해 들었습니다

그리고 집에 돌아갈 때 그것을 사용하기를 바랍니다 레이아웃 편집기로 레이아웃을 작성하고, 우리가 추가 한 새로운 기능 네비게이션 편집기로 네비게이션 만들기, 자원 관리자로 자원 관리, 새로운 레이아웃 검사기로 검사를 수행하십시오 올해 I / O에는 Android Studio 협상이 가득합니다 바로 뒤에 – 원형 극장에서 – 당신은 안드로이드 개발의 새로운 기능을 볼 수 있습니다

Tor 및 [? Ja ?] 그렇다면 당신은 2 단계의 Android 빌드 시스템의 새로운 기능 그것은 다른 쪽 위에있다 그것은 오늘 오후에 시작한다 여기에 빨간 점이 거의 없습니다 Android Studio 팁 및 트릭 제공 선별 된 엔지니어 및 프로젝트 매니저에 의해, 2 단계

마지막으로 내일, ConstraintLayout의 새로운 기능 Nicolas와 John의 모션 레이아웃 우리는 여기서 밖에 질문을 할 것입니다 와 주셔서 대단히 감사합니다 내년에 봐 [음악 재생]

#4 – Reset password in Firebase Authentication in Android using Android Studio – Kotlin

얘들 아 CodeAndroid의 Vignesh 이 비디오에서는 "Firebase에서 잊어 버린 비밀번호를 재설정하는 방법" 이전 자습서에서는 사용자 생성 방법 자격증 명으로 로그인 암호 변경 이제 보게 될 것이다 이전 암호를 몰라도 암호를 다시 설정하는 방법 사용자가 자신의 암호를 모른다면 그럼 그는 로그인 할 수 없다

이때 비밀번호를 재설정하려고합니다 로그인 버튼 아래에 암호 분실 버튼 추가하기 버튼의 텍스트를 "비밀번호 분실"로 설정 나는 모든 텍스트를 대문자로하고 싶지 않다 그래서 textAllCaps를 false로 설정하십시오 우리는 화면의 전체 너비에 걸쳐 버튼 적용 범위를 원하지 않습니다 그래서 너비를 "wrap_content" 또한, 우리는 화면의 오른쪽에있는 버튼을 원한다

따라서 layout_gravity를 끝으로 설정하십시오 마지막으로 코드를 재정렬하고 ID를 다음과 같이 설정합니다 "btn_forgot_password" 또한 16dp로 martingTop을 추가하십시오 이 버튼을 클릭하면 대화 상자를 표시하고 싶습니다 그것을 사용하여 사용자의 이메일 주소를 얻고 재설정 된 비밀번호 메일을 보냅니다

단추에 대한 청취자를 클릭하도록 설정 이 대화 상자에는 레이아웃 파일이 필요합니다 따라서 "dialog_forgot_password"라는 새로운 레이아웃 파일을 만드는 것입니다 레이아웃 파일에는 하나의 EditText 만 있습니다 EditText로 루트 요소를 변경했습니다 중간에있는 EditText에서는보기를 원하지 않습니다

그래서 같은 줄에서 끝내기 높이를 "wrap_content"로 변경하고 id를 "et_username"으로 지정합니다 여백 시작 및 종료를 16dp로 추가 이제이 레이아웃 파일이 대화 상자로 표시됩니다 AlertDialogBuilder 객체를 생성하려면 빌더라는 값에 저장 대화 상자의 제목을 "비밀번호 찾기"로 설정하십시오

레이아웃 layoutInflater를 사용하여 레이아웃 파일 팽창시키기 보기라는 값에 저장 그런 다음 setView 메소드를 사용하여 대화 상자보기로보기를 설정합니다 대화 상자에는 두 개의 버튼이 필요합니다 양수 버튼과 음수 버튼 따라서 빌더에 대해 긍정적 인 버튼을 설정하고 텍스트를 '재설정'으로 전달하십시오 네거티브 버튼에 복사하여 텍스트를 닫기로 변경 양수 버튼을 클릭하면 EditText에서 값을 읽어야합니다 따라서 뷰 객체에서 findViewById를 호출하여 EditText의 객체를 생성합니다

여기 전자 메일 주소의 유효성을 검사해야합니다 그래서 forgotPassword라는 함수를 생성합니다 해당 메소드가 EditText를 매개 변수로 전달하는 경우 메소드 내에서 유효성 검사를 할 수 있도록 전자 메일 유효성 검사를 복사하고 여기에 붙여 넣습니다 우리는 검증을 위해 "username"을 사용할 필요가있다 오류의 경우 오류를 표시 할 필요가 없습니다

그래서 나는 그것들을 제거하고있다 사용자 이름이 유효하면 재설정 된 비밀번호 메일을 보내야합니다 Firebase 인증에서 "비밀번호 재설정 메일 보내기"부분을 볼 수 있습니다 그래서이 코드를 복사하여 여기에 붙여 넣습니다 emailAddress의 경우 이메일 주소를 전달해야합니다

사용자 이름에 입력 된 EditText 작업이 성공하면 "이메일 전송 됨"으로 표시됩니다 마지막으로 빌더 객체에서 show 메소드 호출 대화 상자가 사용자에게 표시됩니다 이제 응용 프로그램을 시작합니다 응용 프로그램의 DashboardActivity로 이동하는 것을 볼 수 있습니다 tho LoginActivity (으)로 이동하려면 응용 프로그램을 제거하고 다시 시작합니다

잊어 버린 암호 버튼을 볼 수 있습니다 버튼을 클릭하면 대화 상자가 나타납니다 이메일 주소를 알려 드리겠습니다 '재설정'버튼을 클릭하면 축배가 '이메일 전송 됨'으로 표시됩니다 이메일을 열어 보겠습니다

"비밀번호 재설정"에 대한 메일을 볼 수 있습니다 메일을 열고 비밀번호 재설정 링크를 클릭하십시오 내 새 암호를 "123456" 이제 자격 증명으로 로그인하려고합니다 우리가 우리의 어플리케이션에 로그인하는 것을 볼 수 있습니다 이렇게하면 사용자 비밀번호를 잊어 버렸을 때 재설정 할 수 있습니다

이 비디오 녀석을위한 전부입니다 이 비디오가 마음에 드시면 엄지 손가락을주세요 나를 후원하고 싶다면에서 후원자가되어 그렇게 할 수 있습니다 wwwpatreon

com/CodeAndroid 너가 좋아하길 바래 내 다음 비디오에서 뵙겠습니다 좋은 하루 되세요

Multiple Items in Listview (RecyclerView) in Android Studio – Part 5

안녕 모두, 내 이름은 Oum Saokosal입니다 우리는 안드로이드 RecyclerView에서 우리의 교훈을 계속할 것입니다

우리는 안드로이드 RecyclerView MySQL 데이터베이스에 연결에 대해 얘기하고 우리는 Volley와 PHP를 거친 다음 PHP가 MySQL에 연결하고 이전 비디오, 우리는 Volley와 Part 1, Part 2, Part 3, 우리는 RecyclerView에 대해 이야기했습니다 자, 이제부터 PHP에서 데이터를 얻는 방법에 대해 계속하겠습니다 사실, 우리는 PHP와 MySQL의 코드에 대해 조금 이야기했습니다 이것은 내 YouTube 채널, Facebook, Twitter 및 github입니다 좋아요, 그래서 이것은 우리가 이야기 할 부분입니다

그리고 이것은, 당신도 마찬가지입니다 웹 서버로 이동하여 데이터베이스 루프백에 연결하고 다시 보내면 우리는 Volley에 대해 이야기합니다 이미 알았습니다이 동영상에서 StringRequest에 대해 이야기하겠습니다 좋아, 그리고 마지막으로 할 일은 JSON 텍스트를 ArrayList로 변환하는 것이다

자, 안드로이드로 돌아가 보자 우리는 MySingleton을 가지고 있습니다 좋아요이 클래스는 요청보기를 여기에서 얻을 수있는 클래스입니다 전장에서 지휘관 한 명만 갖고 싶기 때문에

우리는 많은 지휘관을 갖고 싶지 않으므로 이제 우리 데이터베이스를 이렇게 확인해 보겠습니다 그리고 데이터베이스를 보자 이것은 JSON 일 뿐이며 고객 / 제품 내부의 PHP에서 가져 왔습니다 Part 4에있는 이전 부분으로 돌아 가라 그러면 소스 코드를 다운로드 할 수있다

이전에, 아마도 나는 아직 그것을 지퍼로 열지 않았을 것입니다 그래서 계속하기 전에 그것을 할 수있는 좋은시기 일 수 있습니다 괜찮아 나는 그 일을 잊어 버렸다 그래서 복사 만하고, 데이터베이스 일 수도 있고, 고객과 수출 일 수도있다

나는 그 일을 잊어 버렸으므로 지금은 그것을 볼 좋은 시간이다 파일이 많이 있지만, 그 중 일부만 있으면됩니다 알겠습니다 그러면 우리는 그것을 넣을 것입니다 여기에서는 반드시 열어서 웹 서버의 적절한 폴더에 넣으십시오

괜찮아 당신은 그것을 가져 오는 법을 알고 있습니다, 그리고 이것이 코드이고 당신이 원한다면 그것을 바꿀 필요가 있습니다 데이터베이스 이름, 알았어, 암호 또는 기타를 변경하려면, 이것은 전형적인 코드 일뿐입니다 데이터를 읽을 수 있습니다 나는 그것을 조금 설명 할 것이다 그러나 그렇게 어렵지는 않다

단지 그것을 따라 가라 좋아요, 그리고 나서 압축해야합니다 압축하십시오 좋아, 이걸 보니 업로드 할게, 알았어 이제 우리 수업을 계속하자

우리가 사용할 데이터베이스는 고객이고 테이블은 제품이므로 우리는 테이블을 나타내는 클래스를 만들거나 다른 클래스를 만들 것입니다 클래스, 나는 그것을 제품이라고 부르겠다 알았어 직렬화 가능하며 현재 공용 클래스 Product는 Serializable { public int pid; public string name; public int qty; 공개 더블 가격; } 플로트가 그런 식으로 이루어지기 때문에 플로트를 사용해서는 안됩니다 원하지 않습니다

그런 식으로 사용하십시오 따라서 double을 사용하십시오 공용 문자열 image_url; user_ID를 사용하면됩니다 사실, 당신이 잠그면, A 사용자, 그 다음엔 사용자 A의 일부 항목을 표시하려고하지만이 자습서에서는 그렇게하지 않을 것이므로 당신이 그것을 사용하든 원하지 않든, 실제로는 사용하지 않을 것입니다 그런 식으로 넣어

자, 이제 ItemAdapter가 item을위한 것이므로 여기서는 사용하지 않을 것입니다 다른 하나를 만들겠습니다 ProductAdapter입니다 코드가 매우 비슷하기 때문에 그냥 코드를 복사하면, 여기에서 올거야 그럼 내가 바꿀거야, 그래서 이건 ProductAdapter와이 제품은 여기에 동일해야합니다

예! 그런 다음 ViewHolder가 필요합니다 이 네 가지 항목에서 그것은 제품이므로이 제품입니다 나는 이것도 바꿀 것입니다이 것 우리는 이것을 바꿀 것입니다

먼저 삭제하겠습니다 혼동하고 싶지 않습니다 이건 어쩌면 당신 ______과 그럼 또 다른 레이아웃이 필요합니다 레이아웃이 이미 완료되었으므로 복사하여 붙여 넣습니다 당신이 이해하지 못하는 경우를 대비해서, 그 상황 뒤에있는 상황을 알기를 바랍니다

파트 1, 2, 3을 볼 시간이 필요합니다 왜냐하면 나는 같은 시간을 낭비하고 싶지 않기 때문입니다 이 비디오에서 다시 한 번, 이제 우리는 이미 8 분 안에 있습니다 그래서,이 하나는 CardView, 내가 제품으로 변경됩니다 그리고 어쩌면 내가 이름을 사용하려면, 가격은 품질이 그것을 필요로하지 않기 때문에, 우리 주식의 양은 필수적이며, 그러나 단지 이름이 붙여지고, 상금과 이미지가 그 것이다 이건 이미지이고 괜찮아요

아마 다른 이름이 필요할 것입니다이 이름은 이름입니다 네,이게 맨 위에 있거나 뭔가있을 거예요 이전 것을 확인하겠습니다 어쩌면, 우리는 이것을 시도 할 것입니다

예, 예, 괜찮습니다, 예! 이걸 제가 말하고 싶은 것은 이미지뿐만 아니라 나는 그것을 끌고 싶다 ' 끔찍한 음! 좋지 않아 알았어, 내가 해줄 께

나는 그것을 지우고 싶다면 그냥 지우십시오 좋아, 이제 너는 300을 가지려고하고 나면 이미지에서 가지고 싶다 그래서 소스를 넣는다 여기서 안드로이드 drawable / pp는 여기에있는 이미지이고 scaleType은 centerCrop입니다 좋아, 이건 200이 될거고 우리는 또 다른 _____을 쓸거야, 그럴 수있어? 예, 여기가 텍스트 이름이고 다른 가격을 원합니다

이제 자동으로 추가 된 속성과 같은 항목이 있기 때문에 더 좋습니다 나는 그것이 무엇인지 잊었다 그래서 이름을 바꾸어 봅시다 IvImageURL이 될거야, 맞아! 이 하나는 tvName과 tvPrice입니다 우리는 이것을 바꿀 것이기 때문에 아래 레이아웃이이 것입니다

이건 같은,이, 그리고 한 가지 더, 그것은 항상 색상, 문제는 기본 색상이 표시되지 않으므로 여기서 색상을 사용하겠습니다 만약 당신이 그것을 사용하고 싶다면, 당신도 알다시피, [우물 우물쭈물 소리]처럼 16 진수 색상으로도 괜찮습니다 이제 하나의 이미지와 두 개의 텍스트 상자 유형보기가 있습니다 자, 이제 우리는 ProductViewHolder를 만들려고합니다

그래서 CardView 이제는 cvProduct 및 IvImageURL, tvName 및 TV 가격 알았어 그래서 이것은 제품에 대한 ViewHolder입니다 그런 다음 항목이 아닌 여기에 제품이 필요합니다 그래서 여기에도 제품이 필요합니다

좋습니다 만약 굴절시키고 싶다면 그냥 이런 제품으로 바꾸십시오 이건 아직 바뀌지 않았어, 알았어! 이제 새로운 레이아웃을 여기에 부풀려 야합니다 product_cardview_layout입니다 우리가 방금 만든거야, 알았어

이제는 이걸 제외하고는 괜찮아 보입니다 우리는 뭔가를 여기서 묶을거야 그래서 처음에는 텍스트가 더 낫다 그래서 우리는 여기서 제품을 얻을 것입니다 그리고 그것은 무엇입니까? 여기에있는 제품들과 어떤 위치에서, 이 제품 및 홀더 다음 텍스트를 이름에 넣을 수 SetText 이런, 제품 및 이름

한가지 더 가격은이 가격은하지만 가격은 두 배입니다 맞아요 여기에 문자열, 그리고 다시 피카소 알았어 Picasso

width (context) load (productimage_url) placeholder (Rdrawable

pp) error (androidRdrawablestat_notify_error)

into (holderivImgUrl); ViewHolder 측면입니다 좋습니다 이제 좋습니다 자, 이제 싱글 톤, 제품 클래스 그리고이 하나의 아이템을 가지고 있습니다

그러나 우리는 그렇지 않습니다 데이터를 가지고있어, 알았어, 우리는 더 이상 아이템을 사용하지 않을 것이다 더 나은, 그리고이 하나 이제 나는 use을 사용할 것이다 ArrayList <product> ProductList = getDataFromServer (); 우리가 할 수 있을까요? 나는 우리가 싱글 톤을 사용할 것이기 때문에 우리가 할 수 있다고 생각하지 않는다, 아마 우리는 그것을 조금해야만한다

나중에,하지만 이걸 끝내자 이 항목은 더 이상 항목이 아닙니다 그게 제품이야, 알았어 이제 우리가 얻고 자하는 데이터는 여기에서 나온 것이 아니고, JSON의 웹에서 온 것입니다 그런 다음 여기에서 발리 (Volley)를 사용할 필요가 있습니다

그러면 우리가 서버에서 얻을 수있는 것입니다 이제 RecyclerView는 괜찮아 보이지만 Volley를 사용해야하므로 호출해야합니다 여기에 StringRequest가 있고 StringRequest에는 네 개의 매개 변수가 있음을 기억하자 메소드, URL, 응답 및 오류 (좋아, 새로운 StringRequest, 요청 방법 및 사용자) 단지 데이터를 얻고 싶습니다 좋아, URL

그래서 지금은 Google을 테스트하고 테스트하기가 쉽기 때문에 Google에서 테스트하고 싶습니다 여기서 �S forget을 잊어서는 안되며, 지역 호스트에서 ���도 괜찮습니다 이제 두 개 더 필요합니다이 하나가 응답이고 다른 하나가 오류입니다 알았습니다

당신은 여기에서 지저분해질 것입니다 그래서 당신은이 ok, 4 개의 세미콜론을 좋아할 것입니다 그리고 아마도 이것과 같이하는 것이 좋습니다 CtrL + Space를 입력하십시오 우리는 제안으로 볼 것입니다

이것은 데이터 리스너 응답이며이 중 하나 인 CtrL + Space, 오류 리스너입니다 따라서 여기에 오류가 발생할 때마다 오류가 표시됩니다 오류가 발생하지 않는 경우를 대비해서, 너는 아무것도 볼 수 없을거야 오류가 발생하면 오류가 종료되는 것처럼 테스트해야하므로 그 의미는 약간의 오류가 있으므로 오류 결과를 _____에 표시하려면 오류를 닫는 것이 좋습니다 나 한테 뭔가 잘못된 것처럼 말할 수있어, 알았어

이런 식으로 사용자를 놀라게하고 싶지는 않지만, 우리는 로그하고 볼 필요가 있습니다 오류, 그래서 우리는 태그, 오류가 있어야합니다, 당신은 여기에 메시지를, 그리고 여기에 태그를 대개 여기서 이름을 사용하십시오 그래서 최종 문자열 TAG = �MainActivity�; 이런, 괜찮아! 자, 이제 실제 코드를 사용하겠다는 응답을 얻고 싶습니다

로그이므로 결과는 여기서 ______로 표시되므로 데이터를 가져올 지 알 수 있습니다 Google에서 제공했는지 여부 좋아,이 중 하나는 사용할 수 없으므로 이제 실행 해 보겠습니다 로컬 호스트를 테스트하는 것이 에뮬레이터에서 가져 오는 것이 좋습니다 하지만 지금은 먼저 Google을 테스트 해 보도록하겠습니다

잊어 버리면 잊지 않을 것입니다 오류가있다 Ok, 오! 나는 이것을 잊었다

방금 StringRequest를 호출했지만 Singleton에 추가하지 않았습니다 Singleton은 현장에서 지휘관과 같다고 생각합니다 이전 비디오에서 설명했습니다 이것을 사용할 수는 있지만 사용하는 것이 좋습니다 그것과 같은 ApplicationContext는 큐를 추가하고 여기에 StringRequest를 추가한다

한 번 더 테스트를 한 후 여기서 내부 호스트를 테스트 할 것입니다 이전 비디오에서 말했던 것처럼 다음과 같은 두 가지 공통적 인 문제가 나타납니다 1 금지 된 사용 권한 2

JSON malfom 이 문제는 많은 문제를 일으킬 수 있으므로 여기에서 연결할 수 있는지 확인하십시오 이제 구글을 보자 이제 구글을 볼 수있다 예! 우리는 그것을 볼 수 있습니다

여기 아래에 있습니다 찾을 수 없다면 MainActivity를 입력하십시오 태그를 사용했기 때문입니다 네, 수업의 이름으로 태그를 볼 수 있습니다 다음은 Google입니다

이제 인터넷에 연결할 수 있음을 의미합니다 이제는 로컬 호스트를 테스트하는 좋은 시간이고 로컬 호스트에는 's'및 또한이 같은 로컬 호스트 말할 수 없다! 별칭 1003

2를 넣어야합니다 나 같은 동작이 필요한 경우 숫자 10032를 사용해야하지만 u가 실행되는 경우 위의 옵션이있는 것처럼 숫자 10

022와 같이 사용할 수 있습니다 if BlueStacks를 사용하고 100

22도 사용하십시오 예를 들어 현재 포트 번호가 80 인 경우 다른 포트를 사용하는 경우 여기에 열 다음에 전체 URL의 경로를 지정해야합니다 이런 식으로 복사하여 붙여 넣는 것이 좋습니다하지만 여기서는 1 번부터 테스트해야합니다

당신은 을 입력해야합니다 좋아, 테스트 해보자 내가 실행할 수 있는지 없는지 설명 할거야

자, 이제 JSON을 여기에서 얻을 수 있습니다 그러나 언젠가는 이것을 가지고 있지 않을 것입니다 이걸 보게되면, 행운을 빈다 그러나 그렇지 않다면, 돌아가서 ''라고 타이핑해야한다 과 나는 너를 잘 이해할 수 있기 때문에 너희들 대부분이 나 같은 행운이되지 않을 것이다

그리고 나는 항상 그렇게 해 나는 그것을 고치는 법을 알고 있지만, 당신을 위해, 나는이 문제를 계속해서 반복 할 것이라고 생각합니다 다시 한 번 질문을 많이 했으므로 이제 어떻게 해결할 수 있는지 보여 드리겠습니다 YouTube 시청자 따라서 http를 입력해야합니다

좋아요 다음과 같이 입력 할 수 없습니다 Google은 사용자가 무언가를 입력 할 때 여전히 필요로하는 것처럼 입력하므로 http, 1003

2 및 ENTER를 입력하십시오 이런 것을 볼 수 있습니까? 좋아, 그렇지 않으면 구성 및 구성 파일로 이동하여 수정해야합니다 여기서도 허가를 변경하십시오 모두가 당연한 것으로 요구하십시오 임무가 거부 된 것처럼 보이면, 당신은 모든 부여 된 것을 요구하기 위해 변화합니다

좋아, 좋아 한 가지 더, JASON malform은 일반적으로 notepad ++입니다 그것은 당신이 여기에서 볼 때, 당신은 무언가를 앞에 볼 것입니다 두 개의 UTF, UTF-8이 있지만 다른 하나는 BOM이없는 UTF-8입니다 그래서 메모장 + + 및 다른 도구는 일반적으로이 서식이 있으므로 변경해야합니다

UTF-8로 오케이 메모장 + + 특히 당신은 메뉴에 가서 좋아해요 그것을 작동시키고 다른 텍스트 편집기를 사용한다면 스스로 처리해야합니다 어떤 텍스트 편집기를 사용하고 있는지 모르겠다 문제가 있다면, 이 비디오의 아래에, 나는 당신에게 말할 것입니다

자, 이제 텍스트를 얻었습니다 JSON을 가지고 있습니다 이제 JSON 텍스트를 변환하고 싶습니다 좋아, ArrayList에 마지막 부분 그래서 저는 이것을위한 도서관을 가지고 있습니다

직접 변환하려는 경우 라이브러리를 사용할 수 있습니다 이렇게 githubcom/kosalgeek에 가보십시오 그러면 KGJasonConverter에 가보겠습니다 나는 PhtoUtil과 같은 좋은 라이브러리를 가지고있다

FileCacher가있다 asynctask 1과 2 (MD5)에 대한 것이지만, 우리는 KGJasonConverter를 사용할 것입니다 당신이해야 할 일은 그것을 다운로드하고 GSON을 다운로드하는 것입니다 그래서 오른쪽 클릭을하십시오 그리고 나서 내 것을 다운로드하십시오, 그래서 그것을 다운로드하고, 그 재료를 변환하는 방법, 괜찮아

그래서, 당신은 GSON이 필요합니다 그리고 아마도 당신도 GRADLE을 사용할 수 있습니다 그러나 나는 잊었습니다 그것은 당신이 그것을 찾을 수 없다면, 단지 GSON을 다운로드 할 수 있습니다, 그 벌금, 그냥 다운로드, 알았어

그래서 당신은 이것을 필요로하므로, 당신도 이것을 필요로합니다 어디 있니? 맥 오 맥! 못 찾겠 어 어쨌든, 하나씩 복사하고 프로젝트로 가서 당신은 여기로, 당신은 프로젝트 파일로 이동하십시오 당신이 그것을 볼 수 없다면, 여기를 클릭하십시오, 프로젝트 파일 및 당신은 응용 프로그램과 libs에 가서 오른쪽 클릭 붙여 넣으세요, 알았어요 지금 라이브러리를 실행하고 추가하면 GSON도 필요합니다

이제 인덱싱을하고 있어요 건물을 통과 할 수 없기 때문에 조금 기다려야했습니다 비트 좋아, 이제 지나쳤다 오른쪽 다리와 라이브러리를 추가하십시오

이제 안드로이드로 돌아갈 수 있습니다 여기에서 Gradle을 다시 확인할 수 있습니다 이제는 컴파일러에서의 화재도 볼 수 있습니다 이제 내 라이브러리를 사용할 준비가되었습니다 여기에서 응답 내에서이 라이브러리를 사용할 것입니다

왜냐하면 여기가 하나의 ______ 방법과 같기 때문에, 당신이해야 할 일, 당신이 아는 모든 것 방법 안에서 수행해야하는 작업을 원한다면 당신은 데이터를 얻고 싶습니다, 당신은 얻을 수 없습니다, 당신은 ok 안에 들어가야 만합니다 파트너 옵저버를 안다면 다른 파트너를 만들 수 있습니다 인터페이스가 있지만, 실제로는 당신을 위해 일할 것입니다하지만 그걸 안으로하십시오, 알았습니다 여기에는 아주 작은 것이있을 것입니다

여기에 그것을 사용하려면 두 가지 방법이 있습니다 괜찮습니다하지만 바깥 쪽을 사용하려면, 괜찮아요, 그냥 이렇게 자르고 이것으로 바꾸세요 지금은 괜찮아요 그리고 그것은 classier를 구현하는 것과 같습니다

이런 식으로 밖에 좋은 방법이있어, 알았어 그리고 너는 밖에서 뭔가 쓸 수있어 하지만 당신이 사용하기를 원하지만 대부분 사람들은 그것은, 그러나 당신이 5를 따르는 것이 좋은 습관입니다 어쨌든 이제 JSON을 얻었으므로 변환 할 코드는 코드 한 줄에 불과합니다 예! 그냥 복사 해

알았어 그게 바로 복사해서 지금은 여기에서 바꾸고 싶습니다 그래서 이것은 제품 라인입니다 우리는 제품에 대해 이야기하고 있으며 이것은 다시 제품입니다 이제 JSON이 이것입니다, 알았습니다

이것은 ProductList입니다 이전 비디오에서 우리는 더미에서 데이터를 생성하는 것처럼 사용했습니다 이제 베타 버전이므로 지금 전화 해주세요 그래서이 코드는 외부에서 사용되었으므로 이제 여기에서 메서드를 사용하려고합니다 이제 ProductList가 JSON에서 가져오고 데이터를 넣습니다

ProductAdapter에 추가하십시오 사실, 여기에 ProductAdapter가 이미 생성되었으므로 지금은 좋습니다 여기에 데이터가 표시됩니다 문제는 이제 이미지를 볼 때 기억합니다 이미지 이름의 마지막 부분 만 넣습니다

괜찮아 그래서 이제 우리는 세 가지 ______를 갖습니다 왜냐하면 그 이미지는 URL 형식으로 이미지는 costumer 안에 있습니다 좋아요 고객과 이미지는 괜찮습니다

그래서 우리는 이것을 복사 할 것입니다, 좋아요, 여기, 여기, 여기에 그것을 사용할 것입니다 전체 URL과 실제 프로젝트에서 이와 같은 작업을 수행하는 것이 좋습니다 이 URL을 실제 URL로 변경하십시오 내 웹 사이트가 코사크 인 경우, 괜찮아 하지만 지금은 지역의 사람들을 위해서, 그냥 이렇게하고 우리가 이것 전에 슬래쉬하지 않는다는 것을 기억하십시오

우리는 여기에 슬래쉬를 추가 할 것이지만이 같은 공간과 제품은 여기에 없습니다 좋아, 좋아 보인다 이제, 여기에 새로운 LinearLayout과 LayoutManager가 있습니다 좋아요, 여기 안쪽에 어댑터를 설치하려고합니다 우리는 그것을 호출 할 것입니다

승인 좋아 보인다, 나는 그것이 지금 좋을 것이기를 바란다 그래서 여기의 이미지, 예! 제품 CardView 좋아,이 하나의 컨텍스트, 제품, 제품, 알았어! IvImageURL 및 tvName 및 tvPrice 좋아, 좋아 보인다, 달려 가자 서버가 실행 중인지 확인하십시오

와우! 그것은 매우 오랜 시간이 걸립니다 멈추게 해줘 알았지? 이것은 우리가 지금 데이터베이스 서버에서 얻은 데이터입니다 확인해 봅시다이 사진은 그림 1, 선택 3은 선택하지 않습니다

ID # 3이 처음입니다 일부 사진이 삭제되었으므로 그림 3, 예이 사진이 있습니다 오, 안돼, 안돼, 우리가 거꾸로하고, 잊어 버렸어 그래서 그것을 뒤집었고, 그래서 그것은 정상에서 11 번째가 될거야

하단에 # 3이 있으므로 이미지 # 6이 여기에 있습니다 네! 올바른 것입니까! 흠! 흥미 롭다 왜 이걸 가지고 있니, # 7? 보자 이건 12입니다, 알았어 맞아

첫 번째와 # 6, 예, 크기를 변경할 수 있습니다 패딩을 변경할 수 있습니다 너 괜찮아 그래서, 조금 요약 해 보겠습니다 여기에는 많은 단계가 있습니다

이것은 전체 단계이지만 RecyclerView의 일부일뿐입니다 여기 데이터가 있으면 여기서도 많은 단계가 필요할 것입니다 그렇습니다 세 가지 요청에서 네 개의 매개 변수, 알겠습니다 그러면 데이터를 얻은 다음 변환합니다

데이터 및이 라이브러리는 방금 사용했습니다 너는 너 자신을 쓸 수있다 그것은 거대한 일이 될 것입니다 여기 이전 부분이 있습니다 아시다시피, 여기가 새로운 것이고, Volley입니다

웹에서 가져온 데이터를 다시 검색 할 수 있습니다 URL이 잘못되었다고 가정 해 봅시다이 중 하나가 없으면 시도해보십시오 우리가 끝내기 전에 한가지 빨리 해보고 오류가 있는지 보자 그리고 지금 당신은 그것을 막을 것입니다

그래서 이것은 하나의 실수입니다 왜냐하면 이것은 마사지이기 때문에 두 개의 문자열을 넣어야합니다 다시 실행하십시오 현재 작동하고 있기 때문에 어떤 문제도 발생하지 않기 때문에 어쩌면 작동하지 않는 앱 일 수도 있습니다 내가 어떻게 그럴 수 있니, 어떻게하면 돼, 너도 알다시피, 너는 아마도 불평 할거야

그것에 대해 좋아, 이제 또 다른 유형, 다른 유형을 보자, ok 75 여기, 오류가 아닙니다 왜 당신은 그것에 대해 불평하고 있습니까, 아니면 언젠가 당신이 처음부터 그것을 다시해야 할 때가 있습니다 너도 알다시피, 그것은 이전의 것과 계속 같다 내가 다시 실행하게 해줘

좋아, 뭔가 잘못 됐어, 이제 서버 오류를 보자, 알았어 다시 한번 보자 우리가 다른 것을 얻을 수 있고 이렇게 메시지를 얻을 수 있다면 그렇게 할 수 있을까? 오, 여기 메시지를받을 수 없으니 괜찮습니다 그냥 이렇게하세요 괜찮습니다

그것을 아는 것이 좋다, 너는 알고있다 좋아, 이제 Android Volley에 대해 자세히 알고 싶다면 다음과 같이 제안하고 싶습니다 내 YouTube 채널로 이동하면 Android Volley에 대한 많은 동영상을 볼 수 있습니다 이 재생 목록에서 처음부터 시작합니다 예를 들어, 설정 및 방법 에서처럼 세 가지 요청 인 JSON을 사용하고, 업데이트하고 싶습니다

데이터 오류를 삽입합니다 Android Volley와 함께 할 수있는 다른 것들도 있습니다 마지막으로 잊지 말고 내 채널을 구독하고 엄지 손가락을주세요 만약 의견이 있으시면 아래에 의견을 남겨주십시오 당분간 나는 작별 인사를하고 싶습니다

그리고 나는 당신을 다음 번에 보게 될 것입니다 이미지 이름의 마지막 부분 만 알았어 이제 이미지가 URL 형식이되기 때문에 세 개의 ______가 있습니다 이미지는 costumer 안에 있습니다 좋아요

고객과 이미지는 괜찮습니다 그래서 우리는 이것을 복사 할 것입니다, 좋아요, 여기, 여기, 여기에 그것을 사용할 것입니다 전체 URL과 실제 프로젝트에서 이와 같은 작업을 수행하는 것이 좋습니다 이 URL을 실제 URL로 변경하십시오 내 웹 사이트가 코사크 인 경우, 괜찮아

하지만 지금은 지역의 사람들을 위해서, 그냥 이렇게하고 우리가 이것 전에 슬래쉬하지 않는다는 것을 기억하십시오 우리는 여기에 슬래쉬를 추가 할 것이지만이 같은 공간과 제품은 여기에 없습니다 좋아, 좋아 보인다 이제, 여기에 새로운 LinearLayout과 LayoutManager가 있습니다 좋아요, 여기 안쪽에 어댑터를 설치하려고합니다

우리는 그것을 호출 할 것입니다 승인 좋아 보인다, 나는 그것이 지금 좋을 것이기를 바란다 그래서 여기의 이미지, 예! 제품 CardView 좋아,이 하나의 컨텍스트, 제품, 제품, 알았어! IvImageURL 및 tvName 및 tvPrice 알았어, 좋아 보인다

서버가 실행 중인지 확인하십시오 와우! 그것은 매우 오랜 시간이 걸립니다 멈추게 해줘 알았지? 이것은 우리가 지금 데이터베이스 서버에서 얻은 데이터입니다 확인해 봅시다

이 사진은 그림 1, 선택 3은 선택하지 않습니다 ID # 3이 처음입니다 일부 사진이 삭제되었으므로 그림 3, 예이 사진이 있습니다 오, 안돼, 안돼, 우리가 거꾸로하고, 잊어 버렸어

그래서 그것을 뒤집었고, 그래서 그것은 정상에서 11 번째가 될거야 하단에 # 3이 있으므로 이미지 # 6이 여기에 있습니다 네! 올바른 것입니까! 흠! 왜 이걸 가지고 있니, # 7? 어디 보자 이건 12입니다, 알았어 맞아

첫 번째와 # 6, 예, 크기를 변경할 수 있습니다 패딩을 변경할 수 있습니다 너 괜찮아 그래서, 조금 요약 해 보겠습니다 여기에는 많은 단계가 있습니다

이것은 전체 단계이지만 RecyclerView의 일부일뿐입니다 여기 데이터가 있으면 여기서도 많은 단계가 필요할 것입니다 그렇습니다 세 가지 요청에서 네 개의 매개 변수, 알겠습니다 그러면 데이터를 얻은 다음 변환합니다

데이터 및이 라이브러리는 방금 사용했습니다 너는 너 자신을 쓸 수있다 그것은 거대한 일이 될 것입니다 여기 이전 부분이 있습니다 아시다시피, 여기가 새로운 것이고, Volley입니다

웹에서 가져온 데이터를 다시 검색 할 수 있습니다 URL이 잘못되었다고 가정 해 봅시다이 중 하나가 없으면 시도해보십시오 우리가 끝내기 전에 한가지 빨리 해보고 오류가 있는지 보자 그리고 지금 당신은 그것을 막을 것입니다

그래서 이것은 하나의 실수입니다 왜냐하면 이것은 마사지이기 때문에 두 개의 문자열을 넣어야합니다 다시 실행하십시오 현재 작동하고 있기 때문에 어떤 문제도 발생하지 않기 때문에 어쩌면 작동하지 않는 앱 일 수도 있습니다 내가 어떻게 그럴 수 있니, 어떻게하면 돼, 너도 알다시피, 너는 아마도 불평 할거야

그것에 대해 좋아, 이제 또 다른 유형, 다른 유형을 보자, ok 75 여기, 오류가 아닙니다 왜 당신은 그것에 대해 불평하고 있습니까, 아니면 언젠가 당신이 처음부터 그것을 다시해야 할 때가 있습니다 너도 알다시피, 그것은 이전의 것과 계속 같다 내가 다시 실행하게 해줘

좋아, 뭔가 잘못 됐어, 이제 서버 오류를 보자, 알았어 다시 한번 보자 우리가 다른 것을 얻을 수 있고 이렇게 메시지를 얻을 수 있다면 그렇게 할 수 있을까? 오, 여기 메시지를받을 수 없으니 괜찮습니다 그냥 이렇게하세요 괜찮습니다

그걸 알면 반가워요 좋아, 이제 Android Volley에 대해 자세히 알고 싶다면 다음과 같이 제안하고 싶습니다 내 YouTube 채널로 이동하면 Android Volley에 대한 많은 동영상을 볼 수 있습니다 이 재생 목록에서 처음부터 시작합니다 예를 들어, 설정 및 방법 에서처럼 세 가지 요청 인 JSON을 사용하고, 업데이트하고 싶습니다

데이터 오류를 삽입합니다 Android Volley와 함께 할 수있는 다른 것들도 있습니다 마지막으로 잊지 말고 내 채널을 구독하고 엄지 손가락을주세요 만약 의견이 있으시면 아래에 의견을 남겨주십시오 지금은 작별 인사를하고 싶습니다

가까운 장래에 만나겠습니다

Building Your First Android & iOS App in Visual Studio 2017

>> 안녕하세요, 저는 James Montemagno입니다 프로그램 관리자 여기에 Microsoft의 모바일 개발자 도구가 포함되어 있습니다

오늘, 우리는 그것이 얼마나 쉬운지를 볼 것입니다 처음으로 iOS를 빌드하고 Visual Studio 2017에 직접 안드로이드 응용 프로그램 먼저 Visual Studio로 가서 시작하십시오 여기, 우리는 Visual Studio 2017 안에 있습니다 우리의 첫 번째 프로젝트를 만들어 보겠습니다

이제 우리의 새로운 프로젝트 대화에서, 우리는 안드로이드, 아이폰, 및 iPad, 심지어는 Apple TV 및 Watch 응용 프로그램, 크로스 플랫폼부터 시작하겠습니다 여기에서 나는 XamarinForms에 기반한 모바일 앱 이것은 C Sharp와 공유 할 것입니다 모든 비즈니스 로직에 대한 백엔드 및 Xaml에서 제공하는 공유 원시 사용자 인터페이스 "Okay"를 선택하겠습니다

여기에는 다음과 같은 몇 가지 옵션이 있습니다 우리가 목표로 삼고 싶은 빈 앱과 플랫폼 그러면 우리는 NET 표준을 선택할 것입니다 도서관으로서의 방법 각 플랫폼에서 코드 공유, 간단히 "Okay"를 누르십시오

비주얼 스튜디오 2017은 행동으로 도약하며, 나를 위해 세 가지 프로젝트를 만듭니다NET 표준 라이브러리, 내 안드로이드 프로젝트, 내 iOS 프로젝트 확대하고 좀 더 자세히 살펴 보겠습니다 내가 아직도 전체 NET 표준 라이브러리가 있어야하며, App26, 내 모든 의존성과 내 공유 Xamarin 사용자 인터페이스

나는 또한 내 안드로이드 프로젝트가있다 쓸 수있는 iOS 프로젝트 플랫폼 특정 코드 C에서 각 플랫폼에 대한 API의 100 %가 예리함, 하지만 우리는 공유 코드 및 NET 표준 라이브러리 음, 먼저 Appxaml을 가지고 있다는 점에 유의하십시오

그래서 내가 공유 리소스를 추가 할 수 있습니다 내가 사용하고있는 색상과 같은 그러나 작은 화살표 드롭 다운을 클릭하면 볼 수 있습니다 Appxaml CS의 일부 코드, 해당 Xaml 페이지와 관련된 C Sharp 파일 여기에 응용 프로그램이 시작될 때, 새로운 메인 페이지를 만듭니다 또한 시작, 종료, 종료 등의 몇 가지 라이프 사이클 이벤트가 있습니다

수면과 이력서 그러나 그 메인 페이지에 초점을 맞추자 여기에 내 응용 프로그램의 대량입니다 내가 할 수있는 스택 레이아웃이있다 서로 다른 컨트롤을 겹쳐 쌓고, 그 안에는 다음과 같은 라벨이 있습니다

"Xamarin Forms에 오신 것을 환영합니다" 이제 Android 에뮬레이터를 선택하고 단순히 응용 프로그램을 시작하려고합니다 내 응용 프로그램을 완전히 컴파일합니다 내 컴퓨터를 내 안드로이드 에뮬레이터에 배치하십시오 그래서 몇 초만 기다려 봅시다

자 간다 우리의 응용 프로그램은 우리의 안드로이드 에뮬레이터의 내부에서 시작, 그리고 그것이 끝날 때 우리가보아야 할 것 로딩은 XamarinForms에 오신 것을 환영합니다 자, 좀 더 창의적인 것을 해보 죠 계속해서 버튼을 추가하십시오

여기 그리고 우리가 클릭 할 때마다, 그것은 카운트를 증가시킬 것이다 이를 사용자에게 표시합니다 이제 Visual Studio 2017로 다시 넘어 갑시다 이제 버튼을 추가하기 만하면됩니다 여기, 나는 풍부한 IntelliSense를 얻을 것이다

사용할 수있는 모든 속성을 보여 주며, 그래서 여기에 텍스트가 있고 나는 "나를 클릭하십시오"라고 말할 것입니다 그런 다음 클릭 이벤트를 추가하겠습니다 우리는 새로운 사건 망치를 말할 것입니다 이렇게하면 자동으로 코드가 생성되고 우리가 구현할 수있는 코드

버튼 요소를 간단히 끝내기 만하면됩니다 그럼, 그 메인 페이지로 가자 Xaml CS 및 코드 배후, 여기에 방금 만든 버튼이 있습니다 로컬 변수를 만들겠습니다 Count라는 값을 0으로 설정하면, 버튼을 클릭 할 때마다, 우리는 백작 플러스라고 말할 것입니다

그러면 우리가하는 일은 간단히 말해서, "발신자가 버튼이라는 것을 알았습니다 우리는 텍스트를 업데이트하려고합니다 "그곳에 있습니다 우리는 C 샤프 (C Sharp) "클릭, 카운트, 시간" 우리는 거기에 갈

이제 우리가해야 할 일은 간단합니다 우리 응용 프로그램을 재배포하십시오 우리의 응용 프로그램과 모든 응용 프로그램을 다시 컴파일합니다 우리의 변화를 우리의 안드로이드 에뮬레이터에 재배포 여기에,에 오신 것을 환영합니다

XamarinForms와 "Click me"버튼이 있습니다 자, 클릭하고 클릭하십시오 우리는 거기에 갈 매번이 횟수를 계속 늘립니다

이제 iOS 프로젝트를 시작으로 설정할 수 있습니다 Mac OS 머신을 가지고 있다면, 계속해서 연결하여 다음과 같이 사용할 수 있습니다 컴파일을 빌드하는 원격 맥 컴퓨터 원격 iOS 시뮬레이터 사용 Windows 컴퓨터에서 바로 실행하십시오 동일한 정확한 Android 애플리케이션 iOS에 사용자 인터페이스가 필요한 iOS 더 배우고 시작하려면, docs

microsoftcom으로 이동하여 Xamarin, 그 다음에는 시작하기에 충분할 것입니다 가이드 샘플과 모든 것 당신이 시작해야합니다 됐어 처음으로 iOS를 구축했으며 Visual Studio 201 안의 안드로이드 애플리케이션

전혀 궁금한 점이 있으시면 연락을 주시고, 보고 주셔서 감사합니다

How to convert java code to kotlin in intellij idea | Android Studio

이 비디오에서는 자바 코드를 kotlin으로 변환하는 방법을 보여 드리겠습니다 이제 자바 파일을 열어 보았습니다

메뉴 막대의 코드로 이동 자바 파일을 Kotlin 파일로 변환을 클릭하십시오 확인을 클릭하십시오 코 틀린 코드는 여기에있다 너는 달릴 수있어 보고 주셔서 감사합니다