TweetUi キットでは、あなたのアプリでコードやXMLでツイートを描写するツイートビューが使用できます。
機能:
注意
ユーザー認証 やゲスト認証を使った場合でもツイートを表示することができます。
TweetUi キットではツイートを描写するのに TweetView と CompactTweetView が使用できます。このビューのコンストラクタでは、context、描写されるツイート、必要に応じてスタイル、といったものを引数として設定します。
ツイートは、有効なセッション(例えば、ユーザーがログインしている状態)でのTwitterCore Tweet API、もしくはトークンを使わない TweetUiの TweetUtilsによってリクエストすることができます。 以下に、TweetUtils を使ってツイートを読み込み、success メソッド内でツリービューのコンストラクタを実行する例を示します。
// EmbeddedTweetsActivity
import com.twitter.sdk.android.core.models.Tweet;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.tweetui.LoadCallback;
import com.twitter.sdk.android.tweetui.TweetUtils;
import com.twitter.sdk.android.tweetui.TweetView;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_embedded_tweets);
final LinearLayout myLayout
= (LinearLayout) findViewById(R.id.my_tweet_layout);
final long tweetId = 510908133917487104L;
TweetUtils.loadTweet(tweetId, new LoadCallback<Tweet>() {
@Override
public void success(Tweet tweet) {
myLayout.addView(new TweetView(
EmbeddedTweetsActivity.this, tweet));
}
@Override
public void failure(TwitterException exception) {
// Toast.makeText(...).show();
}
});
}

写真が付いたTweetView。
// EmbeddedTweetsActivity
import com.twitter.sdk.android.core.models.Tweet;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.tweetui.LoadCallback;
import com.twitter.sdk.android.tweetui.TweetUtils;
import com.twitter.sdk.android.tweetui.CompactTweetView;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_embedded_tweets);
final LinearLayout myLayout
= (LinearLayout) findViewById(R.id.my_tweet_layout);
final List<Long> tweetIds =
Arrays.asList(510908133917487104L, 20L);
TweetUtils.loadTweets(tweetIds, new LoadCallback<List<Tweet>>() {
@Override
public void success(List<Tweet> tweets) {
for (Tweet tweet : tweets) {
myLayout.addView(
new CompactTweetView(
EmbeddedTweetsActivity.this,
tweet));
}
}
@Override
public void failure(TwitterException exception) {
// Toast.makeText(...).show();
}
});
}
セッションが有効であれば、StatusesService APIを使用してツイートを読み込むことができます。successメソッド内で TweetViews とCompactTweetViews のコンストラクタを実行し、レイアウトに追加することができます。
注意
Fragmentsを使用している場合、successメソッド内でツリービューのコンストラクタに渡すcontext引数がnullにならないようにしてください。
The TweetView and CompactTweetView can be inflated from an XML layout as well. For this usage, the tw__tweet_id attribute must specify the Tweet id and the Tweet will be loaded and rendered upon inflation.
<!--my_tweet_activity.xml-->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:twittersdk="http://schemas.android.com/apk/res-auto">
<com.twitter.sdk.android.tweetui.TweetView
android:id="@+id/bike_tweet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
twittersdk:tw__tweet_id="510908133917487104"/>
</FrameLayout>
注意
レイアウトのパラメータにはandroid:layout_width="match_parent"とlayout_height="wrap_content"を使用しなければなりません。
ツイートをListView や同様のViewGroupに設置するには、TweetViewAdapter もしくはTweetViewFetchAdapterが推奨されています。 TweetViewAdapter は、 ツイートコレクションを更新するsetTweets メソッドを追加してAndroidのBaseAdapter を拡張しています。 TweetViewFetchAdapter は、IDから基コレクションにツイートを読み込み、必要に応じてコールバック関数の設定できるsetTweetIds メソッドを追加して、TweetViewAdapter をさらに拡張しています。
既定では、このアダプターはListViewsに適している CompactTweetView を提供します。
以下がツイートビューのListActivity のサンプルです。
import com.twitter.sdk.android.core.models.Tweet;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.tweetui.LoadCallback;
import com.twitter.sdk.android.tweetui.CompactTweetView;
import com.twitter.sdk.android.tweetui.TweetViewFetchAdapter;
...
public class TweetListActivity extends ListActivity {
List<Long> tweetIds = Arrays.asList(503435417459249153L,
510908133917487104L,
473514864153870337L,
477788140900347904L);
final TweetViewFetchAdapter adapter =
new TweetViewFetchAdapter<CompactTweetView>(
TweetListActivity.this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tweet_list);
setListAdapter(adapter);
adapter.setTweetIds(tweetIds,
new LoadCallback<List<Tweet>>() {
@Override
public void success(List<Tweet> tweets) {
// my custom actions
}
@Override
public void failure(TwitterException exception) {
// Toast.makeText(...).show();
}
});
}
}
そして以下が対応するtweet_list.xml レイアウトです:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal|center_vertical"
android:text="@string/empty"/>
<ListView android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
</LinearLayout>
CompactTweetViewsを設置したListView
TweetUi キットではtw__TweetLightStyle とtw__TweetDarkStyleの二つのAndroid スタイルが使用できます。既定ではtw__TweetLightStyleが使用されます。
設定したいスタイルは、ビューのコンストラクタ実行時に設定できます。
// EmbeddedTweetActivity.java
import com.twitter.sdk.android.tweetui.TweetView;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_embedded_tweet);
final LinearLayout myLayout
= (LinearLayout) findViewById(R.id.my_tweet_layout);
final long tweetId = 510908133917487104L;
TweetUtils.loadTweet(tweetId, new LoadCallback<Tweet>() {
@Override
public void success(Tweet tweet) {
myLayout.addView(new TweetView(EmbeddedTweetsActivity.this,
tweet,
R.style.tw__TweetDarkStyle));
}
@Override
public void failure(TwitterException exception) {
// Toast.makeText(...).show();
}
});
}
ダークスタイルの TweetView.
XMLのTweet viewsでは、スタイルは標準の @style 属性で設定できます。
<!--my_tweet_activity.xml-->
<com.twitter.sdk.android.tweetui.TweetView
android:id="@+id/city_hall_tweet"
style="@style/tw__TweetDarkStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
twittersdk:tw__tweet_id="521061104445693952"/>
TweetViewAdapter やTweetViewFetchAdapterの戻り値として取得されるツイートビューのスタイルを設定するには、 getTweetView メソッドをオーバーライドし、希望するスタイルを設定してツイートビューのコンストラクタを実行してください。
final TweetViewFetchAdapter adapter = new TweetViewFetchAdapter<CompactTweetView>(getActivity()) {
@Override
public CompactTweetView getTweetView(Context context,
Tweet tweet) {
return new CompactTweetView(context,
tweet,
R.style.tw__TweetDarkStyle);
}
};
TweetView とCompactTweetView はカスタムスタイル属性に従い、ツイートの見栄えを変更しますs:
tw__container_bg_color - ツイートの背景色t
tw__primary_text_color - ツイートのテキスト色と発言者名の色
tw__action_color - 共有するツイートのテキストとリンクの色
The tw__TweetLightStyle and tw__TweetDarkStyle you’ve seen set these custom attributes to fixed values that produce light and dark versions. To customize the style of a Tweet view further, the easiest approach is to extend the light or dark styles.
<!--styles.xml-->
<style name="CustomLightTweetStyle" parent="tw__TweetDarkStyle">
<item name="tw__primary_text_color">@color/custom_color_1</item>
<item name="tw__action_color">@color/custom_color_2</item>
</style>
もしくはカスタム属性を一つ以上設定してテーマやスタイルを作成することもできます。スタイルは個々のビューに適用できますが、テーマはアプリやアクティビティに適用できます。
<!--styles.xml-->
<style name="CustomStyle">
<item name="tw__container_bg_color">@color/custom_color_1</item>
<item name="tw__primary_text_color">@color/custom_color_2</item>
</style>
<style name="CustomTheme" parent="android:Theme.Holo.Light">
<item name="tw__container_bg_color">@color/custom_color_1</item>
</style>
描写されたツイートビューのカスタムスタイル属性が一つも設定されていなかった場合、tw__TweetLightStyleの値が既定値になります。