Android 에서 Horizontal ScrollView 사용 방법 에 대한 자세 한 설명

모 바 일 장치 의 물리 적 디 스 플레이 공간 이 일반적으로 제한 되 어 있 기 때문에 표시 할 모든 내용 을 한꺼번에 화면 에 표시 할 수 없습니다.그래서 각 플랫폼 은 일반적으로 스크롤 가능 한 보 기 를 제공 하여 사용자 에 게 데 이 터 를 보 여 줍 니 다.Android 플랫폼 프레임 워 크 에 서 는 ListView,GirdView,ScrollView 등 스크롤 보기 컨트롤 을 제공 합 니 다.이 몇 개의 보기 컨트롤 도 저희 가 평소에 가장 많이 사용 합 니 다.Horizontal ScrollView 의 사용 과 주의해 야 할 점 을 소개 합 니 다.
 Horizontal ScrollView 는 FrameLayout 입 니 다.  ,이것 은 하위 컨트롤 만 아래 에 놓 을 수 있다 는 것 을 의미 합 니 다.이 하위 컨트롤 은 많은 데이터 내용 을 포함 할 수 있 습 니 다.이 하위 컨트롤 자체 가 레이아웃 컨트롤 일 수 있 습 니 다.데 이 터 를 보 여 주 는 다른 컨트롤 을 많이 포함 할 수 있 습 니 다.이 레이아웃 컨트롤 은 보통 수평 레이아웃 의 LinearLayout 를 사용 합 니 다.  。TextView 도 스크롤 가능 한 보기 컨트롤 이기 때문에 Horizontal ScrollView 가 필요 하지 않 습 니 다.
Horizontal ScrollView 에 많은 그림 이 포함 되 어 있 고 스크롤 해서 볼 수 있 는 예 시 를 소개 합 니 다.

 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout. activity_main); 
  
  mLinearLayout = (LinearLayout) findViewById(R.id.mygallery); 
  
  File externalDir = Environment. getExternalStorageDirectory(); 
  String photosPath = externalDir.getAbsolutePath() + "/test/"; 
  File photosFile = new File(photosPath); 
  
  for (File photoFile : photosFile.listFiles()) { 
    mLinearLayout.addView(getImageView(photoFile.getAbsolutePath())); 
  } 
  
} 
 
 private View getImageView(String absolutePath) { 
  
  Bitmap bitmap = decodeBitmapFromFile(absolutePath, 200, 200); 
 LinearLayout layout = new LinearLayout(getApplicationContext()); 
 layout.setLayoutParams( new LayoutParams(250, 250)); 
 layout.setGravity(Gravity. CENTER); 
  
  ImageView imageView = new ImageView(this); 
  imageView.setLayoutParams( new LayoutParams(200,200)); 
  imageView.setScaleType(ImageView.ScaleType. CENTER_CROP); 
  imageView.setImageBitmap(bitmap); 
  layout.addView(imageView); 
  
  return layout; 
} 
 
 private Bitmap decodeBitmapFromFile(String absolutePath, int reqWidth, int reqHeight) { 
 Bitmap bm = null; 
  
  // First decode with inJustDecodeBounds=true to check dimensions 
  final BitmapFactory.Options options = new BitmapFactory.Options(); 
  options. inJustDecodeBounds = true ; 
  BitmapFactory. decodeFile(absolutePath, options); 
  
  // Calculate inSampleSize 
  options. inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 
  
  // Decode bitmap with inSampleSize set 
  options. inJustDecodeBounds = false ; 
  bm = BitmapFactory. decodeFile(absolutePath, options); 
  
  return bm; 
} 
 
 private int calculateInSampleSize(Options options, int reqWidth, 
    int reqHeight) { 
  // Raw height and width of image 
  final int height = options.outHeight; 
  final int width = options.outWidth; 
  int inSampleSize = 1; 
   
  if (height > reqHeight || width > reqWidth) { 
  if (width > height) { 
  inSampleSize = Math. round((float)height / ( float)reqHeight); 
  } else { 
  inSampleSize = Math. round((float)width / ( float)reqWidth); 
  } 
  } 
  
  return inSampleSize; 
} 
표시 할 그림 은 외 장 SDCard 의 test 디 렉 터 리 에 놓 여 있 습 니 다.위의 예제 프로그램 은 큰 그림 의 미리 보기 버 전 만 표시 하고 이 부분 에 대해 모 르 는 것 은 참고 할 수 있 습 니 다.
Android 는 어떻게 비교적 큰 Bitmaps 를 효율적으로 표시 합 니까?
Horizontal ScrollView 는 지정 한 위치(x,0)로 스크롤 하 는 것 도 설정 할 수 있 으 며,하위 컨트롤 도 따라 스크롤 합 니 다.

new Handler().postDelayed(new Runnable() { 
 @Override 
 public void run() { 
  //       800px,            smoothScrollTo(int x, int y) 
  hsv.scrollTo(800, 0); 
 } 
}, 2000); 
효과 그림:

이상 은 본 고의 모든 내용 입 니 다.여러분 이 안 드 로 이 드 소프트웨어 프로 그래 밍 을 배 우 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기