백분율 레이아웃(번역,체험)레이아웃 문제 해결,또 하나의 체험
15434 단어 androidgit.퍼센트배치RelativeLayout
우 리 는 과거 에 전통 적 인 RelativeLayout,LinearLayout,FrameLayout 를 자주 사 용 했 습 니 다.그리고 스 트 레 칭 이 가능 한 Collapsing ToolbarLayout 등 은 프로젝트 에서 많이 사용 되 지 않 았 습 니 다.예전 에 백분율 구조
percent
를 알 고 있 었 지만 보 러 갈 생각 을 하지 못 했 습 니 다.관련 내용 을 시험 해 보 세 요.마침 오늘 생각 나 서 그 에 관 한 한 편 을 썼 습 니 다.앤 리 하 자신의 통합 라 이브 러 리:https://github.com/ddwhan0123/Useful-Open-Source-Android빨리 와 포크,스타!!!
쓸데없는 말 이 많 지 않 으 니 먼저 실험의 효 과 를 붙 여 라.
구체 적 으로 코드 를 붙 이기 전에 먼저 설명 을 해 야 한다.공식 컨트롤 이기 때문에 예 를 너무 많이 넣 지 않 아 도 되 고 사람들 에 게 이해 시 키 는 것 이 더욱 중요 하 다.
이 편 은 주로 Relative Layout 의 진화 판
PercentRelativeLayout
을 다 루 는 동시에 사용자 정의PercentLinearLayout
를 제시 하 는 것 이다.글자 의 뜻 을 보면 사람들 이 쉽게 이해 할 수 있다.하 나 는 백분율 의 상대 적 인 구조 이 고 하 나 는 백분율 의 선형 구조 이다.다음 예 는 공식 적 인 Percent Relative Layout 를 가지 고 일련의 프 리 젠 테 이 션 을 하 는 것 입 니 다)
문제 1.어떻게 인용 합 니까?
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
app:layout_marginTopPercent="25%"
app:layout_marginLeftPercent="25%"/>
</android.support.percent.PercentFrameLayout>
정상 적 인 Relative Layout 컨트롤 을 참조 하 는 것 처럼 안쪽 으로 잃 어 버 리 고 구체 적 인 백분율 행 위 는 하위 컨트롤 에서 작 동 합 니 다.얼핏 보면 잘 보이 는데,일반적인 설정 과 의 차 이 는 layot 에 있 습 니 다.width 또는 layotheight 는 공간의 사 이 즈 를 조절 하 는 것 이 아니 라 app:layot 를 사용 합 니 다.width Percent="50%"와 app:layotheight Percent='50%'라 는 탭 은 크기 를 조절 합 니 다.크기 의 구체 적 인 수 치 는%에 의 해 결 정 됩 니 다.물론 여기 서 차지 하 는 비례 는 용기 부모 컨트롤 의%크기 에 달 려 있 습 니 다.
그럼 새로운 꼬리표 가 있 으 니 소개 해 주세요.
// , , , layout_width/height="wrap_content" , "wrap_content"
app:layout_widthPercent
app:layout_heightPercent
// , RelativeLayout % ,
app:layout_marginPercent
app:layout_marginLeftPercent
app:layout_marginTopPercent
app:layout_marginRightPercent
app:layout_marginBottomPercent
app:layout_marginStartPercent
app:layout_marginEndPercent
// 16:9 , 16:9(1.78:1)
app:layout_aspectRatio="178%"
자세 한 내용 은 다음 과 같다.https://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html
OK,우 리 는 간단하게 소스 코드 를 읽 고 예 코드 를 붙 이면 일 을 끝 냅 니 다!
전체 클래스 자체 의 코드 가 많 지 않 아서 100 줄 이 안 되 고 읽 기 가 쉬 운 편 입 니 다.Go
public class PercentRelativeLayout extends RelativeLayout
예 상 했 던 대로 RelativeLayout 의 뒤 를 이 었 습 니 다.
글 의 처음에 공식 적 으로 소개 되 었 다.
If a layout wants to support percentage based dimensions and use this helper class, its LayoutParams subclass must implement this interface.
그래서 Percent Relative Layout 의 일련의 실현 은 모두
PercentLayoutHelper
와 관련 이 있다. private final PercentLayoutHelper mHelper = new PercentLayoutHelper(this);
원본 코드 를 시작 할 때 이 Helper 의 인 스 턴 스 를 가 져 와 호출 합 니 다.
//
@Override
protected LayoutParams generateDefaultLayoutParams() {
return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
}
//
@Override
public LayoutParams generateLayoutParams(AttributeSet attrs) {
return new LayoutParams(getContext(), attrs);
}
// ,
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
mHelper.adjustChildren(widthMeasureSpec, heightMeasureSpec);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mHelper.handleMeasuredStateTooSmall()) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
// , mHelper
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
mHelper.restoreOriginalParams();
}
내부 클래스 는 Percent Relative Layout 에 게 레이아웃 실현 을 하 는 데 사 용 됩 니 다.다 중 실현 원칙 만 계승 하기 때문에 하나의 Layout Params 를 Percent Relative Layout 로 구축 할 수 있 습 니 다.
public static class LayoutParams extends RelativeLayout.LayoutParams implements PercentLayoutHelper.PercentLayoutParams {
private PercentLayoutHelper.PercentLayoutInfo mPercentLayoutInfo;
public LayoutParams(Context c, AttributeSet attrs) {
super(c, attrs);
mPercentLayoutInfo = PercentLayoutHelper.getPercentLayoutInfo(c, attrs);
}
public LayoutParams(int width, int height) {
super(width, height);
}
public LayoutParams(ViewGroup.LayoutParams source) {
super(source);
}
public LayoutParams(MarginLayoutParams source) {
super(source);
}
@Override
public PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo() {
if (mPercentLayoutInfo == null) {
mPercentLayoutInfo = new PercentLayoutHelper.PercentLayoutInfo();
}
return mPercentLayoutInfo;
}
@Override
protected void setBaseAttributes(TypedArray a, int widthAttr, int heightAttr) {
PercentLayoutHelper.fetchWidthAndHeight(this, a, widthAttr, heightAttr);
}
}
저희 가 이 루어 진 XML 을 붙 여 보도 록 하 겠 습 니 다.
<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="wjj.com.percentdemo.MainActivity">
<ImageView android:id="@+id/a1" android:layout_width="0dp" android:layout_height="0dp" android:layout_alignParentTop="true" android:background="@drawable/a1" app:layout_heightPercent="30%" app:layout_widthPercent="70%" />
<ImageView android:id="@+id/a3" android:layout_width="0dp" android:layout_height="0dp" android:layout_below="@id/a1" android:background="@drawable/a3" app:layout_heightPercent="28%" app:layout_widthPercent="60%" />
<ImageView android:id="@+id/a2" android:layout_width="0dp" android:layout_height="0dp" android:layout_below="@id/a1" android:layout_toRightOf="@+id/a3" android:background="@drawable/a2" app:layout_heightPercent="28%" app:layout_widthPercent="40%" />
<ImageView android:id="@+id/a4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="@drawable/a4" app:layout_heightPercent="25%" app:layout_widthPercent="25%" />
<ImageView android:layout_below="@id/a2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/a5" app:layout_heightPercent="35%" android:layout_centerHorizontal="true" app:layout_widthPercent="35%" android:layout_alignParentBottom="true"/>
</android.support.percent.PercentRelativeLayout>
여기에 다시 보충 합 니 다.
최저 버 전 안 드 로 이 드 2.1 즉 7(현재 4.0 이하 의 것 도 있 습 니까?한 걸음 만 더 물 러 서 세 요.4.3 이하 도 있 나 요?)
원본 주소:https://github.com/ddwhan0123/BlogSample/tree/master/PercentDemo
다운로드 주소:https://github.com/ddwhan0123/BlogSample/blob/master/PercentDemo/PercentDemo.zip?raw=true
Percent LinearLayout,이런 종류,인터넷 에서 파 온 모 르 는 작가,여기 도 0,0 을 성명 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.