編輯:關於Android編程
策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。
理解:
把代碼中類似,但又有差異的算法部分,提取出來,定義一個借口,不同的算法來進行不同的實現,但調用算法的客戶可以進行統一的調用,因為實現了共同的借口,客戶不需要知道具體的實現,而是知道怎麼用,即針對接口編程,而不針對實現編程。
總結:
找出代碼中可能需要變換之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
例子 private TextClickInterface mClickInterface; // 采用策略模式,封裝變化,實現點擊處理
(客戶)
public interface TextClickInterface{ public void click(); // 點擊事件,執行相應動作,如:預約、求片 public void changeText(); // 修改點擊後Text顯示效果 } (定義接口)
(實現一) public class YuyueText implements TextClickInterface{ private Context context; private MarkInfo info; // 信息 private TextView text; // textview public YuyueText(Context context,MarkInfo info, TextView text){ this.context = context; this.info = info; this.text = text; } @Override public void click() { //實現預約 } @Override public void changeText() { //改變字體顏色及內容 text.setText(R.string.mark_yuyue_success); text.setTextColor(context.getResources().getColor(R.color.mark_font_white)); text.setBackgroundColor(context.getResources().getColor(R.color.mark_blue_already)); Toast.makeText(context, "已預約成功", Toast.LENGTH_SHORT).show();; } }
(實現二) public class QiupianText implements TextClickInterface{ private Context context; private MarkInfo info; private TextView text; public QiupianText(Context context, MarkInfo info, TextView text){ this.context = context; this.info = info; this.text = text; } @Override public void click() { // 求片邏輯 } @Override public void changeText() { // 改變text顏色、文字 text.setText(R.string.mark_qiupian_success); text.setTextColor(context.getResources().getColor(R.color.mark_font_white)); text.setBackgroundColor(context.getResources().getColor(R.color.mark_blue_already)); Toast.makeText(context, "已發送求片請求", Toast.LENGTH_SHORT).show(); }
備注:Scale應該比Translate先添加到Set裡面 Interpolator 時間插值類,定義動畫變換的速度。能夠實現alpha/scale/trans
通過上一節的分析,我們發現InputDispatcherThread使用InputChannel的sendMessage方法發送了一條消息,但是我們不知道誰在接收這條消息
1 Android控件架構1 簡單的總結(1)父View優先攔截當前事件,攔截不成功就讓子View對當前事件進行攔截。(2)如果攔截成功的話,就會沿著子view到父Vie
首先來看效果: 一、實現原理在實現過程中,主要考慮整個界面由若干個字母組成的子母線條組成,這樣的話把固定數量的字母封裝成一個字母線條,而每個字母又封裝成一個對象,這樣的話