Google+アプリで投稿をスクロールするときに発生するアニメーションは好きですが、どのように達成されるかわかりません。
表示された投稿をアニメーション化するためにどのような手法が採用されていますか?私はアニメーション自体を探しているのではなく、スクロール可能なアイテムのリストにアニメーションを適用する方法を探しています。
ありがとう。
Google+アプリで投稿をスクロールするときに発生するアニメーションは好きですが、どのように達成されるかわかりません。
表示された投稿をアニメーション化するためにどのような手法が採用されていますか?私はアニメーション自体を探しているのではなく、スクロール可能なアイテムのリストにアニメーションを適用する方法を探しています。
ありがとう。
いくつかのテストの後、私は仕事に似たものを得たと思います。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final LinearLayout list = new LinearLayout(this);
list.setOrientation(LinearLayout.VERTICAL);
ScrollView scrollView = new ScrollView(this) {
Rect mRect = new Rect();
@Override
public void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
for (int i = 0; i < list.getChildCount(); ++i) {
View v = list.getChildAt(i);
// Tag initially visible Views as 'true'.
mRect.set(l, t, r, b);
v.setTag(getChildVisibleRect(v, mRect, null));
}
}
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
for (int i = 0; i < list.getChildCount(); ++i) {
View v = list.getChildAt(i);
mRect.set(getLeft(), getTop(), getRight(), getBottom());
// If tag == 'false' and View is visible we know that
// View became visible during this scroll event.
if ((Boolean) v.getTag() == false
&& getChildVisibleRect(v, mRect, null)) {
AlphaAnimation anim = new AlphaAnimation(0, 1);
anim.setDuration(1000);
v.startAnimation(anim);
v.setTag(true);
}
}
}
};
scrollView.addView(list);
for (int i = 0; i < 20; ++i) {
TextView tv = new TextView(this);
tv.setText("Test");
tv.setTextSize(72);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.GRAY);
list.addView(tv);
}
setContentView(scrollView);
}
リストを下にスクロールすると、新しい が表示されるとアルファ アニメーションがトリガーされTextView
ます。