当然,分享到人人需要安装人人客户端,其他也是一样。代码如下:
BackDisplay.java
/** * Add by Liuzw for pic back display */ package com.android.camera.ui; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import com.android.camera.R; import com.android.camera.Thumbnail; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; public class BackDisplay extends Activity implements View.OnClickListener, OnItemClickListener{ private static final String TAG = "lxy"; private boolean menuLayoutShowing; private boolean rowsShowing; private Button btnShare; private Button btnEdit; private Button btnDelete; private ImageView mImageView; private Thumbnail mThumbnail; private LinearLayout functionButtons; private ListView mShareList; private String mMimeType; private static final String ADAPTER_COLUMN_ICON = "icon"; private ArrayList<ComponentName> mComponent = new ArrayList<ComponentName>(); @Override protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); setContentView(R.layout.back_display); initUI(); } private void initUI(){ // Load the thumbnail from the disk. mThumbnail = Thumbnail.loadFrom(new File(getFilesDir(), Thumbnail.LAST_THUMB_FILENAME)); mImageView = (ImageView) findViewById(R.id.photos_pic); mImageView.setImageBitmap(mThumbnail.getBitmap()); //Drawable d = Drawable.createFromPath("/sdcard/DCIM/Camera/IMG_20000101_091249.jpg"); //mImageView.setImageBitmap(((BitmapDrawable)d).getBitmap()); mImageView.setOnClickListener(this); functionButtons = (LinearLayout) findViewById(R.id.funtion_buttons); mShareList = (ListView) findViewById(R.id.shared_items); btnShare = (Button) findViewById(R.id.btn_share); btnEdit = (Button) findViewById(R.id.btn_edit); btnDelete = (Button) findViewById(R.id.btn_delete); btnEdit.setOnClickListener(this); btnShare.setOnClickListener(this); btnDelete.setOnClickListener(this); mMimeType = this.getContentResolver().getType(mThumbnail.getUri()); createShareMenu(); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch(arg0.getId()){ case R.id.photos_pic: clickPhotosPic(); break; case R.id.btn_share: clickSharedButton(); break; case R.id.btn_edit: //Toast.makeText(BackDisplay.this, "Edit", Toast.LENGTH_SHORT).show(); break; case R.id.btn_delete: Toast.makeText(BackDisplay.this, "Delete", Toast.LENGTH_SHORT).show(); break; default: break; } } private void clickPhotosPic(){ if(menuLayoutShowing){ if(rowsShowing){ rowsShowing = false; mShareList.setVisibility(View.GONE); } menuLayoutShowing = false; functionButtons.setVisibility(View.GONE); } else{ menuLayoutShowing = true; functionButtons.setVisibility(View.VISIBLE); } } private void clickSharedButton(){ if(rowsShowing){ rowsShowing = false; mShareList.setVisibility(View.GONE); } else{ rowsShowing = true; mShareList.setVisibility(View.VISIBLE); } } private final SimpleAdapter.ViewBinder mViewBinder = new SimpleAdapter.ViewBinder() { @Override public boolean setViewValue(final View view, final Object data, final String text) { if (view instanceof ImageView) { ((ImageView) view).setImageDrawable((Drawable) data); return true; } return false; } }; public void createShareMenu() { PackageManager packageManager = getPackageManager(); List<ResolveInfo> infos = packageManager.queryIntentActivities( new Intent(Intent.ACTION_SEND).setType(mMimeType), 0); ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>(); for (ResolveInfo info : infos) { ComponentName component = new ComponentName( info.activityInfo.packageName, info.activityInfo.name); HashMap<String, Object> map = new HashMap<String, Object>(); map.put(ADAPTER_COLUMN_ICON, info.loadIcon(packageManager)); items.add(map); mComponent.add(component); } SimpleAdapter listItemAdapter = new SimpleAdapter(this, items, R.layout.share_icon, new String[] {ADAPTER_COLUMN_ICON}, new int[] {R.id.icon}); listItemAdapter.setViewBinder(mViewBinder); mShareList.setAdapter(listItemAdapter); mShareList.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int index, long arg3) { // TODO Auto-generated method stub Intent intent = new Intent(Intent.ACTION_SEND); intent.setType(mMimeType); intent.putExtra(Intent.EXTRA_STREAM, mThumbnail.getUri()); intent.setComponent(mComponent.get(index)); startActivity(intent); } }
布局文件 back_display.xml:
<!-- Add by Liuzw for show back display interface. --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:camera="http://schemas.android.com/apk/res/com.android.camera" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="bottom" > <ImageView android:id="@+id/photos_pic" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" /> <ListView android:id="@+id/shared_items" android:layout_width="130dip" android:layout_height="wrap_content" android:layout_marginLeft="100dip" android:visibility="gone" android:layout_above="@+id/funtion_buttons"/> <LinearLayout android:id="@+id/funtion_buttons" android:layout_width="fill_parent" android:layout_height="40dip" android:orientation="horizontal" android:layout_marginLeft="100dip" android:layout_marginRight="100dip" android:layout_marginBottom="20dip" android:background="#88FFFF00" android:layout_alignParentBottom="true" android:visibility="gone" > <Button android:id="@+id/btn_share" style="@style/picBackDisplayButton" android:text="@string/back_display_button_share" /> <Button android:id="@+id/btn_edit" style="@style/picBackDisplayButton" android:text="@string/back_display_button_edit" /> <Button android:id="@+id/btn_delete" style="@style/picBackDisplayButton" android:text="@string/back_display_button_delete" /> </LinearLayout> </RelativeLayout>
其中:
<style name="picBackDisplayButton"> <item name="android:background">#AA836FFF</item> <item name="android:textSize">15pt</item> <item name="android:layout_height">40dip</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_weight">1</item> </style>
布局文件share_icon.xml:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="40dip" android:layout_width="fill_parent" android:background="#AA836FFF"> <ImageView android:id="@+id/icon" android:layout_height="wrap_content" android:layout_width="fill_parent"/> </FrameLayout>