나는 페이지 왼쪽에서 15 %의 GuideLine
입니다.가이드 라인의 비율을 픽셀 단위로 지정하십시오.
이 코드에서의 비율을 얻을 수 있습니다 :
float percent = ((ConstraintLayout.LayoutParams) guideline.getLayoutParams()).guidePercent;
출력 : 0.15
어떻게 픽셀 또는 dpi의 값을받을 수 있나요?
나는 페이지 왼쪽에서 15 %의 GuideLine
입니다.가이드 라인의 비율을 픽셀 단위로 지정하십시오.
이 코드에서의 비율을 얻을 수 있습니다 :
float percent = ((ConstraintLayout.LayoutParams) guideline.getLayoutParams()).guidePercent;
출력 : 0.15
어떻게 픽셀 또는 dpi의 값을받을 수 있나요?
ConstraintLayout
이 이미 배치되었다고 가정하면 수평 가이드 라인은 guideline.getTop()
이고 수직 가이드 라인은 guideline.getLeft()
을 사용하여 픽셀의 상단 또는 좌측 거리를 얻을 수 있습니다. ,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.constraint);
constraintLayout.post(new Runnable() {
@Override
public void run() {
Guideline guideline = findViewById(R.id.guideline);
Log.i(TAG, guideline.getLeft() + "");
}
});
}
주getLeft()
/getTop()
것을 : ConstraintLayout
이 가 아직 배치되지 않은
경우에, 당신은이 배치 될 때까지 기다릴 필요가 (당신이 활동의 onCreate()
에서 말하는) 픽셀 단위로 크기를 반환합니다. 이 크기는 Guideline
과 그 부모 - ConstraintLayout
사이의 거리를 나타냅니다. 이것은 가치가 절대적이지 않다는 것을 의미합니다. 그것은 부모와 관련이 있습니다.
당신이 절대 값을 얻고 싶다면 (예를 들어 당신의 ConstraintLayout
이 깊이 뷰 계층 구조 내에 중첩하고, 당신이 Guideline
화면의 왼쪽에서 얼마나 떨어져 있는지 이해하려는 경우), 다음 View#getLocationOnScreen(int[])
API 활용해야한다 :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.constraint);
constraintLayout.post(new Runnable() {
@Override
public void run() {
Guideline guideline = findViewById(R.id.guideline);
int[] location = new int[2];
guideline.getLocationOnScreen(location);
Log.i(TAG, location[0] + " " + location[1]);
}
});
}
전화 dp가 여러 화면에 대해 다양하기 때문에 dp 수식으로 직접 변환 비율을 찾을 수 없습니다. 그러나 dp에서 그 값을 얻는 간단한 논리가 있습니다.
1) 화면 너비 (500dp)
2) 레이아웃의 여백 (15 %)의 비율을 계산하는 계산이 논리는 모든 장치의 크기를 작동
float dpvalue=totalwidth * percentage
//500 *(0.15) =75(dpvalue)
폭.