2016-06-20 11 views
1

私は1枚のcardviewのJPGイメージを作成し、選択したオーバーフローメニューで共有したいと思う。私のXMLファイルは以下のようなものです。@quoteCardという1つのビューのスクリーンショットを作成して共有するにはどうしたらいいですか?私はレイアウトの1つのビューだけでフルスクリーンのスクリーンショットを望んではいけません。おかげViewのスクリーンショットを撮ってオーバーフローメニューで共有する

<LinearLayout 
     android:id="@+id/cardBackground" 
     android:padding="8dp" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


     <de.hdodenhof.circleimageview.CircleImageView 
      android:layout_marginTop="32dp" 
      android:layout_gravity="center_horizontal" 
      android:id="@+id/authorImage" 
      android:layout_width="128dp" 
      android:layout_height="128dp" 
      app:civ_border_width="2dp" 
      app:civ_border_color="#99333333"/> 


     <TextView 
      android:layout_weight="1" 
      android:gravity="center" 
      android:layout_marginTop="8dp" 
      android:layout_marginBottom="8dp" 
      android:id="@+id/textDetailQuote" 
      android:text="The price of success is hard" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:lineSpacingExtra="5dp"    
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 


     <TextView 
      android:layout_marginBottom="16dp" 
      android:layout_marginRight="8dp" 
      android:id="@+id/textAuthorSign" 
      android:layout_gravity="right" 
      android:text="- ABJ Abdul Kalam" 
      android:textStyle="italic" 
      android:textSize="16sp" 
      android:typeface="serif" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 



    </LinearLayout> 

答えて

0

このメソッドは、指定されたビューのスクリーンショットを取る:

public static Bitmap loadBitmapFromView(View v, int width, int height) { 
    Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);     
    Canvas c = new Canvas(b); 
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
    v.draw(c); 
    return b; 
} 

が正しいビットマップを取得するには、あなたはそれが幅と高さだとのスクリーンショットを取りたいビューを渡します。その後、作成したDrawableで必要な処理を実行できます。

+0

私は、2つのtextViewと1つのimageViewを持つLinearLayoutを持っています。上記のxmlを使って、どうすればいいですか? –

+0

線形レイアウトとその幅と高さをメソッドに渡します。 例: 'ビットマップビットマップ= loadBitmapFromView(mLayout、mLayout.getWidth()、mLayout.getHeight());' mLayoutは、あなたがのスクリーンショットを撮りたいあなたのLinearLayoutになります。 – Marijan

0

あなたが特定のレイアウト画面を取るためにこれを試すことができますが、あなたがビットマップにレイアウトを変換することができ、上記使用

LinearLayout mLinearLayout= (LinearLayout) findViewById(R.id.linearlayout); 
      mLinearLayout.setDrawingCacheEnabled(true); 
      Bitmap mBitmap = Bitmap.createBitmap(mainLayout.getDrawingCache()); 
      mLinearLayout.setDrawingCacheEnabled(false); 

を撃ちました。

+0

とイメージの作成後に保存する方法は? –

+0

これをチェックしてビットマップを保存するhttp://stackoverflow.com/a/15429298/3416642 – Sach

関連する問題