1. 程式人生 > >Android分享一張圖片

Android分享一張圖片

public class Act_Share extends Activity {

	private ShareCustomAdapter adapter;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.act_share);
		
		ImageView btn_back = (ImageView) findViewById(R.id.share_back);
		btn_back.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				finish();
			}
		});

		ListView shareList = (ListView) findViewById(R.id.act_share_list);
		List<AppInfo> shareAppInfos = getShareAppList();
		adapter = new ShareCustomAdapter(this, shareAppInfos);
		shareList.setAdapter(adapter);
		shareList.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				AppInfo appInfo = (AppInfo) adapter.getItem(position);
				Intent shareIntent = new Intent(Intent.ACTION_SEND);
				shareIntent.setComponent(new ComponentName(appInfo.packageName,
						appInfo.appLauncherClassName));
				shareIntent.setType("image/*");
				File file = new File("/sdcard/com.igoatech.wxrepack/shareimg.png");
				if (!file.exists()) {
					Bitmap bm = FileUtil.drawableToBitmap(getResources()
							.getDrawable(R.drawable.erweima));
					FileUtil.saveBitmap(bm, file);
				}
				Uri imageUri = Uri.fromFile(file);
				shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
				startActivity(shareIntent);
			}
		});
	}
	
	private List<AppInfo> getShareAppList() {
		List<AppInfo> shareAppInfos = new ArrayList<AppInfo>();
		PackageManager packageManager = getPackageManager();
		List<ResolveInfo> resolveInfos = getShareApps(this);
		if (null == resolveInfos) {
			return null;
		} else {
			for (ResolveInfo resolveInfo : resolveInfos) {
				AppInfo appInfo = new AppInfo();
				appInfo.packageName = resolveInfo.activityInfo.packageName;
				appInfo.appLauncherClassName = resolveInfo.activityInfo.name;
				appInfo.appName = resolveInfo.loadLabel(packageManager)
						.toString();
				appInfo.appIcon = resolveInfo.loadIcon(packageManager);
				shareAppInfos.add(appInfo);
			}
		}
		return shareAppInfos;
	}
	public List<ResolveInfo> getShareApps(Context context) {
		List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
		Intent intent = new Intent(Intent.ACTION_SEND, null);
		intent.addCategory(Intent.CATEGORY_DEFAULT);
		intent.setType("text/plain");
		PackageManager pManager = context.getPackageManager();
		mApps = pManager.queryIntentActivities(intent,
				PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
		return mApps;
	}
}
XML:
<RelativeLayout 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:background="@color/all_bg" >

    <LinearLayout
        android:id="@+id/share_title"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/main_bg"
        android:gravity="center_vertical" >

        <ImageView
            android:id="@+id/share_back"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:background="@drawable/fanhui" />

        <TextView
            style="@style/all_title"
            android:text="@string/share" />
    </LinearLayout>

    <ListView
        android:id="@+id/act_share_list"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/share_title"
        android:layout_marginTop="4dp"
        android:background="#FFFFFF"
        android:cacheColorHint="#00000000"
        android:divider="@color/line"
        android:dividerHeight="1.0dip"
        android:fadingEdge="none"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="true" />

</RelativeLayout>


adapter:

public class ShareCustomAdapter extends BaseAdapter {

	private Context context;
	private List<AppInfo> list;

	public ShareCustomAdapter(Context context, List<AppInfo> list) {
		super();
		this.context = context;
		this.list = list;
	}

	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		return list.get(position);
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(int position, View v, ViewGroup arg2) {

		if (v == null) {
			v = LayoutInflater.from(context).inflate(
					R.layout.share_item, null);
		}

		AppInfo item = list.get(position);

		ImageView iv = (ImageView) v.findViewById(R.id.share_item_icon);
		TextView tv = (TextView) v.findViewById(R.id.share_item_name);

		iv.setImageDrawable(item.appIcon);
		tv.setText(item.appName);
		v.setTag(item);

		return v;
	}

}
XML:
<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="wrap_content" 
    android:orientation="horizontal">

    <ImageView 
		android:id="@+id/share_item_icon" 
		android:layout_width="45dp" 
		android:layout_height="45dp" 
		android:layout_marginLeft="3.0dip" 
		android:scaleType="fitXY" />
	<TextView 
		android:id="@+id/share_item_name" 
		android:layout_gravity="center_vertical"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content" 
		android:text="分享" 
		android:singleLine="true" 
		android:textSize="14sp"
		android:textColor="@color/item_text"
		android:layout_marginLeft="5dip" />

</LinearLayout>

public class AppInfo {

	public String appName = "";
	public String packageName = "";
	public String versionName = "";
	public int versionCode = 0;
	public Drawable appIcon = null;
	public String date = "";
	public String size = "";
	public String iconUrl = "";
	public String downloadurl = "";
	public String brief = "";
	public int downloadPercent = 0;
	public boolean isInWhite = false;
	public PackageInfo packageInfo = null;
	public String isInstalled = "false";
	public String path = "";
	public PackageInfo packageinfo = null;
	public String appLauncherClassName = "";
	public int number = 0;
	public String filePath = "";
	public int installedType = 1;
	public int upgrade = 0;
	public boolean isChecked = false;

	public void print() {
		Log.v("app", "Name:" + appName + " Package:" + packageName);
		Log.v("app", "Name:" + appName + " versionName:" + versionName);
		Log.v("app", "Name:" + appName + " versionCode:" + versionCode);
	}

}

圖片處理程式碼:
/**
	 * Drawableת��ΪBitmap
	 */
	public static Bitmap drawableToBitmap(Drawable drawable) {
		int width = drawable.getIntrinsicWidth();
		int height = drawable.getIntrinsicHeight();
		Bitmap bitmap = Bitmap.createBitmap(width, height, drawable
				.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
				: Bitmap.Config.RGB_565);
		Canvas canvas = new Canvas(bitmap);
		drawable.setBounds(0, 0, width, height);
		drawable.draw(canvas);
		return bitmap;

	}

	/** ���淽�� */
	public static void saveBitmap(Bitmap bm, File file) {
		// Log.e(TAG, "����ͼƬ");

		try {

			if (!file.exists()) {
				file.getParentFile().mkdirs();
				file.createNewFile();
			}

			FileOutputStream out = new FileOutputStream(file);
			bm.compress(Bitmap.CompressFormat.PNG, 90, out);
			out.flush();
			out.close();
			// Log.i(TAG, "�Ѿ�����");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}


相關推薦

Android分享圖片

public class Act_Share extends Activity { private ShareCustomAdapter adapter; @Override protected void onCreate(Bundle savedInstance

Android圖片佔據的記憶體大小是如何計算

最近封裝了個高斯模糊元件,正好將圖片相關的理論基礎也梳理了下,所以,這次就來講講,在 Android 中,怎麼計算一張圖片在記憶體中佔據的大小,如果要優化,可以從哪些方向著手。 提問 閱讀本篇之前,先來想一些問題: Q1:一張 png 格式的圖片,圖片檔案大小為 55.8KB,那麼它載入進記憶體時所佔的大小是

android分享圖片在ContentResolver.insert返回null時的解決方案

<pre name="code" class="java"> String path = file.getAbsolutePath(); ContentResolver cr = mContext.getContentResolver();

Android高效內存1:圖片占用多少內存

像素 更多 內存 加載 手機 mic style 占用 們的   在做內存優化的時候,我們發現除了解決內存泄露問題,剩下的就只有想辦法減少真實的內存占用。而在App中,大部分內存可能被我們圖片占用了,所以減少圖片的內存占用可以帶來直接的效果。本文就簡單介紹一張圖片到底占用多

圖片讓你了解android的事件分發機制

text statistic trac avi oid csdn rac dsm tis 一張圖片讓你了解android的事件分發機制

android 實現微信分享圖片的功能

files gui 功能實現 pen ring row 還要 bsp sha 昨天公司老大通知客戶改需求了,原來的微信分享改成分享多張圖片,然後屁顛屁顛跑到微信平臺看了以後 心裏千萬只草泥馬狂奔而過,微信平臺沒有提供分享多張的SDK有木有啊,我們只能自己調用系統自帶的分享

利用一個xml佈局檔案生成出圖片分享給好友

關於動態生成一張圖片 動態生成一張圖片,有兩種方法。一種方式是利用Canvas畫圖,這種方式的關鍵技術點是絕對定位和動態比例尺,用習慣了,寫起來也不難。缺點嘛自然是不直觀,改動也不方便。還一種方式是利用xml佈局,最後將圖片匯出來。封裝好工具類之後,使用起來則非常方便。寫xml的時候呢,可以使用

Android儲存drawable下的圖片資源儲存到絕對路徑下

Resources res = this.getResources(); BitmapDrawable d = (BitmapDrawable) res.getDrawable(R.drawable.ic_launcher); Bitmap img = d.getBitmap();

圖片佔多大記憶體的計算-android

DisplayMetrics 的兩個變數,摘錄官方文件的解釋:     density:The logical density of the display. This is a scaling factor for the Density Independent Pixe

android 開發 View _12_ 用Canvas 繪製圖片(部落格中演示用Canvas畫驗證碼圖片

package net.yt.yuncare.widgets; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import and

android中將兩圖片合併為圖片 .

private Bitmap mergeBitmap(Bitmap firstBitmap, Bitmap secondBitmap) {         Bitmap bitmap = Bitmap.createBitmap(firstBitmap.getWidth(),

Android讓ImageView點選後換成另外圖片

給ImageView設定點選監聽,當點選了,換圖片public class Test extends Activity { ImageView iv; boolean isChanged = false; @Override public v

Android selector 最佳寫法 用圖片實現按鈕按下和普通效果的樣式

第一種方法(強烈推薦) 方法:selector做遮罩,原圖做background。 我們做按鈕的時候經常需要用兩個圖片來實現按鈕點選和普通狀態的樣式,這就需要提供兩種圖片,而且每個解析度下還有多

Android中從網上下載圖片顯示進度並顯示下載好的圖片

前幾天在網上看到個網上面試的題,需要完成一段程式碼,從網路(用底層URlConnection)上下載一個圖片並顯示進度。 然後總結了一下一個簡單的小Demo,跳轉即可執行的哦,親測有效,供大家參考: 1.主介面: import android.graphics.Bitma

史上最強Android 開啟照相或者是從本地相簿選中圖片以後先裁剪在儲存並顯示的講解附原始碼i

整個程式的佈局很簡單 只在一個垂直方向上的線性佈局裡面有倆個按鈕(Button)和一個顯示圖片的控制元件(ImageView) 這裡就不給出這部分的程式碼了 1.是開啟系統的相簿 Intent albumIntent = new Intent(Intent.ACTION

html5+實現分享圖片到朋友圈

示例圖 程式碼部分 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="in

android 實現圖片旋轉,移動,縮放,並且記錄變化值,用另外圖片顯示出來

最近公司要做一個戒指試戴的功能,就是把戒指通過手勢移動到你指定的手指處,並且儲存狀態,方便下次進入時顯示,可以參考APP“鑽石快線”的試戴功能, 圖片網上有很多的教程教你怎麼把圖片旋轉,移動,縮放,等等,卻沒有教你儲存狀態,而且網上的教程都亂七八糟,都是複製貼上,都不是自己

android實現或多圖片壓縮並保持清晰上傳

圖片過大,大於1M的情況下上傳伺服器會很耗時,因此要實現壓縮上傳並且不失真 String mCurrentPhotoPath; Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

android仿淘寶詳情頁面viewPager滑動到最後圖片跳轉的功能

需要做一個仿淘寶客戶端ViewPager滑動到最後一頁,再拖動的時候跳到詳情的功能,剛開沒什麼思路,後來搜了一下,發現有好幾種實現方法,最好的一種就是在ViewPager圖片的後面再加一個view,然後滑動viewpager的時候,判斷一下就行了。 附一個連結,我寫的程式碼

移動端設置, mobile , 圖片作為背景 ,平鋪 ,自動拉伸 , 圖片 鋪滿視界 ,窗口. background-image , background-size, background-repeat

效果 背景 dev 技術 oct pla div osi eight 1. 效果: 瀏覽器: 手機模擬: 2.代碼: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head&g