LectureNotes on G Pad (Android App Review)

강의 노트 여보세요! 이것은 LectureNotes 앱입니다 나는이 스타일러스를 DAISO에서 1,000 원 (약 1 달러)에 샀다

PDF 문서 내의 텍스트를 강조 표시합니다 PDF 파일을 가져 오려면, Google Play에서 'PDFView'를 다운로드해야합니다 줌 인 – 축소! 자세한 내용은 http://dipsyleecom을 참조하십시오

Android S7E7 : Firebase ListView – Save then Scroll to Last Added Item

그래서 ProgrammingWizards의 오늘의 에디션에 오신 것을 환영합니다 TV 녀석 이것은 안드로이드입니다 Firebase ListView 튜토리얼 ListView에 항목을 추가하는 방법 마지막으로 추가 한 항목으로 자동 스크롤합니다

지금까지 나는 가지고있다 Firebase Realtime 데이터베이스에 저장된 항목을 이미 추가했습니다 이미 데이터를로드하는 동안 우리는 자동으로 스크롤하여 마지막 항목 ListView는 여러 텍스트가있는 CardViews가있는 사용자 정의 그래픽으로, firebase의 데이터 사용자가 데이터를 추가 할 수있는 대화 상자에 입력 양식이 표시됩니다

edittexts에 그들을 타이프함으로써 예를 들어 데이터를 입력하고 입력 할 수 있습니다 그런 다음 저장 버튼을 클릭하십시오 데이터가 Firebase와 ListView에 자동으로 저장되었습니다 마지막 항목으로 스크롤됩니다

사실 Firebase Console에 오면 우리는 방금 추가 한 데이터가 노드로 표시됩니다 Firebase에서 데이터는 JSONObjects와 비슷한 방식으로 저장됩니다 Firebase에 원하는만큼 많은 데이터를 저장할 수 있습니다 더 많은 것을 쓰고 싶다고 말하면됩니다 내 인터페이스에 와서 내 데이터

이름, 견적 및 설명에 대한 세 가지 편집 텍스트가 있음을 알 수 있습니다 입력 후 저장 버튼을 클릭합니다 이렇게하면 데이터를 Firebase에 매우 빠르게 저장하고 자동으로 읽거나 검색 할 수 있습니다 ListView에 표시합니다 그런 다음 Google에서 마지막으로 추가 한 항목으로 자동 스크롤합니다

목록보기 입력 대화 상자로 가서 더 많은 데이터를 입력 할 수 있습니다 그런 다음 데이터를 클릭하면 데이터가 Firebase로 보내지고 자동으로 검색되어 목록보기 Firebase 데이터베이스 콘솔에 접속하면 방금 추가 한 데이터가 있습니다 이것은 인물 사진 모드입니다

그런데 우리가 보게 될 것처럼 우리는 우리의 어플리케이션을 위해 커스텀 머티리얼 디자인 테마를 사용했습니다 액션 바를위한 맞춤 색상으로 맞춤 스타일을 만들 것입니다 우리는 또한 풍경 모드로 올 수 있습니다 인터넷으로 설치된 앱을 클릭합니다 즉시 데이터가 Firebase에서 읽히거나 검색되고 ListView에 표시됩니다

그리고 자동으로 ListView는 ListView에서 마지막으로 저장되거나 추가 된 항목으로 스크롤됩니다 원하는 경우 더 많은 데이터를 삽입하기 위해 사용자 정의 입력 대화 상자를 호출하거나 표시 할 수 있습니다 이 경우 편집 텍스트에 입력하고 저장 버튼을 클릭합니다 데이터는 Firebase에 저장되고 자동으로 검색되어 ListView에 표시됩니다 그리고 ListView 스크롤 마지막으로 추가 된 항목까지 Firebase Console에 오면 방금 추가 한 데이터가 있습니다

firebase realtime 데이터베이스에서 데이터를 볼 수 있습니다 그래서 이것은 커뮤니티 회원 중 한 명이 요청한 firebase 튜토리얼입니다 Firebase 튜토리얼을 통해 Listview에서 마지막으로 저장된 항목으로 자동 스크롤합니다 여기에 우리가 가지고 있습니다 우리는 처음부터 Firebase와 작업 할 것이므로 초보자는이 튜토리얼을 완벽하게 따라갈 수 있습니다

그들은 모든 단계를 올바르게 따른다 무엇보다도 먼저 Firebase Console로 가서 Fire Base 응용 프로그램을 만듭니다 https://consolefirebasegoogle

com으로 이동하여 프로젝트 추가를 클릭하십시오 Firebase는 Google 소유이므로 Gmail 계정이 실제로 필요합니다 이미이 튜토리얼에 사용 된 프로젝트를 만들었습니다 그래서 우리는 그걸 탐색 할 것입니다 다음은 프로젝트 개요입니다

우리가 만든 것은 Firebase Project입니다 이제 Firebase App을 프로젝트에 추가해야합니다 따라서 앱을 추가하려면 볼 수있는 것처럼 다른 앱 링크 추가를 클릭하면됩니다 그런 다음 안드로이드로 작업 할 때 안드로이드를 선택하십시오 그런 다음 앱의 세부 정보를 입력해야합니다

먼저 앱 ID를 입력하십시오 이 앱 ID는 buildgradle 파일의 Android 코드에서 볼 수 있습니다 여기에 입력 할 것입니다 그런 다음 등록 할 앱 등록을 클릭합니다

Firebase 신청서 그런 다음 google-servicesjson을 다운로드해야하는 위치에 다음 탭이 표시됩니다 구성 파일 이 파일은 나중에 안드로이드 애플리케이션에 추가하는 방법을 보여줍니다

지금까지 내 앱을 볼 수 있습니다 이것이 내가이 예에서 사용할 것입니다 그런 다음 Firebase Console 사이드 메뉴의 데이터베이스 탭으로 이동하십시오 Firebase 데이터베이스 뷰를로드합니다 그러면 데이터베이스에 이미 데이터가 있음을 분명히 알 수 있습니다

Teacher 객체의 속성을 볼 수 있습니다 그런 다음 규칙 탭을 클릭하십시오 그러면 Firebase 앱의 인증 설정이로드됩니다 규칙 json 객체에서 읽기 및 쓰기 허용을 true로 변경합니다 이를 통해 우리는 우리의 firebase에 공개적으로 데이터를 읽고 쓸 수 있습니다

신청 이제 Android Project 만들기 대화 상자를 통해 Android 애플리케이션을 만들었습니다 애플리케이션 이름을 입력 한 후 최소 SDK로 API 레벨 14를 선택하십시오 그런 다음 템플릿 레이아웃으로 빈 활동을 선택하십시오 그런 다음 다음을 클릭하십시오

그런 다음 마침을 클릭하여 안드로이드 프로젝트를 생성하십시오 우리의 주요 활동은 AppCompatActivity에서 파생됩니다 그런 다음 여기에 프로젝트가 있습니다 우리가 다운로드하는 google-servicesjson 파일을 기억하십니까? 그래, 이제 우리가 필요할거야

와서 우리의 안드로이드 응용 프로그램에 추가하십시오 그런 다음 앱 폴더 또는 디렉토리로 이동합니다 google-servicesjson을이 앱 폴더에 붙여 넣으세요 너는 이미 내가 붙인 것을 볼 수있다

이 파일은 우리의 설정 파일이며 Firebase API에 우리가 작업하고있는 Firebase App을 알려줄 것입니다 또 다른 방법은 파일 탐색기를 통해 직접 프로젝트로 이동하는 것입니다 그런 다음 Google 서비스를 앱 폴더에 붙여 넣으십시오 이제 buildgradle 파일 두 개를 볼 수 있습니다

앱 수준 및 프로젝트 수준 우리는 먼저 프로젝트 수준에 도달했습니다 여기서는 먼저 Google 서비스를 등록해야합니다 buildscript 내부의 의존성 아래에있는 classpath 그런 다음 Google의 Maven을 추가하도록 지정합니다

리포지토리 아래의 리포지토리 URL allProjects 객체 내부의 클로저 이 둘을 반드시 추가하십시오 그런 다음 이제 앱 수준 buildgradle로 이동합니다 API 레벨 14가 최소값임을 알 수 있습니다

SDK 버전 우리는 지원 라이브러리 의존성을 추가하고 appcompat, 디자인 지원 및 cardview 그런 다음 두 개의 firebase 종속성도 추가합니다 먼저 Firebase Core와 Firebase Relatime 데이터베이스를 차례로 선택합니다 컴파일 문은 이미 있으므로 구현 문을 사용합니다

더 이상 사용되지 않습니다 그런 다음 Google 서비스를 사용하여 Google go-service를 적용합니다 적용 진술서 우리는 아래쪽의 종속성 외부에서이 작업을 수행합니다 그 중 하나를 추가했는지 확인하십시오

프로젝트를 동기화하여 인터넷에서 해당 종속성을 다운로드하십시오 글쎄 그게 우리 gradles 대본 우리는 이제 우리의 자원에 왔습니다 우리는 커스텀 머티리얼 테마를 사용할 것입니다 노란색 재질의 작업 표시 줄을 볼 수 있습니다

그럼 우리는 사용자 정의 스타일이나 테마를 만들고 우리의 응용 프로그램에 적용 할 것입니다 이것은 선택 사항입니다 먼저 values ​​폴더와 colorsxml 파일 아래에옵니다 우리는 사용자 정의 테마에 사용할 사용자 정의 색상을 여기에 추가 할 것입니다

몇 가지 맞춤 색상을 도입 한 것을 볼 수 있습니다 그런 다음 stylexml에 와서 맞춤 소재 스타일을 만듭니다 볼 수 있습니다 나는 내 스타일에 이름을 지어 주었고 부모에게는 그냥있다

그 아래에 나는 창 제목을 표시할지 여부, 창 액션 바 등 같은 값 폴더에서 다른 스타일을 만듭니다 마법사를 사용하여 파일을 추가하고 XML을 선택한 다음 '값'을 선택하십시오 그런 다음 style-v21이라는 이름을 지정하십시오

그런 다음 마침을 클릭하십시오 다음 코드를 추가하십시오 이것은 안드로이드 롤리팝을위한 스타일입니다 그런 다음 우리의 android manifestxml 파일로 이동합니다

먼저 인터넷 사용 권한을 추가합니다 그런 다음 맞춤형 소재 테마를 적용 해보십시오 우리의 신청서가 주제가되도록 우리는 테마를 android manifestxml 따라서 AppTheme을 주석 처리하고 적용 할 수 있습니다

우리의 커스텀 테마 다시 말하지만, 이것은 선택적 단계이며 Firebase와 아무 관련이 없습니다 그런 다음 우리의 activity_main, xml에 와서 먼저 TextView를 추가하십시오 그런 다음 Firebase Realtime 데이터베이스의 데이터를 표시하는 ListView를 추가하십시오 맨 아래 오른쪽에는 FloatingActionButton이 있습니다

여기에 코드가 있습니다 루트에는 RelativeLayout이 있습니다 그런 다음 헤더 레이블 인 TextView가 있습니다 그런 다음 Firebase 데이터를 렌더링하는 ListView가 있습니다 우리는 fastscroll alwasy를 보여줄 것입니다

바로 여기에서 볼 수 있습니다 그런 다음 레이아웃 중력이있는 FloatingActionButton을 갖습니다 하단 | 끝 클릭하면 입력 폼이나 대화 상자가 표시됩니다 이제 입력 대화 상자를 보도록하겠습니다

저장 버튼뿐 아니라 편집 문구가 있음을 알 수 있습니다 루트에는 LinearLayout이 있습니다 방향은 수직입니다 대화 상자 상단에 Textview라는 헤더가 있습니다 그런 다음 세 개의 편집 문구가 있습니다

그런 다음 firebase에 데이터를 보내기위한 버튼이 있습니다 여기에서 레이아웃의 디자인보기를 볼 수 있습니다 마지막으로 레이아웃을 위해`modelxml` 레이아웃을 만듭니다 여러 텍스트 뷰가있는 카드보기가 있음을 알 수 있습니다

다음은 XML 레이아웃입니다 루트에는 CardView가 있습니다 카드 고도는 카드 센터 반경과 마찬가지로 5dp입니다 그 안에 우리는 LinearLayout을 생성합니다 우리는 TextView를 POJO 또는 데이터 객체의 이름

그런 다음 다른 텍스트 뷰를 렌더링하여 따옴표뿐만 아니라 설명 우리는 그들을 정렬하고 있습니다 LinearLayout에서 수직으로 이 modelxml 레이아웃은 목록보기를 위해 단일 카드 뷰로 확장됩니다

다음으로 우리는 자바 클래스에옵니다 먼저 Teacherjava 파일을 시작으로 패키지 이름을 지정합니다 그런 다음 교사라는 클래스를 만듭니다 이것은 POJO 또는 데이터 객체입니다

선생님들을 Firebase Database에 저장할 것입니다 먼저 우리는 한 교사에 대한 속성을 지정합니다 이름, 견적 및 설명을 포함하여 세 개의 문자열 속성이 있습니다 그런 다음 빈 생성자를 만듭니다 이 클래스는 필수 요소이며,이 클래스는 Firebase의 JSONObject

데이터를 전달하려는 경우 생성자를 통해 다음 진행하고 그것을 무시, 보조 생성하지만 그대로 유지 그런 다음 우리는 getter와 setter를 생성합니다 행동 양식 이러한 메서드는 데이터 객체 속성을 노출합니다 그런 다음 MainActivity

java 파일을 찾습니다 먼저이 클래스의 패키지 이름을 지정합니다 그런 다음 MainActivity 클래스를 만듭니다 그런 다음 사용할 가져 오기 상태를 추가합니다 이러한 가져 오기에는 Firebase 가져 오기가 포함됩니다

먼저이 클래스가 AppCompatActivity를 확장하도록 만듭니다 이것은 우리의 수업을 하나의 활동, 안드로이드 구성 요소로 바꿔 놓을 것입니다 우리의 안드로이드 manifestxml에서 우리의 실행기 활동으로 만듭니다 우리의 주요 활동은 몇몇 내부 클래스

이렇게하면 복사 및 재사용이 편리합니다 웹 사이트 http://camposhainfo의 코드 먼저 FirebaseHelper라는 클래스를 만듭니다 이 수업은 학생들의 Firebase CRUD는 데이터 작성 및 검색과 같습니다

먼저 DatabaseReference를 포함하여 인스턴스 필드를 지정합니다 우리는 또한 성공을 유지하는 부울을 가지고 있습니다 저장 조작 상태 그런 다음 모든 데이터를 보유하는 arraylist 우리는 데이터베이스에서 가져올 것입니다 또한 데이터를 렌더링하는 ListView도 있습니다

Firebase Realtime 데이터베이스에서 읽습니다 먼저 이러한 객체 중 일부를 전달합니다 생성자를 통해 보시다시피 또한 우리는 retrieve () 메소드를 호출 할 것입니다 실제로 데이터를 검색하고 ListView를 채 웁니다

다음으로 실제 데이터를 Firebase에 실시간 저장하는 save ()라는 메소드를 생성합니다 데이터 베이스 이 메소드는 boolean를 리턴합니다 firebase에 저장하기 위해 데이터 객체를 사용하고 있습니다 먼저 교사가 null인지 확인합니다

그렇지 않으면 계속 진행하여 Firebase에 저장합니다 저장하려면 push () 메서드를 사용하고 우리가 실제로 원하는 값을 설정하는 setValue () 구하다 우리는 child () 메소드에서 자식 이름이나 테이블 이름을 전달합니다 우리는 데이터베이스 예외를 잡아낼 것입니다 저장 한 후에는 저장된 속성을 true로 설정합니다

예외가 생겼을 때 우리는 false를 저장했다 그런 다음 검색하는 방법으로갑니다 firebase의 데이터 먼저 addValueEventListener ()를 호출하여 ValueEvents를 수신합니다 데이터베이스 참조 자식에 대해 우리가 지나가고있는 '선생님'이 테이블 이름입니다

일반적으로 ChildEventListener 또는 ValueEventListener를 사용할 수 있습니다 우리는 데이터를 모두 가져오고 싶기 때문에 후자를 사용합니다 한 번에 마지막으로 추가 된 항목으로 스크롤하기를 원하기 때문입니다 이 메소드에서 처리 할 콜백이 몇 가지 있습니다

ValueEventListener를 사용하면 가져올 수 있습니다 한 번에 우리의 데이터는 ChildEventListener입니다 이 상황은 우리의 응용 프로그램에 적합합니다 왜냐하면 우리는 우리의 LisyView에 마지막으로 추가 된 항목 addvalueEventListener 안에 익명 클래스를 전달합니다

방법 그런 다음 onDataChange () 및 onCancelled () 메소드 OnDataChange () 메서드에서 데이터 스냅 샷이 전달됩니다 하지만 먼저 선생님들에게 데이터의 중복을 피하십시오 그런 다음 데이터 스냅 샷이 실제로 존재하는지 확인하고 그것의 아이들은 제로 이상입니다

이렇게하면 실제로 데이터베이스에 데이터가 있는지 확인할 수 있습니다 그렇다면 우리는 우리의 자녀를 dataSnapshot과 loo [그들을 통해 p 각 반복마다 우리는 하나의 데이터를 얻습니다 우리의 getValue () 메소드를 통해 객체 dataSnapshot 클래스 그런 다음 POJO 클래스를 전달하여 검색 데이터를 일반 오브젝트로 변환합니다 그런 다음 교사 객체를 교사 arraylist에 추가합니다

if 문 밖에서 기본 어댑터 클래스를 인스턴스화합니다 그런 다음 어댑터를 통해 listview에 어댑터를 설정합니다 setAdapter () 메서드 그런 다음 Handler를 인스턴스화하고 post 메소드를 호출합니다 그런 다음 setSmoothScrollToPosition () 메서드를 사용하여 마지막으로 추가 된 항목으로 부드럽게 스크롤하십시오

이 작업을 큐에 넣을 수 있도록 핸들러를 사용합니다 호출 스레드가 준비되었을 때만 수행됩니다 그리고 스레드를 호출하는 것은 UI 스레드라는 것을 기억하십시오 그렇지 않으면 메인으로 알려진 실 그래서 처리기는 기본적으로 우리가 이러한 작업을 수행 할 수있게 해줍니다

열 이렇게하면 부드럽게 스크롤 할 수 없습니다 UI 스레드가 작동 중일 수 있으므로 놓치십시오 그래서 우리는 post 메소드를 사용합니다 다른 작업 후에 해당 작업을 수행 할 수 있습니다

그러나 setSmoothScrollToPosition은 다음을 담당하는 메소드입니다 우리가 제공하는 위치로 스크롤 그런 다음 onCancelled () 메서드 내부에서, 우리는 오류를 기록하고 보여줍니다 토스트 메시지에 그런 다음 맞춤형 어댑터 클래스를 사용합니다

사용자 지정 어댑터라는 클래스를 만듭니다 클래스를 추상 클래스 인 BaseAdapter에서 파생시킵니다 Context와 ArrayList를 인스턴스 필드로 가질 것입니다 우리는 값을 생성자를 통해 전달합니다 그런 다음 BaseAdapter의 추상 메소드를 대체합니다

getCount ()는 표시 할 총 항목 수를 반환합니다 getItem ()은 현재 항목을 반환합니다 getView에서 우리는 우리의 modelxml을 팽창시킬 것이다 레이아웃을 뷰 객체에 추가합니다

그러면 목록 뷰의 행으로 사용됩니다 먼저 convertview가 null인지 확인합니다 그렇지 않으면 우리는 그것을 팽창시킨다 LayoutInflater를 사용하여이를 팽창시킵니다 그런 다음 TextViews를 참조하십시오

그런 다음 하나의 교사 객체를 얻습니다 그런 다음 값을 textviews로 설정하십시오 그런 다음 맞춤 목록보기의 클릭 이벤트를 듣고 건배 메시지를 보여주세요 그런 다음 토스트 메시지에 교사를 클릭하십시오 우리는 convertview를 돌려 보낼 것이다

마지막으로 우리는 주요 활동을 진행합니다 이 인스턴스 필드를 추가하십시오 그런 다음 onCreae () 메서드를 재정의합니다 그런 다음 레이아웃에서 목록보기를 참조하십시오 그런 다음 FirebaseDarabase에 대한 참조를 얻으십시오

그런 다음 FirebaseHelper를 인스턴스화하십시오 그런 다음 클릭 이벤트 또는 플로팅 액션 버튼을 듣습니다 그런 다음 원하는 위치로 부드럽게 스크롤하십시오 정수 만 전달하면됩니다 그런 다음 입력 대화 상자를 표시하십시오

이것은 우리의 데이터를 firebase에 저장하기위한 커스텀 다이얼로그입니다 우리가 팽창시키고있는 레이아웃은 다음과 같습니다 EditText와 저장 버튼이 있습니다 우리는 그들을 참조하고 듣는다 저장 단추의 클릭 이벤트

먼저 기본 유효성 검사를 수행합니다 우리 데이터의 그런 다음 데이터를 firebase에 저장하십시오 데이터를 저장 한 후에는 데이터를 검색합니다 우리에게 묶어 라 어댑터를 통한 listview

그런 다음 원하는 방향으로 부드럽게 스크롤하십시오 그런 다음 마지막으로 대화 상자를 표시합니다 이제 프로젝트를 실행할 수 있습니다 우리가 프로젝트를 운영한다면 여기에 우리의 데이터가 자동로드됩니다

cardviews와 우리의 사용자 정의 listview Firebase 콘솔에있는 데이터를 볼 수 있습니다 대화 상자를 통해 더 많은 데이터를 firebase에 추가 할 수 있습니다 save를 클릭하면 데이터가 firebase에 저장됩니다 데이터가 자동으로 우리의 listview에로드되고 부드럽게 마지막으로 추가 된 항목으로 스크롤됩니다

저희 웹 사이트 camposhainfo에서 소스 코드를 찾으십시오 그렇지 않으면 비디오를 공유하고 그것을 좋아하고 구독하여 우리를 지원하십시오 감사합니다

Android Divider – How to Draw Vertical And Horizontal Lines (Explained)

CodingDemos에 오신 것을 환영합니다 이 튜토리얼에서는 애플리케이션 내에 수직선과 수평선을 작성하는 방법을 배웁니다

Android Studio 열기 열기 (res -> layout)하고 파일 (activity_mainxml)을 더블 클릭하십시오 오른쪽에서 볼 수 있듯이 2 개의 TextView가 있습니다 : 첫 번째는 (세로 / 가로선)이고 두 번째는 (구분선 / 가로선)입니다 첫 번째 TextView 아래에서 수직선을 그리려는 지점입니다 TextView에서 두 번째는 수평선을 그리는 위치입니다

이 글꼴은 실제로 Android보기입니다 우리는 그것을 사용할 수 있습니다 먼저 첫 번째 TextView 아래에 세로선을 추가합니다 보시다시피 저는 루트 레이아웃으로 LinearLayout을 사용하고 (android : orientation)을 세로로 설정합니다 첫 번째 TextView 아래에서 Android보기를 추가합니다

첫 번째 옵션을 선택하십시오 차트의 레이아웃과 너비를 알려줘야합니다 이제 수직을 그릴 때 차트보기 (wrap_content)를 표시합니다 차트의 높이가 선의 두께 인 반면 예를 들어, 선을 매우 두껍게 만들려면 0보다 큰 값 (모든 값)을 지정할 수 있습니다 그래서 (1 DP)부터 시작해서 어떻게 보이는지 보여 드리겠습니다

그래서 여기에 (1 DP) 차트의 높이로 너는 너무 얇기 때문에 너는 선의 두께를 실제로 볼 수 없다 내가 확대하자 아무 것도 볼 수 없지만 Android보기를 클릭하면 강조 표시된 것을 볼 수 있습니다 선 두께가 무언가 (2 또는 4 DP) 인 차트의 높이를 증가 시키도록합시다 두께 증가를 볼 수는 있지만 아무 것도 볼 수 없습니다

이 글꼴의 배경색이 흰색이거나 투명하기 때문에 글꼴이 보이지 않습니다 글꼴을 보려면 배경색을 지정해야합니다 그리고 우리는 색깔을 선택했습니다 이제 당신은 라인을 볼 수 있습니다 이것은 라인 두께를 나타내는 차트의 높이로 4DP를 선택했기 때문에 라인 두께입니다

1DP를 선택하면 글꼴이 매우 얇지 만 여전히 볼 수 있으므로 원하는 색상으로 배경을 변경할 수 있습니다 하지만이 예제에서는 ColorAccent 두껍게하고 8DP를 늘릴 수 있으면이 값을 5DP로 늘릴 수 있습니다 더 높은 숫자를 줄 때마다 글꼴 두께가 실제로 증가한다는 것을 알 수 있습니다 글꼴 두께를 12DP로 늘릴 수 있습니다 아이디어를 얻었을 것입니다

숫자가 높을수록 선의 두께가 커집니다 물고기 라인의 가치를 3DP로 돌려 보겠습니다 원하는 속성을 추가 할 수 있습니다 (예 : 상단 및 하단에서 여백을 추가하거나 줄 주위에 여백을 추가 할 수 있습니다 10DP의 값으로 라인 주변에 여백을 추가 할 수 있습니다 이 줄에 적용된 여백을 볼 수 있습니다

이전에는 선이 왼쪽과 오른쪽의 화면 가장자리에 가까웠습니다 마진에 10DP의 가치를 부여한 후 이 마진은이 결과를 주었던 라인 주변입니다 상단에서 여백을 추가 할 수도 있습니다 선을 둘러싸는 여백을 추가하지 않고 상단에서 여백을 추가하려는 경우 여기에서 우리는 상단에서 20DP 마진을 줬다 이것은 결과이다 보유한 요구 사항에 맞게 사용자 정의 할 수 있습니다

이것은 기본적으로 결과입니다 이것은 수평선을 그리는 방법입니다 죄송합니다! 실제로는 수직선이어야합니다

TextView 텍스트를 가로로 변경합니다 죄송합니다 TextView 텍스트를 Vertical로 변경합니다 이 실수로 정말 유감입니다 이것은 수평선을 그리는 방법입니다

다음 부분으로 가서 수직선을 그려 봅시다 이 작업은 TextView 수직선 아래에서 수행됩니다 우리는 똑같은 것을 사용하지만 조심해야한다 작은 글자 (v)와 큰 글자 (V)로 시작하는 (VIEW) 우리는 큰 요금 (V)로보고 싶다 자신을 다른 사람과 혼동하지 않도록 조심하십시오

우리는 큰 요금 (V)로보고 싶다 이 수직선에는 간단한 변경이 필요합니다 수직선을 얻을 수 있도록 차트와 높이를 표시합니다 이렇게하려면 사용하려는 차트를 표시합니다 레이아웃 뷰는 수직선의 두께를 나타냅니다

3DP의 가치를 알려 드리겠습니다 높은 계획은 (wrap_content) 너는 아무것도 볼 수 없다는 것을 안다 이 줄에 배경색을 지정해 보겠습니다 당신은 색깔을 선택할 것입니다 왼쪽에 글꼴이 나타납니다

왼쪽에서이 여백을 주면 선을 볼 수 있습니다 이 선을 화면 가운데로 이동하십시오 이제는 이전보다 훨씬 좋아 보인다는 것을 알 수 있습니다 이제 이것이 수직선임을 알 수 있습니다 글꼴 두께를 3DP에서 10DP로 늘릴 수도 있습니다

그리고 오른쪽에서 수직선 두께가 증가한 것을 볼 수 있습니다 수평선과 수직선의 유일한 차이점 그들은 당신이 여기에서 볼 수있는 것과 같은 ANDROID VIEW를 사용합니다 수직선을 볼 때 주로 높은 차트로 작업하게됩니다 수직선의 외곽선의 높이는 선의 두께를 나타내는 속성입니다 수평선을 선택하는 동안 죄송합니다 !! 이것은 선 두께 차트의 높이를 나타내는 수평선입니다 세로선 배치보기에서 해당 선의 두께를 나타내는 값입니다

이것들은 유일한 변화이다 이것들은 첫 번째와 두 번째 VIEWS 사이의 유일한 차이점입니다 그것들은 똑같은보기입니다 그것은 차트 너비와 높이의 값이 약간 다릅니다 이것은 수직 또는 수평으로 정렬 할 것인지 결정하는 측면에서 여기서 중요한 역할을합니다 배경 색상은 글꼴을 색칠하는 데 사용하는 색상입니다 글꼴이 전체 공간을 차지하지 않고 높이를 줄이려는 경우 (wrap_content)를 값으로 사용하는 대신 layout_height 값을 변경할 수 있습니다

60DP layout_height (60DP)를 기준으로 세로 줄 높이가 감소합니다 원하는 경우 80DP로 늘릴 수 있습니다 또는 그냥 그대로 둘 수 있습니다 (wrap_content)

이것이 결과이다 배경색을 (colorAccent)에서 (colorPrimary)로 변경할 수 있습니다 이것은 (colorPrimary)입니다 수직선 보유한 요구 사항에 맞게 사용자 정의 할 수 있으며 다음과 같은 결과가 표시됩니다 이것이 결과이다

응용 프로그램을 실행하고 결과를 봅니다 이것이 결과이다 우리는 수평선과 수직선이 있습니다 이것이이 튜토리얼의 기본이다 이 튜토리얼을 즐기시기 바랍니다

구독 버튼을 클릭하면 위의 튜토리얼을 더 많이 볼 수 있습니다 도움이 필요하면 이메일을 보내십시오 최선을 다해 도와 드리겠습니다 보고 주셔서 다시 한 번 감사드립니다

Android Performance Patterns: Android UI and the GPU

콜트 맥안리스: 좋은 앱을 만들기 위해서는 내부적으로 어떻게 작동되는지 알고 있어야 하지요 하드웨어 레벨에서 어떻게 돌아가는지 모른다면 효율적인 앱 만들기는 영 힘들겁니다

저 콜트 맥안리스가 앱 렌더링에 대해 알려드리죠 안드로이드가 GPU를 어떻게 사용하는지 안다면 앱 실행 상의 문제를 해결하는데 큰 도움이 되지요 가장 중요한 문제는 앱의 작업 결과가 스크린에 어떻게 보여지느냐 골치아픈 XML과 여타 마크업 언어가 유저가 보고 바로 이해할 수 있는 픽셀로 어떻게 전환되느냐 하는 것이죠 래스터화, 흔히 이미지화라고 하는 프로세스 덕분에 가능한 것인데요 문자열이나 버튼이나 패스나 각종 형태를 그러니까, 하이 레벨 언어의 오브젝트를 텍스쳐나 화면의 픽셀로 바꾸는 겁니다

문제는, 래스터화는 시간을 무지하게 잡아먹는 프로세스입니다 그래서 그 과정을 좀 더 빠르게 해주는 하드웨어가 기기 안에 들어있죠 그래픽 처리 유닛, 줄여서 GPU 90년대에 보급이 시작됐는데요 래스터화를 가속시켜 줍니다 GPU 자체는 기본 자료형, 주로 폴리곤과 텍스쳐를 써서 이미지를 나타내죠 이걸 GPU가 스크린에 그릴 수 있게 앱의 작업 결과를 넘겨 주는 게 CPU다 이거죠

안드로이드에서 이걸 하는게 오픈GLES라는 API인데요 앱 UI에 버튼이나 패스나 체크박스 등 오브젝트가 화면에 그려져야 할 때는 먼저 CPU에서 폴리곤과 텍스쳐로 변환, 그런 후에야 GPU에 넘겨져서 래스터화가 됩니다 그리고, 아마도 짐작하시겠지만 이 UI객체를 폴리곤과 텍스쳐로 전환하는 과정은 절대 빠를 수 없는 작업입니다 CPU에서 GPU로 넘겨주는 것도 시간걸리는 일이고요 그럼 오브젝트를 전환해야 하는 횟수와 CPU와 GPU간의 넘겨주기의 횟수를 최소화하는 게 답이죠

참 다행스럽게도,오픈 GLES API는 GPU에 자료를 보내고 보존할 수 있게 해줍니다 만약 똑같은 버튼을 다시 쓴다 하면 이미 GPU의 메모리에 메시가 있으니 오픈GL에 그리는 방식만 지정해 주면 됩니다 그러니까 기본 룰은, GPU에 데이터를 최대한 많이, 빠르게 보내고, 거기 놔둬요 최대한 오랫동안 데이터 수정이 없도록 GPU에 이미 있는 데이터를 다시 보내면, 시간만 잡아먹는 게 되잖아요? 안드로이드 시스템은 효율적인 렌더링에 목숨걸었습니다

예로 들면, 앱에서 쓰는 리소스는, 비트맵하고 나머지 그릴 거 말입니다 하나의 텍스쳐에 합해져서 GPU에 자동으로 넘겨지죠 동시에 9-패치 같이 자주 쓰이는 폴리곤 메시도요 이미 넘긴 리소스를 쓰는 화면을 그릴 때마다 폴리곤 전환을 할 필요가 없어요 그러니까 이미 GPU에 데이터가 다 들어 있어서 화면 그리기가 정말로 빨라지는거죠 하지만 UI 객체가 더 복잡해질 수록 이 프로세스도 복잡해집니다 예로 들면, 이미지 띄우는 건 CPU에 있는 이미지를 메모리로 옮겨서 다시 GPU로 넘겨주고 그리게 하는 건데요

여기서 패스를 쓰면 CPU에서 폴리곤을 줄줄이 만들어줘야 할 수도 있어요 악몽입니다 아니면 그 형태를 마스킹하는 폴리곤을 GPU에서 만들어야 하죠 텍스트 렌더링은 생각하기도 무서운데요 CPU는 문자를 텍스쳐로 래스터화해서 그걸 GPU에 보내줘야 하고 그걸 문자열의 문자 수만큼 반복해야 하죠

GPU 메모리에 있는 문자를 사각형으로 렌더링하게요 애니메이션은 이걸 여기서 더 꼬이게 합니다 그러니까, 비쥬얼을 어떻게 바꾸느냐에 따라서 GPU의 데이터를 새로 처리하는 코스트를 프레임 하나 하나마다 계속 계속 부담할 수 있습니다 이건 GPU 문제의 빙산의 일각인데요 안드로이드는 매 프레임마다 앱 화면을 전체를 갱신할 필요 없이 실제로 변경된 부분만 새로 그려서 발생 부담을 획기적으로 줄여 줍니다

물론, 안드로이드가 해야 하는 래스터화 전 CPU의 전환이나 넘겨주기 작업도요 하지만 여기서 주의할 점이 있습니다 유저가 앱을 순조롭게 사용하려면 코드 갱신, GPU 데이터 갱신 그리고 렌더링까지 매 프레임 16 밀리세컨드 그 안에 해내야 합니다 적어도 목표는 그러하니까 이 안드로이드 퍼포먼스 패턴 시리즈 나머지를 보셔서 앱의 렌더링이 매끈하게 흘러가도록 하셔야 하는 거죠 그리고 저희 구글+ 커뮤니티에 들리셔서 개발자 분들의 팁이나 충고 보시는 것도 잊지 마시고요 그리고 항상 침착하게, 코드는 단정하게 실행은 효율적으로, 잊지마세요

Games for Kids Children Baby Talking Tom Talking Angela Funny Cat Android/IOS Gameplay Youtube Kids

어린이를위한 게임 어린이 베이비 Talking Talking Angela 재미 있은 고양이 Android / IOS Gameplay Youtube Kids 아이들을위한 게임, 안드로이드 게임, 게임 플레이, 아이들을위한 색상, 슈퍼 마리오, 색상, 아이들을위한, 이야기하는 톰, 웃긴 동영상, 말하기 안젤라, 배우기, 색상, 모험, pocoyo, 마리오, 비디오, 아이들을위한 색상 배우기, 아이들을위한 색상 배우기, 아이들을위한 색상 배우기, 비디오 배우기, 아이를위한 색상 배우기, 색상, 아이, 유튜브 키즈, 아이 학습 비디오

[리오팍고] 아이폰 쓰면서 아직 몰라? 최강 파일관리 앱, Documents

안녕하세요 리오팍고입니다

오늘의 앱은 'Documents' 입니다 컴퓨터를 켜면 '내컴퓨터'와 '내 문서'를 통해 파일정리를 할 수 있잖아요 이 앱은 다양한 파일들과 폴더를 만들어 정리하고 관리할 수 있는 앱입니다 폴더를 만들고, 파일을 복사하고, 서버에 있는 파일까지 다운로드 받으실 수 있습니다 단순히 파일 정리 및 관리를 할 수 있을 뿐만 아니라 그 파일의 뷰어기능까지 갖추고 있습니다

저 같은 경우에는 아이폰에 있는 음악 앱을 사용하는 것이 아니라 이 앱을 사용하고 있는데요 서버에 음악파일을 넣어두고 서버 폴더 동기화 기능을 사용하면 별도로 아이튠즈를 이용하여 파일을 넣지 않아도 손쉽게 음악들을 폴더 단위로 관리하고 재생할 수 있습니다 안드로이드에서는 폴더 단위로 음악파일을 관리할 수 있었지만 아이폰은 매우 어려운 일입니다 이제는 이 앱에서 해결할 수 있습니다 혹시 PDF파일을 자주 사용하시는 분이라면 자사앱 'PDF Expert'을 함께 사용해 보시기를 바랍니다

해당 앱과 연결되어 있어서 PDF 파일들을 더욱 쉽게 열어보고, 관리 및 수정이 가능합니다 PDF 파일도 동기화 설정을 해놓으면 자동적으로 서버에 올라가기 때문에 매우 편리한 저장도 가능합니다 다음으로 압축 기능에 대해서도 말씀드리고 싶은데요 파일을 선택하고 압축 할 수도 있고, 반대로 해제도 가능하죠 압축파일 형태로 받았다고 해서 이제 겁먹을 필요가 없습니다

이 앱에서 다양한 파일들을 지원하고 있습니다 어마어마한 기능들이 아직 남아있습니다 'Wi-Fi 드라이브' 라는 기능인데요 같은 무선인터넷 환경에서 컴퓨터로 접속하여 관리할 수 있는 기능입니다 윈도우 환경에서는 '네트워크 드라이브 연결' 맥 환경에서는 파인더에 '서버에 연결' 기능을 사용하면 바로 앱 안에 있는 폴더들을 열어보고 관리할 수 있습니다

최종적으로 총평하겠습니다 10점 만점에 '9'라는 점수를 주고 싶은 앱입니다 컴퓨터에서 폴더를 관리할 수 있는 직관성을 그대로 앱에 옮겨놨습니다 사실 별도의 설명이 필요하지 않아도 몇 번의 클릭으로 내부의 기능들을 손쉽게 살펴볼 수도 있습니다 앞으로 파일을 열어볼 때 이 앱을 무조건 사용하시게 될 겁니다

'Documents' 파일 관리 앱, 리뷰 잘 보셨나요? 미처 설명드리지 못한 기능들이 있다면 댓글로 좋은 기능 서로 공유해주시면 좋겠습니다 영상의 좋아요, 구독하기 클릭해주시고요! 지금까지 리오팍고 이었습니다 감사합니다! (여러분! 스마트해집니다!)