android UI 추가 단추 그리 기
프로젝트 에서 우 리 는 항상 이런 view 를 사용한다.
이때 우 리 는 두 개의 그림 을 사용 하여 서로 전환 하 는 것 을 선택 할 것 이다.사실 기본 적 인 2D 그래 픽 과 같은 간단 한 그림 을 스스로 그 릴 수만 있다 면 문제없다.
내 가 만 든 효과 도 를 먼저 보 여 준다.
다음은 여러분 이 참고 할 수 있 도록 플러스 마이너스 로 그 려 진 코드 를 드 리 겠 습 니 다.
다음은 핵심 코드 입 니 다.
/**
* +
*/
public class AddView extends View {
protected Paint paint;
protected int HstartX, HstartY, HendX, HendY;//
protected int SstartX, SstartY, SsendX, SsendY;//
protected int paintWidth = 2;// 10
protected int paintColor = Color.BLACK;//
protected int padding = 3;// 3 padding
public int getPadding() {
return padding;
}
// , padding
public void setPadding(int padding) {
SsendY = HendX = width - padding;
SstartY = HstartX = padding;
}
// ,
public void setPaintColor(int paintColor) {
paint.setColor(paintColor);
}
// ,
public void setPaintWidth(int paintWidth) {
paint.setStrokeWidth(paintWidth);
}
public AddView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
private void initView() {
paint = new Paint();
paint.setColor(paintColor);
paint.setStrokeWidth(paintWidth);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int width;
if (widthMode == MeasureSpec.EXACTLY) {
// MeasureSpec.EXACTLY view
width = widthSize;
} else {
width = 60;//
}
SstartX = SsendX = HstartY = HendY = width / 2;
SsendY = HendX = width - getPadding();
SstartY = HstartX = getPadding();
// ,
setMeasuredDimension(width, width);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//
canvas.drawLine(HstartX, HstartY, HendX, HendY, paint);
//
canvas.drawLine(SstartX, SstartY, SsendX, SsendY, paint);
}
}
/**
* -
*/
public class RemoveView extends AddView {
public RemoveView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
// ,
canvas.drawLine(HstartX, HstartY, HendX, HendY, paint);
}
}
그 중에서 도 횡선 과 세로 선의 위 치 를 계산 하 는 것 이 중요 하 다.view 의 폭 을 가 져 온 후 view 를 정사각형 으로 설정 하고 다음 과 같이 합 니 다.이렇게 해서 가장 중요 한 플러스 마이너스 번 호 를 다 만 들 었 고 다른 것 은 모두 작은 뜻 이다.
나 는 주요 xml 파일 을 붙 였 다.
주 보기:layotadd_remove.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:padding="2dp"
android:background="@drawable/bg_add_remove_view"
android:orientation="horizontal">
<com.android.ui.TextView.AddView
android:id="@+id/add_view"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_add_view" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="3dp"
android:background="@null"
android:inputType="number"
android:text="0" />
<com.android.ui.TextView.RemoveView
android:id="@+id/remove_view"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_remove_view" />
</LinearLayout>
주 보기 배경:bgadd_remove_view.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- -->
<corners android:radius="5dp" />
<!-- -->
<solid android:color="@android:color/white" />
<!-- -->
<stroke
android:width="0.5dp"
android:color="@android:color/darker_gray" />
</shape>
플러스 배경:bgadd_view.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_add_true" android:state_pressed="true" />
<item android:drawable="@drawable/bg_add_false" android:state_pressed="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- -->
<item>
<shape>
<solid android:color="@android:color/darker_gray" />
</shape>
</item>
<item
android:bottom="0dp"
android:left="0dp"
android:right="0.5dp"
android:top="0dp">
<!-- -->
<shape>
<!-- -->
<solid android:color="@android:color/darker_gray" />
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- -->
<item>
<shape>
<solid android:color="@android:color/darker_gray" />
</shape>
</item>
<item
android:bottom="0dp"
android:left="0dp"
android:right="0.5dp"
android:top="0dp">
<!-- -->
<shape>
<!-- -->
<solid android:color="@android:color/white" />
</shape>
</item>
</layer-list>
마이너스 의 배경 색 설정 은 플러스 와 같 습 니 다.세로 선의 위치 가 다 를 뿐 입 니 다.
<item
android:bottom="0dp"
android:left="0.5dp"
android:right="0dp"
android:top="0dp">
우 리 는 그림 을 전혀 사용 하지 않 은 상태 에서 이 ui 를 완성 할 수 있다.물론 최적화 할 점 이 많다.예 를 들 어 padding 을 설정 하고 마이너스 색상 을 수정 하면 이 레이아웃 의 크기 는 모두 코드 를 통 해 이 루어 질 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.