>

Android 프로그래밍을 처음 사용하고 오버플로를 누적하기 때문에 앱에서 SlidingDrawer의 애니메이션 속도를 느리게해야합니다.

이미 다음과 같이 SlidingDrawer를 이미 서브 클래 싱했습니다 :

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.SlidingDrawer;
public class WrappingSlidingDrawer extends SlidingDrawer {
public WrappingSlidingDrawer(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    int orientation = attrs.getAttributeIntValue("android", "orientation", ORIENTATION_VERTICAL);
    mTopOffset = attrs.getAttributeIntValue("android", "topOffset", 0);
    mVertical = (orientation == SlidingDrawer.ORIENTATION_VERTICAL);
}
public WrappingSlidingDrawer(Context context, AttributeSet attrs) {
    super(context, attrs);
    int orientation = attrs.getAttributeIntValue("android", "orientation", ORIENTATION_VERTICAL);
    mTopOffset = attrs.getAttributeIntValue("android", "topOffset", 0);
    mVertical = (orientation == SlidingDrawer.ORIENTATION_VERTICAL);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
    int widthSpecSize =  MeasureSpec.getSize(widthMeasureSpec);
    int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
    int heightSpecSize =  MeasureSpec.getSize(heightMeasureSpec);
    if (widthSpecMode == MeasureSpec.UNSPECIFIED || heightSpecMode == MeasureSpec.UNSPECIFIED) {
        throw new RuntimeException("SlidingDrawer cannot have UNSPECIFIED dimensions");
    }
    final View handle = getHandle();
    final View content = getContent();
    measureChild(handle, widthMeasureSpec, heightMeasureSpec);
    if (mVertical) {
        int height = heightSpecSize - handle.getMeasuredHeight() - mTopOffset;
        content.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height, heightSpecMode));
        heightSpecSize = handle.getMeasuredHeight() + mTopOffset + content.getMeasuredHeight();
        widthSpecSize = content.getMeasuredWidth();
        if (handle.getMeasuredWidth() > widthSpecSize) widthSpecSize = handle.getMeasuredWidth();
    }
    else {
        int width = widthSpecSize - handle.getMeasuredWidth() - mTopOffset;
        getContent().measure(MeasureSpec.makeMeasureSpec(width, widthSpecMode), heightMeasureSpec);
        widthSpecSize = handle.getMeasuredWidth() + mTopOffset + content.getMeasuredWidth();
        heightSpecSize = content.getMeasuredHeight();
        if (handle.getMeasuredHeight() > heightSpecSize) heightSpecSize = handle.getMeasuredHeight();
    }
    setMeasuredDimension(widthSpecSize, heightSpecSize);
}
private boolean mVertical;
private int mTopOffset;

}

이 링크를 찾았습니다 : SlidingDrawer에서 애니메이션 속도를 변경하는 방법 , 대체 구현을 찾거나 소스를 복사하여 수정할 수 있다고 말합니다.

내 프로젝트에서 SlidingDrawer.java를 만들고 여기 에 오류가 있습니다. R.styleable.SlidingDrawer를 참조하는 여러 줄이 있습니다 (예 :

TypedArray a = context.obtainStyledAttributes(attrs,
            R.styleable.SlidingDrawer, defStyle, 0);

이클립스는 해결할 수 없다

Eclipse가 해석 할 수없는 4 개의 멤버 변수 (mTop, mBottom, mLeft, mRight)도 있습니다.

Eclipse에서 이러한 자원/변수를 찾도록하려면 어떻게해야합니까? 그런 다음 애니메이션을 느리게하기 위해 일부 변수를 편집 할 수 있습니까?

  • 답변 # 1

    R.styleable이 SDK에서 제거되었다고 생각합니다. 그래도 직접 작성할 수 있습니다.

    값 폴더에서 xml 파일을 만듭니다

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
    <declare-styleable name="MySlider"> 
            <attr name = "SlidingDrawer_orientation"  format="integer"/>
            <attr name = "SlidingDrawer_bottomOffset" format = "dimension"/>
            <attr name = "SlidingDrawer_topOffset" format = "dimension"/>
            <attr name = "SlidingDrawer_allowSingleTap" format = "boolean"/>
            <attr name = "SlidingDrawer_animateOnClick" format = "boolean"/>
            <attr name = "SlidingDrawer_handle" format = "reference"/>
            <attr name = "SlidingDrawer_content" format = "reference"/>
        </declare-styleable>
    </resources>
    
    

    이제 슬라이더 클래스에서 XML 파일을 참조 할 수 있습니다

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MySlider, defStyle, 0);
    int orientation = a.getInt(R.styleable.MySlider_SlidingDrawer_orientation, ORIENTATION_VERTICAL);
    //...etc. ...
    
    

    슬라이딩 드로어 클래스도 확장하고 있는데 이것은 저에게 효과적입니다.

  • 이전 python - wxPython 패널이있는 최소 크기의 프레임
  • 다음 Java에서 IP 주소를 사용하여 위치를 찾는 샘플 코드는 무엇입니까?