티스토리 뷰

 Android Actionbar에 적용되는 Share 버튼예제를 작성해봤습니다. 기존에 작성했던 글 중에도 동일한 글이 있었습니다. 그 때와 비슷한 코드로 작성되었지만 Actionbar에 포함되는 점이 다르게 됩니다.

  이미지 공유 버튼 생성 예제

    http://thdev.net/37


 이번 예제 코드는 아래 링크를 통해 다운 받을 수 있습니다.

   https://www.dropbox.com/s/gj3bzwtzenv4gxq/ActionbarShare.zip


 Actionbar Sherlock 예제 미리보기

   http://thdev.net/415


Share Action Provider 공유버튼 결과 화면

 Actionbar에 공유버튼을 사용하는 예제이며, 아래는 완성된 예제 화면입니다. 액션바에 추가되었으며, 액션바 공유버튼을 누르게되면 최근에 사용하는 버튼이 공유버튼 오른쪽에 붙게 됩니다. 처음 실행하면 아래와 같이 표시되는 공유버튼입니다.


 이미지만 공유되는 경우와 텍스트와 이미지 함께 공유하는 경우 2가지가 가능합니다. 아래는 이미지만 공유하는 경우입니다.


 이미지와 텍스트 모두를 intent로 넘겨주더라도 처리하지 못하는 어플도 있으며 아래는 이미지와 텍스트 모두 동시에 공유하는 경우입니다.


Action Provider API

 Action Provider 디자인 guide 홈페이지

  http://developer.android.com/guide/topics/ui/actionbar.html#ActionProvider

 Share Action Provider API

  http://developer.android.com/reference/android/widget/ShareActionProvider.html

 Shareaction API

  http://developer.android.com/training/sharing/shareaction.html


Action Provider API 예제

 액션 Provider API를 사용하기 위해서는 액션바에 추가해야 할 메뉴, Share Provider를 위한 코드가 필요합니다. 제가 사용한 메뉴의 item은 아래와 같습니다.

<item
        android:id="@+id/share"
        android:showAsAction="always"
        android:title="@string/share"
        android:actionProviderClass="android.widget.ShareActionProvider"/>

Share 옵션 메뉴 예제

@Override
	public boolean onCreateOptionsMenu(Menu menu) {
                // actionbar 메뉴 호출
		getMenuInflater().inflate(R.menu.main, menu);
		// Share Provider를 사용할 아이템 선택
		MenuItem menuItem = menu.findItem(R.id.share);
        	// Share Action Provider 생성
       		mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider();
        	// 마지막에 공유한 프로그램이 어디인지 Log를 남기기위한 xml 정의
        	mShareActionProvider.setShareHistoryFileName("custom_share_history.xml");
                //공유를 하기위한 Intent 정의
        	mShareActionProvider.setShareIntent(createShareIntent());
		return true;
	}
	
        // 공유 인텐트 정의
	private Intent createShareIntent() {
        	Intent shareIntent = new Intent(Intent.ACTION_SEND);
        	shareIntent.setType("image/*");
        	Uri uri = Uri.fromFile(new File(SHARE_IMAGE));
        	shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        
        	//Text Share시 image를 기준으로 공유가 되며, 불가능한 경우도 있음.
        	shareIntent.putExtra(Intent.EXTRA_TEXT, "Text share example");
        	return shareIntent;
    }

마무리

 Action Provider 예제를 작성해보았습니다. Actionbar Sherlock에서도 동일한 코드로 사용이 가능합니다. 이후에는 액션바 예제를 필요할 때마다 하나씩 추가해보려고 합니다. 기존에는 한번에 다 정리하려고 했지만 생각보다 제공방식이 많다보니^^;;; 나누어 작성하려고 합니다.

 이번 예제 코드는 아래 링크를 통해 다운 받을 수 있습니다.

   https://www.dropbox.com/s/gj3bzwtzenv4gxq/ActionbarShare.zip


 Actionbar Sherlock 예제 미리보기

   http://thdev.net/415





댓글