Need help with Android-RatioLayout?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

mapleqin
461 Stars 74 Forks Apache License 2.0 34 Commits 1 Opened issues

Description

This is a specified proportion to the size of the Layout or View support library, with which you can easily set a fixed ratio of the size of the Layout or View, internal adaptive size calculation, completely abandon the code to calculate the size! If you have any questions in the course or suggestions, please send an e-mail to the following e-mail, thank you!

Services available

!
?

Need anything else?

Contributors list

Android-RatioLayout Build Status Download

This is a specified proportion to the size of the Layout or View support library, with which you can easily set a fixed ratio of the size of the Layout or View, internal adaptive size calculation, completely abandon the code to calculate the size! If you have any questions in the course or suggestions, please send an e-mail to the following e-mail, thank you!

For more information please see the website

Screenshots

Sample Sample

Android-RatioLayout with xml code

<net.soulwolf.widget.ratiolayout.widget.ratioimageview android:id="@+id/image2" android:layout_width="match_parent" android:layout_height="match_parent" app:datumratio="datumWidth" app:widthratio="16.0" app:heightratio="7.0" android:scaletype="centerCrop"></net.soulwolf.widget.ratiolayout.widget.ratioimageview>

<net.soulwolf.widget.ratiolayout.widget.ratiotextview android:layout_width="match_parent" android:layout_height="match_parent" android:textsize="25sp" android:textstyle="bold" android:gravity="center" app:datumratio="datumWidth" app:widthratio="16.0" android:background="@color/sample_text" app:heightratio="7.0" android:text="RatioImageView/RatioTextView:16*7" android:textcolor="@android:color/white"></net.soulwolf.widget.ratiolayout.widget.ratiotextview>

</net.soulwolf.widget.ratiolayout.widget.ratioframelayout>

<net.soulwolf.widget.ratiolayout.widget.ratiotextview android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@color/sample_primary" android:gravity="center" android:text="Square" android:textcolor="@android:color/white" android:textsize="20sp" android:textstyle="bold" app:layoutsquare="true"></net.soulwolf.widget.ratiolayout.widget.ratiotextview>

<net.soulwolf.widget.ratiolayout.widget.ratioview android:layout_width="15dp" android:layout_height="wrap_content" app:heightratio="1" app:widthratio="1"></net.soulwolf.widget.ratiolayout.widget.ratioview>

<net.soulwolf.widget.ratiolayout.widget.ratiotextview android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@color/sample_primary" android:gravity="center" android:text="AspectRatio:1.0" android:textcolor="@android:color/white" android:textsize="20sp" android:textstyle="bold" app:layoutaspectratio="1"></net.soulwolf.widget.ratiolayout.widget.ratiotextview>

<net.soulwolf.widget.ratiolayout.widget.ratiorelativelayout xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" app:datumratio="datumWidth" app:widthratio="15.0" app:layout_margintop="8dp" app:heightratio="10.0" app:layout_height="wrap_content"></net.soulwolf.widget.ratiolayout.widget.ratiorelativelayout>

Android-RatioLayout with java code

RatioFrameLayout ratioFrameLayout = new RatioFrameLayout(context);
ratioFrameLayout.setRatio(datumRatio,widthRatio,heightRatio);
ratioFrameLayout.setSquare(square);
ratioFrameLayout.setAspectRatio(aspectRatio);

Attr params info

attrName Explanation
datumRatio This parameter indicates the ratio is calculated based on Width Or Height! Default auto
widthRatio This parameter indicates the proportion of the size Width
heightRatio This parameter indicates the proportion of the size Height
layoutSquare This parameter indicates the proportion of the square
layoutAspectRatio This parameter indicates the proportion of the (width / height)

Implementing View!

Custom

public class RatioFrameLayout extends FrameLayout implements RatioMeasureDelegate {

private RatioLayoutDelegate mRatioLayoutDelegate;


public RatioFrameLayout(Context context) {
    super(context);
}

public RatioFrameLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    mRatioLayoutDelegate = RatioLayoutDelegate.obtain(this, attrs);
}

public RatioFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    mRatioLayoutDelegate = RatioLayoutDelegate.obtain(this, attrs, defStyleAttr);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public RatioFrameLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    mRatioLayoutDelegate = RatioLayoutDelegate.obtain(this, attrs, defStyleAttr, defStyleRes);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    if (mRatioLayoutDelegate != null) {
        mRatioLayoutDelegate.update(widthMeasureSpec, heightMeasureSpec);
        widthMeasureSpec = mRatioLayoutDelegate.getWidthMeasureSpec();
        heightMeasureSpec = mRatioLayoutDelegate.getHeightMeasureSpec();
    }
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
public void setRatio(RatioDatumMode mode, float datumWidth, float datumHeight) {
    if (mRatioLayoutDelegate != null) {
        mRatioLayoutDelegate.setRatio(mode, datumWidth, datumHeight);
    }
}

@Override
public void setSquare(boolean square) {
    if (mRatioLayoutDelegate != null) {
        mRatioLayoutDelegate.setSquare(square);
    }
}

@Override
public void setAspectRatio(float aspectRatio) {
    if (mRatioLayoutDelegate != null) {
        mRatioLayoutDelegate.setAspectRatio(aspectRatio);
    }
}

}

Maven

  net.soulwolf.widget
  ratiolayout
  2.1.0
  pom

Gradle

allprojects {
   repositories {
      jcenter()
   }
}

compile 'net.soulwolf.widget:ratiolayout:2.1.0'

Developed by

Amphiaraus - [email protected]

License

Copyright 2015 The Android Open Source Project for Android-RatioLayout

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.