2012-07-09 2 views
4

아이스크림 샌드위치에 보이는 토글 슬라이드를 다시 만들려고하지만 ICS 아래의 안드로이드 버전에서는 사용할 수 없습니다. 나는 슬라이더에 익숙하지만 현재는 평행 사변형 이미지 두 개를 사용하고 있습니다 (하나는 꺼짐 상태, 다른 하나는 켜기 상태). 런타임에 드로어 블을 생성하고 상태에 따라 색을 변경하는 것이 이상적입니다. 이것은 결국 사용자 정의에 도움이됩니다.프로그래밍 방식으로 안드로이드에서 평행 사변형 드로어 블을 생성하십시오.

나는 우리의 프레임 워크에서 xml을 사용하지 않기 때문에 드로어 블을 일반적으로 새롭고 프로그래밍 방식으로이 드로어를 만들고 싶습니다.

이렇게 만드는 이유는 평행 사변형이 하나의 단일 조각이어서 스케일링을 훨씬 쉽게 관리하고 사용자 지정할 수 있기 때문입니다.

도움이 될만한 정보가 있으면 알려 주시기 바랍니다. 당신이 다른 어떤 정보가 필요한 경우 ICS Toggle

은 알려 주시기 바랍니다, 나는 내가 의미있는 방식으로 후 누구인지 설명 바랍니다 :

이 나는 ​​그들의 한 후 내 모델 싶습니다 토글 안드로이드 모습입니다 .

감사합니다.

+0

이와 같은 상황에서 나는 항상 안드로이드 소스를보고 무슨 일이 일어나는지 살펴 봅니다. 관련 ICS 소스를 가져 와서 자신의 프로젝트에 적용하는 것이 가장 좋은 이유는 무엇입니까? –

+0

그들은 실제 구현에서 원시 이미지를 사용하며, 사용할 소스가 없습니다. – HandlerExploit

+0

그들은 실제로 사다리꼴이 아닌가? 또는 슬라이드하는 평행 사변형이 있으며 모서리가 숨겨져 있습니까? – snapfractalpop

답변

5

그래서 직접 대답 할 수있었습니다 ... 나는 드로어 블을 생성하기 위해 경로를 사용하고, 평행 사변형을 만들기 위해 함께 꿰맨 것입니다.

public Drawable createThumbDrawable(boolean checked){ 
    Path path = new Path(); 
    path.moveTo(0, 0); 
    path.lineTo(1, 0); 
    path.lineTo(1, 1); 
    path.lineTo(0, 1); 
    path.close(); 

    PathShape shape = new PathShape(path, 1, 1); 
    ShapeDrawable drawable = new ShapeDrawable(shape); 
    if (checked){ 
     drawable.getPaint().setColor(Color.CYAN); 
    } 
    else 
    { 
     drawable.getPaint().setColor(Color.BLACK); 
    } 
    mThumbLeftDrawable = createLeftThumbDrawable(checked); 
    mThumbRightDrawable = createRightThumbDrawable(checked); 
    return drawable; 
} 

public Drawable createLeftThumbDrawable(boolean checked){ 
    Path path = new Path(); 
    path.moveTo(0, 25); 
    path.lineTo(25, 0); 
    path.lineTo(25, 25); 
    path.close(); 

    PathShape shape = new PathShape(path, 25, 25); 
    ShapeDrawable drawable = new ShapeDrawable(shape); 
    if (checked){ 
     drawable.getPaint().setColor(Color.CYAN); 
    } 
    else 
    { 
     drawable.getPaint().setColor(Color.BLACK); 
    } 
    return drawable; 
} 

public Drawable createRightThumbDrawable(boolean checked){ 
    Path path = new Path(); 
    path.moveTo(0,0); 
    path.lineTo(25, 0); 
    path.lineTo(0, 25); 
    path.close(); 

    PathShape shape = new PathShape(path, 25, 25); 
    ShapeDrawable drawable = new ShapeDrawable(shape); 
    if (checked){ 
     drawable.getPaint().setColor(Color.CYAN); 
    } 
    else 
    { 
     drawable.getPaint().setColor(Color.BLACK); 
    } 
    return drawable; 

} 

public void setChecked(boolean checked) { 
    //Log.d(TAG, "setChecked("+checked+")"); 
    boolean lc = checked; 
    if (!mTextOnThumb) { 
     lc = !checked; 
    } 

    if (checked){ 
     mThumbDrawable = createThumbDrawable(checked);//this.getContext().getResources().getDrawable(R.drawable.slide_off); 
    } 
    else { 
     mThumbDrawable = createThumbDrawable(checked);//this.getContext().getResources().getDrawable(R.drawable.slide); 
    } 

    super.setChecked(checked); 
    mThumbPosition = lc ? getThumbScrollRange() : 0; 
    invalidate(); 
} 
관련 문제