編輯:關於Android編程
在上文當中,我們描述了如何使用TextSwitcher控件。本文將通過分析Android Framework層源碼來闡釋它是如何實現文本的平滑切換的的。
閱讀ViewSwitcher源碼,我們可以發現在 然後,又將這2個View對象加入到了FrameLayout中。 就是設置ViewAnimator所持有的Animation對象。 最終調用了 從而實現了文本視圖的平滑切換。 注:
有此繼承結構我們可以知道,TextSwitcher:
- 繼承自FrameLayout<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqOsy/nS1Mbk19NWaWV3suO1/rXYt8XWw9fFPGJyIC8+DQotILzMs9DX1DxzdHJvbmc+Vmlld0FuaW1hdG9yPC9zdHJvbmc+o6zL+dLUxuSz1tPQwb249jxzdHJvbmc+QW5pbWF0aW9uPC9zdHJvbmc+ttTP86Os08PT2rPKz9a1rbP2oaK9pcjrtci2r7ut0Ke5+6GjPC9wPg0KPGhyIC8+DQo8aDMgaWQ9"setfactory做了什麼">setFactory
做了什麼
setFactory
方法中,會構造2個我們在makeView
回調中生成的視圖。
public void setFactory(ViewFactory factory) {
mFactory = factory;
// 構建一個子View
obtainView();
// 再構建一個子View
obtainView();
}
setInAnimation
和setOutAnimation
做了什麼
android.view.animation.Animation
public void setInAnimation(Animation inAnimation) {
mInAnimation = inAnimation;
}
setText
做了什麼
public void setText(CharSequence text) {
final TextView t = (TextView) getNextView();
t.setText(text);
// 顯示下一個View
showNext();
}
android.widget.ViewAnimator
的showOnly
方法。
void showOnly(int childIndex, boolean animate) {
final int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
if (i == childIndex) {
if (animate && mInAnimation != null) {
// 讓新TextView演示進入動畫
child.startAnimation(mInAnimation);
}
child.setVisibility(View.VISIBLE);
mFirstTime = false;
} else {
if (animate && mOutAnimation != null && child.getVisibility() == View.VISIBLE) {
// 讓舊TextView演示淡出動畫
child.startAnimation(mOutAnimation);
} else if (child.getAnimation() == mInAnimation)
child.clearAnimation();
child.setVisibility(View.GONE);
}
}
}
1. 相關代碼在 GitHub
2. 配套視頻在 優酷
1 基於Socket的Android聊天室Socket通信是網絡通信中最常用的技術之一,通過Socket建立的可靠連接,可以讓多個終端與服務器保持通信,最典型的應用是建立
Service 是一個可以在後台執行長時間運行操作而不使用用戶界面的應用組件。服務可由其他應用組件啟動,而且即使用戶切換到其他應用,服務仍將在後台繼續運行。 此外,組件可
最近在搗鼓android 自定義控件屬性,學到了TypedArray以及attrs。在這其中看了一篇大神博客Android 深入理解Android中的自定義屬性。我就更加
最近項目上用到了卡片的翻轉效果,大致研究了下,也參考了網上的一些Demo,簡單實現如下:activity_main.xml<?xml version=1.0