الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشاركة صورة في Universal-Image-Loader

بدأه computer_man في 9 يوليو 2013 · 1 رد · 793 مشاهدة · في Android
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم 

اضفت زر مشاركة الصورة للي اوت باسم sher بس ماني لاقي الطريقة الصحيحة للمشاركة.

ابي تعديل الكود التالي لكي يعمل بشكل صحيح.

/*******************************************************************************
 * Copyright 2011-2013 Sergey Tarasevich
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.nostra13.example.universalimageloader;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.nostra13.example.universalimageloader.Constants.Extra;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

/**
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
 */
public class ImagePagerActivity extends BaseActivity {

	private static final String STATE_POSITION = "STATE_POSITION";

	DisplayImageOptions options;

	ViewPager pager;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.ac_image_pager);

		Bundle bundle = getIntent().getExtras();
		String[] imageUrls = bundle.getStringArray(Extra.IMAGES);
		int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0);

		if (savedInstanceState != null) {
			pagerPosition = savedInstanceState.getInt(STATE_POSITION);
		}

		options = new DisplayImageOptions.Builder()
			.showImageForEmptyUri(R.drawable.ic_empty)
			.showImageOnFail(R.drawable.ic_error)
			.resetViewBeforeLoading(true)
			.cacheOnDisc(true)
			.imageScaleType(ImageScaleType.EXACTLY)
			.bitmapConfig(Bitmap.Config.RGB_565)
			.displayer(new FadeInBitmapDisplayer(300))
			.build();

		pager = (ViewPager) findViewById(R.id.pager);
		pager.setAdapter(new ImagePagerAdapter(imageUrls));
		pager.setCurrentItem(pagerPosition);
	
	
	
		 Button SaveImageButton = (Button)findViewById(R.id.sher);
		 SaveImageButton.setOnClickListener(new Button.OnClickListener(){

	        	public void onClick(View arg0) {
	        		// TODO Auto-generated method stub
	        		
	        		Bitmap bitmap = null;
	        		OutputStream output;
	        		Intent share;
	        		
	        		// Decoding the image
	        		Bitmap mSaveBit = imageLoader.getMemoryCache().get(Constants.IMAGES[pager.getCurrentItem()]);
                    File imageFile = null;
                    if(null==mSaveBit){
                        imageFile =  imageLoader.getDiscCache().get(Constants.IMAGES[pager.getCurrentItem()]);
                     }
	        	    
	        		// Find the SD Card path
	        		File filepath = Environment.getExternalStorageDirectory();
	        		
	        		// Create a new folder AndroidBegin in SD Card
	        	    File dir = new File (filepath.getAbsolutePath() + "/ramadanpics‬/");
	    			dir.mkdirs();
	    			
	    			// Create a name for the saved image
	        	    File file = new File(dir, "sample_wallpaper.png");
	        	    
	        	    try {
	        	    	
	        	    	// Start Share Intent
	        	    	share = new Intent(Intent.ACTION_SEND);
	        	    	
	        	    	// Type of file to share
	        			share.setType("image/jpeg");
	        			
	        			// Saves the file into SD Card
	        	    	output = new FileOutputStream(file);
	        	     
	        	    	// Compress into png format image from 0% - 100%, using 100% for this tutorial
	        	    	bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);    	     
	        	    	output.flush();
	        	    	output.close();
	        	    	
	        	    	// Locate the image to Share
	        	    	Uri uri = Uri.fromFile(file);
	        	    	
	        	    	// Captures the share image
	        			share.putExtra(Intent.EXTRA_STREAM,uri);

	        			// Start the share dialog
	        			startActivity(Intent.createChooser(share, "Share Image"));
	        	    }
	        	    
	        	    // Catch exceptions
	        	    catch(Exception e){
	        	    	// TODO Auto-generated catch block
	        	    	e.printStackTrace();  
	        	    }
	        	}
	        	});
	
	
	
	
	
	
	
	
	}

	@Override
	public void onSaveInstanceState(Bundle outState) {
		outState.putInt(STATE_POSITION, pager.getCurrentItem());
	}

	private class ImagePagerAdapter extends PagerAdapter {

		private String[] images;
		private LayoutInflater inflater;

		ImagePagerAdapter(String[] images) {
			this.images = images;
			inflater = getLayoutInflater();
		}

		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			((ViewPager) container).removeView((View) object);
		}

		@Override
		public void finishUpdate(View container) {
		}

		@Override
		public int getCount() {
			return images.length;
		}

		@Override
		public Object instantiateItem(ViewGroup view, int position) {
			View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false);
			ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
			final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);

			imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {
				@Override
				public void onLoadingStarted(String imageUri, View view) {
					spinner.setVisibility(View.VISIBLE);
				}

				@Override
				public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
					String message = null;
					switch (failReason.getType()) {
						case IO_ERROR:
							message = "Input/Output error";
							break;
						case DECODING_ERROR:
							message = "Image can't be decoded";
							break;
						case NETWORK_DENIED:
							message = "Downloads are denied";
							break;
						case OUT_OF_MEMORY:
							message = "Out Of Memory error";
							break;
						case UNKNOWN:
							message = "Unknown error";
							break;
					}
					Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();

					spinner.setVisibility(View.GONE);
				}

				@Override
				public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
					spinner.setVisibility(View.GONE);
				}
			});

			((ViewPager) view).addView(imageLayout, 0);
			return imageLayout;
		}

		@Override
		public boolean isViewFromObject(View view, Object object) {
			return view.equals(object);
		}

		@Override
		public void restoreState(Parcelable state, ClassLoader loader) {
		}

		@Override
		public Parcelable saveState() {
			return null;
		}

		@Override
		public void startUpdate(View container) {
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical" >



<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:layout_marginTop="5dp"
    android:gravity="right" >

    <Button
        android:id="@+id/sher"
        android:layout_width="50dp"
        android:layout_height="50dp"
       
        android:text="share" />
   
</LinearLayout>

 <android.support.v4.view.ViewPager 
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

</LinearLayout>

شاكر تعاونكم 

 

 

 

 

 

 

 

 

 

 

 

https://github.com/nostra13/Android-Universal-Image-Loader

#2

تم التوصل لكودالمشاركة .

اقتباس

 

 

 
Button SaveImageButton = (Button)findViewById(R.id.sher);
SaveImageButton.setOnClickListener(new Button.OnClickListener(){
 
        public void onClick(View arg0) {
        // TODO Auto-generated method stub
            
                   // TODO Auto-generated method stub
        imageView = (ImageView)pager.findViewWithTag(pager.getCurrentItem());
        imageView.setDrawingCacheEnabled(true);
               Bitmap icon = imageView.getDrawingCache();
               ByteArrayOutputStream bytes = new ByteArrayOutputStream();
               icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                           File file = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
                   try {
                       file.createNewFile();
                       FileOutputStream  fo = new FileOutputStream(file);
                       fo.write(bytes.toByteArray());
                   } catch (IOException e) {                       
                           e.printStackTrace();
                   }
 
                   Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
                   shareIntent.setType("image/jpeg");
       
                   shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
                   shareIntent.putExtra(Intent.EXTRA_STREAM,uri);
                   startActivity(shareIntent);
        }});
 

تم تعديل هذه المشاركة بواسطة computer_man في 12 يوليو 2013 في 17:09

مواضيع مشابهة