oschina-app源碼分析-提醒標籤BadgeView使用方法

    看過oschina-app的數字提醒標籤BadgeView的使用過程,才發現以前項目中的實現邏輯有問題。以前待的項目組沒個牛人,從我幹第一個項目就我負責開發設計和管理,可想而知,頂多也就實現功能交工。說到底就是經驗不足,所以有時間還是多看看別人的代碼。本來是想主要講oschina-app裏面提醒標籤的實現邏輯,但我覺得標籤控件BadgeView有必要說下。

     BadgeView是一個開源的ui項目,其實就一個ui工具類,BadgeView是對TextView的重寫,他的代碼就不貼了,可以到git上下最新的吧:https://github.com/jgilfelt/android-viewbadger

      在這裏主要說下他的用法,它可以設置標籤的背景、顏色、位置、動畫、文字等,對一般的需求足以滿足了,先看下git上demo的效果:

默認屬性標籤代碼:

    // *** default badge ***
        
		View target = findViewById(R.id.default_target);
		BadgeView badge = new BadgeView(this, target);
		badge.setText("1");
		badge.show();

      默認是顯示在右上角,紅色的背景白色字體,這些個默認屬性是可以在BadgeView裏面設置的。

設置position代碼:

// *** set position ***
		
        btnPosition = (Button) findViewById(R.id.position_target);
        badge1 = new BadgeView(this, btnPosition);
        badge1.setText("12");
        badge1.setBadgePosition(BadgeView.POSITION_CENTER);
        btnPosition.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				badge1.toggle();
			}
		});

     toggle方法是控制標籤的現實和隱藏的。

在BadgeView中定義了5種顯示位置:

	public static final int POSITION_TOP_LEFT = 1;
	public static final int POSITION_TOP_RIGHT = 2;
	public static final int POSITION_BOTTOM_LEFT = 3;
	public static final int POSITION_BOTTOM_RIGHT = 4;
	public static final int POSITION_CENTER = 5;

設置字體大小、顏色、背景色:

	badge2.setTextColor(Color.BLUE);
    	badge2.setBadgeBackgroundColor(Color.YELLOW);
    	badge2.setTextSize(12);


設置顯示邊距、顯示隱藏動畫:

         badge4.setBadgeMargin(15, 10);
    	badge4.setBadgeBackgroundColor(Color.parseColor("#A4C639"));
    	btnAnim2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				TranslateAnimation anim = new TranslateAnimation(-100, 0, 0, 0);
		        anim.setInterpolator(new BounceInterpolator());
		        anim.setDuration(1000);
		    	badge4.toggle(anim, null);
			}
		});


      toggle(anim, null)方法中,第一個參數是顯示時候的動畫,第二個參數是隱藏時候的動畫。

設置圖片背景和點擊事件:

         badge6.setBackgroundResource(R.drawable.badge_ifaux);
    	badge6.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Toast.makeText(DemoActivity.this, "clicked badge", Toast.LENGTH_SHORT).show();
			}
		});

      一般背景圖片要經過.9處理,因爲隨着顯示數字增大背景圖片只是橫向拉伸。

標籤有時候往往會有點擊一次加以的需求,這裏也提供了現成的方法

   btnIncrement.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				if (badge8.isShown()) {
					badge8.increment(1);
				} else {
					badge8.show();
				}
			}
		});

      到此BadgeView的所有使用方法介紹差不多了,別人搞好的東西,使用起來很簡單,主要記錄下方法他能提供的功能。如果有特殊的需求可以對BadgeView進行改造。下節主要分析下,oschina-app裏面對BadgeView的使用邏輯流程。

 

 

oschina-app完整源碼下載:http://download.csdn.net/detail/xiangxue336/7023661

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章