안드로이드 화면
총괄적으로 말하면 어떤 제품은 후기 스크린에 많은 번거로움을 주고 어떤 제품은 매우 가볍다.왜 그랬을까?이것은 네가 평소에 코드를 쓰는 좋은 습관이 있는지의 여부와 관계가 있다.
향후 화면에 적합한 프로그래밍 습관 감소:
4
4
4
4
**그림 맞춤**dpi: 화면 픽셀 밀도는 인치당 픽셀 수를 나타냅니다.화면 픽셀 밀도는 화면 크기 및 해상도와 관련이 있습니다.
단일 변경 조건에서는 화면 크기가 작고 해상도가 높을수록 픽셀 밀도가 커지고 화면 크기가 작습니다.
px: 픽셀.해상도는 픽셀 단위로 안드로이드 네이티브 API는 화면폭이 높은 것처럼 px를 통일된 계량 단위로 한다.
dip 및 dp: 화면 픽셀 밀도.dp 및 px 환산: dp = px/장치 밀도
sp: 글꼴 크기를 설정하는 단위로 텍스트 크기 기본 설정을 확대합니다.
안드로이드 프로젝트 디렉터리에는 일반적으로 mdpi,hdpi,xdpi,xxdpi가 있어 안드로이드의drawable 폴더와values 폴더를 수식합니다.
픽셀 밀도에 따라 그림과 dimen 값을 구분합니다.
이름 픽셀 밀도 범위
ldpi는 모바일 장치의 설정이 끊임없이 업그레이드됨에 따라 이 픽셀 밀도 장치는 이미 보기 드물기 때문에 현재 어울릴 때 고려할 필요가 없습니다.
mdpi 120dpi~160dpi
hdpi 160dpi~240dpi
xhdpi 240dpi~320dpi
xxhdpi 320dpi~480dpi
xxxhdpi 480dpi~640dpi
화면 해상도는 가로와 세로의 픽셀 포인트를 가리키며 단위는 px, 1px=1개의 픽셀 포인트이다
휴대전화 해상도에 따라 비슷한 해상도 자원 파일의 그림을 자동으로 선택해 표시한다.
그래서 개발할 때 적당한 크기의 그림을 적당한 폴더에 넣고 일반적으로 현재 시장의 주류 휴대전화 주류의 해상도에 따라 그림을 만든다
** 레이아웃이 잘 어울립니다 ** (상용하지 않음) 안드로이드 프로젝트 디렉터리에는 일반적으로 하나의layout 디렉터리만 있습니다. 그 안에 놓인 것은 모두 레이아웃 파일입니다. 사실 당신은 더 많은layout 폴더를 새로 만들 수 있습니다. 이름 방식은layout-land,
layout-xlarge,layout-sw720dp 등.
그러나 주의해야 할 것은 일반적으로 추가 컨트롤을 추가하지 않는다는 것이다.만약 당신이 단추를 하나 더 넣었다면, 두 가지 다른 해상도에서findViewById는 단추를 찾습니까, 아니면 찾지 않습니까?
일반적인 용도는 당신의 앱이 어떤 휴대전화의 해상도에 문제가 생기면 이 해상도에 따라 단독으로 레이아웃 파일을 만들어서 해상도에 맞게 할 수 있다는 것이다.
** 사이즈가 적당합니다. ** 안드로이드 프로젝트 디렉터리 아래에values 디렉터리가 있는데, 그 안에는dimens라는 xml 파일이 있습니다.그것은 일반적으로 각양각색의 컨트롤 사이즈의 성명이지만, 만약 회사가 일반적으로 요구하지 않는 상황에서 우리는
레이아웃 파일에 직접 썼어요.하지만 이 xml 파일을 사용할 때 무엇을 하는지 알아야 합니다.
사실 사이즈가 어울리는 데 가장 중요한 것은 위에서 언급한 dp와 px의 전환을 아는 것이다.
dp = px/디바이스 밀도
일반적인 장치 해상도 및 장치 밀도
320x480 1.0
480x800 1.5
240x320 0.75
1280x7202 우리가 흔히 볼 수 있는 문제 중 하나는 바로 당신이 제품을 만들었다는 것입니다. 현재 시장의 주류 모델과 주류 해상도에 있어서 구조, 사이즈는 모두 정상적인 것이지만 특히 큰 해상도를 가진 휴대전화에
덩어리가 될 수 있다. 이 근본적인 원인은 컨트롤러가 이 큰 해상도에서width, height, margin,padding이 부족하다는 것이다.왜 그랬을까?
예를 들면 다음과 같습니다.
상황: 당신의 앱의 어떤 activity에 TextView가 있는데 TextView의 폭을 160dp로 설정합니다.
* 320x480의 휴대전화에서 dp와 px의 환산 공식에 따라 이 TextView는 320x480의 실제 기기에서 실제로
160dp x 1.0(장치 밀도) = 160px.마침 화면의 반이다.정상으로 표시됩니다.
* 480x800 휴대폰 중 160dp x 1.5 (장치 밀도) = 240px마침 화면의 절반이야.정상으로 표시됩니다.
* 1280x780의 휴대전화 중 160dpx2(설비밀도) = 320px는 화면의 4분의 1만 표시되는 비정상적이다.
그럼 이 상황에서 어떻게 해야 하나요?이 때 위에서 언급한values 폴더를 새로values-1280*720 폴더로 만들고dimens 파일을 다시 쓸 수 있습니다.
이 해상도에서 문제가 있는 컨트롤을 표시하고 일일이 사이즈를 다시 설명하면 됩니다.
그러면 문제가 생겼다. 실제 개발에서 우리가 컨트롤의 사이즈를 동적으로 설정하려면 픽셀 px만 설정할 수 있고 dp는 설정할 수 없다. 이런 상황에서 어떻게 해야 합니까?
또한 간단합니다. dp와 px를 서로 전환시키는 도구 종류를 쓸 수 있습니다.변환 코드를 첨부하다.
public class DensityUtil {
/**
* dip px( )
*/
public static int dip2px(Context context, float dpValue) {
final float density = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * density + 0.5f);
}
/**
* px( ) dp
*/
public static int px2dip(Context context, float pxValue) {
final float density = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / density + 0.5f);
}
}
총괄적으로 말하면 실제 개발에서
가능한 한 dp를 많이 사용하고 px를 사용하지 않으며 사이즈가 일치할 수 있는 상황에서 레이아웃이 일치하지 않습니다.(이건 왜? 더 쉬우니까)
**가중치 적합 **가중치 적합은 선형 레이아웃 LinearLayout에 적용됩니다.이것은 일부 컨트롤의 속성입니다, weight.
만약 어떤 방향에서 weight를 사용한다면, 우리는 대응하는 방향에서 width를 0dp로 설정해야 한다.그것은 우리에게 0dp로 설정된 것은 weight를 사용했기 때문이라고 알려주었다. 시스템은 공간을 차지하는 크기를 계산하는 또 다른 알고리즘을 사용했다
통속적으로 말하자면, View가 권중weight 속성을 설정하면, 이 View의 너비는 원래의 너비 (android:layout width) 와 나머지 공간 (다른 View 컨트롤이 차지하는 너비를 빼기) 의 비례와 같다.
총괄적으로 말하자면 실제 개발에서 온라인성 구조에서
weight가 가장 중요한 부분을 최대한 사용할 수 있다. 왜냐하면 어떤 해상도 휴대전화에 표시되는 것도 같은 효과이기 때문이다.
후기 스크린을 적당히 맞추어 적지 않은 번거로움을 줄일 수 있다.물론 이것은 일정한 한계가 있다. 예를 들어 온라인 구조에서만 사용할 수 있고 복잡한 구조에서 사용하기 어렵다.
**코드 어댑터 **는 기본적으로 화면 어댑터를 해결하는 궁극적인 방법이다. 바로 실행할 때 핸드폰 화면 속성을 동적으로 얻어 View 컨트롤러의 사이즈를 동적으로 설정하는 것이다.
흔히 볼 수 있는 장면은 만약에 당신의 앱에 사이드바가 있다면 예를 들어 우리가 제3자의 슬라이딩 Menu를 사용한다면 우리는 그것을 화면에 미리 남겨 두는 공간으로 설정할 것이다. set Behind Offset(int pixels).
우리는 화면의 폭을 동적으로 가져올 수 있으며, 화면의 3분의 2를 취하면 된다.(이 간단한 코드들은 군더더기 없이 서술한다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.