스마트기기개발관련/안드로이드 개발

안드로이드 Android ScrollView ( H, V, 대각 ) 스크롤 구현

AlrepondTech 2011. 7. 14. 13:53
반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

출처: http://www.androidpub.com/1430427


안녕하세요~
이기능 구현하자고 자료들을 보았는데 신통히 나온것이 없어 정리하여 올려봅니다.
유용하게 사용하시기를...
 
근데 대각선으로 스크롤 할때 스크롤바가 다 나타나지 않습니다.
혹시 수정하신분 있으시면 알려주세요. 감사합니다.
 
[xml 내용]
<?xml version="1.0" encoding="utf-8"?>
 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id = "@+id/imageViewVerticalScroll"
android:layout_width="200dip" 
android:layout_height="300dip">
 
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id = "@+id/imageViewHorizontalScroll"
android:layout_width="200dip"
android:layout_height="400dip">
 
<ImageView android:id="@+id/fullImgView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg2">
 
</ImageView>
 
</HorizontalScrollView>
 
</ScrollView>
 
[class 소스]
public class mainscv extends Activity implements OnTouchListener {
 
private static HorizontalScrollView Scroll_Horizontal;
private static ScrollView Scroll_Vertical;
protected static int currentX = 0;
protected static int currentY = 0; 
 
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Scroll_Vertical = (ScrollView) findViewById(R.id.imageViewVerticalScroll);
        Scroll_Vertical.setOnTouchListener(this);
        Scroll_Horizontal = (HorizontalScrollView) findViewById(R.id.imageViewHorizontalScroll);
        Scroll_Horizontal.setOnTouchListener(this);
    }
 
public static void scrollBy(int x, int y)
    {
     Scroll_Horizontal.scrollBy(x, 0);
     Scroll_Vertical.scrollBy(0, y);    
    }
 
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
currentX = (int)event.getRawX();
currentY = (int)event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int x2 = (int)event.getRawX();
int y2 = (int)event.getRawY();
scrollBy(currentX-x2, currentY-y2);
currentX = x2;
currentY = y2;
break;
case MotionEvent.ACTION_UP:
break;
default:
currentX = (int)event.getRawX();
currentY = (int)event.getRawY();
break;  
}
currentX = (int)event.getRawX();
currentY = (int)event.getRawY();
return true;
}
}

위에 참고해서 따로 구현 코드

PsjHvScroll.zip
다운로드

 

 

=================================

=================================

=================================

 

 

 

반응형