0

가로 스크롤이있는 이미지 갤러리를 쓰고 있습니다. 이미지는 프로그래밍 방식으로 추가해야합니다. (ImageUtils.scaleImage(imageView, displayMetrics[0], displayMetrics[1]) 전화)HorizontalScrollView가있는 간단한 이미지 갤러리

public void setViewList(Integer linearLayoutId, Integer[] imageIdList, 
          Activity activity) { 

    displayMetrics = ImageUtils.getDisplayMetric(activity); 

    LinearLayout ll = (LinearLayout) findViewById(linearLayoutId); 
    for (Integer imgId : imageIdList) { 
     ImageView imageView = new ImageView(getContext()); 

     imageView.setImageResource(imgId); 
     imageView.setScaleType(ImageView.ScaleType.MATRIX); 

     Integer[] displayMetrics = ImageUtils.getDisplayMetric(activity); 
     ImageUtils.scaleImage(imageView, displayMetrics[0], displayMetrics[1]); 

     Integer[] dstDimension = ImageUtils.createDimension(); 
     ImageUtils.getImageSize(imageView, dstDimension); 
     getImageSizeList().add(dstDimension); 

     ll.addView(imageView); 
    } 

} 

하는 당신은 내가 사용하여 이미지를 다음과 같은 방법을 확장 볼 수 있듯이 : 내가 처리하고 다음 코드와 같이 이미지를 추가하는 사용자 정의 수평 스크롤 뷰를 사용

public static void scaleImage(ImageView imView, int screenWidth, int screenHeight) { 
    Drawable temp = imView.getDrawable(); 

    Bitmap imBitmap = ((BitmapDrawable)temp).getBitmap(); 

    int imWidth = imBitmap.getWidth(); 
    int imHeight = imBitmap.getHeight(); 

    float xScale = ((float) screenWidth)/imWidth; 
    float yScale = ((float) screenHeight)/imHeight; 

    float scale = xScale <= yScale ? xScale : yScale; 
    Matrix scaleMatrix = new Matrix(); 
    scaleMatrix.postScale(scale, scale); 

    Bitmap scBitmap = Bitmap.createBitmap(imBitmap, 0, 0, imWidth, imHeight, scaleMatrix, true); 

    BitmapDrawable scDrBitmap = new BitmapDrawable(imView.getResources(), scBitmap); 
    imView.setImageDrawable(scDrBitmap); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
     ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT 
    ); 

    layoutParams.gravity = Gravity.CENTER; 

    imView.setLayoutParams(layoutParams); 
} 

내 main.xml에 레이아웃은 매우 간단합니다 android.lessons.custom_horizontal_scroll.CustomHorizontalScrollView이 imple입니다

<?xml version="1.0" encoding="utf-8"?> 
<android.lessons.custom_horizontal_scroll.CustomHorizontalScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/horizontalScrollView" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
    <LinearLayout android:orientation="horizontal" 
        android:id="@+id/mainLayout" 
        android:layout_gravity="center" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"/> 
</android.lessons.custom_horizontal_scroll.CustomHorizontalScrollView> 

간단한 사용자 정의 HorizontalScrollView를 참조하십시오.

테스트를 위해 저는 삼성 Galaxy S3 및 다음 해상도의 이미지를 사용합니다 : (1) 1290 * 990 (2) 1221 * 900. 모든 것이 잘 표시되지만 때때로 나는 잘못된 결과를 얻을 수 많은 경우에

enter image description here

: 것 같습니다 무엇 첫 번째 이미지는 다음의 하나에 화면을 분할 응용 프로그램에서의 시간을 시작하고 나는 돈 왜 그런 일이 일어 났는지는 알 수 없습니다.

도움 주셔서 감사합니다.

답변

0

문제를 해결하기 위해 중력 = Gravity.FILL_HORIZONTAL | Gravity.CENTER_VERTICAL, 이미지 뷰 (메서드 ImageUtils.scaleImage)에 프로그래밍 방식으로 설정 한 것.