Home
› Uncategorized
As mentioned in the post "Implement Android Gallery widget" - android.widget.Gallery is no longer supported. Other horizontally scrolling widgets include HorizontalScrollView and ViewPager from the support library.
It's a example to implement Gallery-like view using HorizontalScrollView. Please note that in this example, the bitmaps in HorizontalScrollView will not be removed even not in screen. So if too much bitmaps loaded, error of java.lang.OutOfMemoryError will be thrown!
Add HorizontalScrollView in layout:
Main Java code:
Download the files.
Next:
- Implement custom LinearLayout for Gallery-like HorizontalScrollView
It's a example to implement Gallery-like view using HorizontalScrollView. Please note that in this example, the bitmaps in HorizontalScrollView will not be removed even not in screen. So if too much bitmaps loaded, error of java.lang.OutOfMemoryError will be thrown!
Add HorizontalScrollView in layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/mygallery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" /> </HorizontalScrollView> </LinearLayout> Main Java code:
package com.example.androidhorizontalscrollviewgallery; import java.io.File; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.Gravity; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { LinearLayout myGallery; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myGallery = (LinearLayout)findViewById(R.id.mygallery); String ExternalStorageDirectoryPath = Environment .getExternalStorageDirectory() .getAbsolutePath(); String targetPath = ExternalStorageDirectoryPath + "/test/"; Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show(); File targetDirector = new File(targetPath); File[] files = targetDirector.listFiles(); for (File file : files){ myGallery.addView(insertPhoto(file.getAbsolutePath())); } } View insertPhoto(String path){ Bitmap bm = decodeSampledBitmapFromUri(path, 220, 220); LinearLayout layout = new LinearLayout(getApplicationContext()); layout.setLayoutParams(new LayoutParams(250, 250)); layout.setGravity(Gravity.CENTER); ImageView imageView = new ImageView(getApplicationContext()); imageView.setLayoutParams(new LayoutParams(220, 220)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setImageBitmap(bm); layout.addView(imageView); return layout; } public Bitmap decodeSampledBitmapFromUri(String path, 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(path, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; bm = BitmapFactory.decodeFile(path, options); return bm; } public int calculateInSampleSize( BitmapFactory.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; } } Next:
- Implement custom LinearLayout for Gallery-like HorizontalScrollView
-- Delivered by Feed43 service
Related Posts
There is no other posts in this category.Popular
-
Button Savior Pro (Root) v1.6.2b (Paid Version) Android Apk App DownloadButton Savior Pro (Root) v1.6.2b Requirements: Android 1.6 + / Rooted device Overview: If you a…
-
Majesty: Northern Expansion Full v.1.0.7 (Paid Version) Android Apk Game DownloadMajesty: Northern Expansion Full v.1.0.7 Requirements: Android 1.6+ Overview: “Majesty: The Nor…
-
Apply LruCache on GridViewThe example " Caching Bitmaps with LruCache " provide a example to Apply LruCache on G…
-
[Android] Modern Combat 3: Fallen Nation v1.0.1 APKModern Combat 3 , named as Fallen Nation, has returned with higher intensity and apocalyptic battle…
-
ezPDF Reader PDF Annotate Form v1.9.4.0 (Paid Version) Android Apk App DownloadezPDF Reader PDF Annotate Form v1.9.4.0 Requirements: Android OS 2.1+ Overview: Audio & Vid…
-
Babel Rising 3D v1.7.1 APKPlay God Almighty in Babel Rising 3D to prevent the Babylonians from building the famous Babel …
-
GBA.emu v1.4.32 APKGameboy Advance emulator based on VBA-M r1097 (GPL), designed and tested on the Xoom, Galaxy S2, …

Post a Comment
Post a Comment