Android 图标上面添加提醒使用开源UI类库 Viewbadger

Viewbadger

1.BadgeView主要是继承了TextView,所以实际上就是一个TextView,底层放了一个label,可以自定义背景图,自定义背景颜色,是否显示,显示进入的动画效果以及显示的位置等等

2.BadgeView是一个GitHub开源的项目,下载地址是:https://github.com/jgilfelt/android-viewbadger

3.这个开源项目引用的方法很简单把android-viewbadger.jar引入到项目中就可以直接使用了,它提供的Demo已经很直接把用法都写出来了,用起来很方便的,对TabHost提供了特殊的支持。

下面是提供的Demo中使用图片:

                

4.demo中对应的效果代码这些一看就明白了:

  1 public class DemoActivity extends TabActivity {
  2
  3     private static final String[] DATA = Cheeses.sCheeseStrings;
  4
  5     Button btnPosition;
  6     Button btnColour;
  7     Button btnAnim1;
  8     Button btnAnim2;
  9     Button btnCustom;
 10     Button btnClick;
 11     Button btnTab;
 12     Button btnIncrement;
 13
 14     ListView listDemo;
 15
 16     BadgeView badge1;
 17     BadgeView badge2;
 18     BadgeView badge3;
 19     BadgeView badge4;
 20     BadgeView badge5;
 21     BadgeView badge6;
 22     BadgeView badge7;
 23     BadgeView badge8;
 24
 25     @Override
 26     public void onCreate(Bundle savedInstanceState) {
 27         super.onCreate(savedInstanceState);
 28         setContentView(R.layout.main);
 29
 30         final TabHost tabHost = getTabHost();
 31
 32         tabHost.addTab(tabHost.newTabSpec("demos")
 33                 .setIndicator("Badge Demos")
 34                 .setContent(R.id.tab1));
 35
 36         tabHost.addTab(tabHost.newTabSpec("adapter")
 37                 .setIndicator("List Adapter")
 38                 .setContent(R.id.tab2));
 39
 40         tabHost.addTab(tabHost.newTabSpec("tests")
 41                 .setIndicator("Layout Tests")
 42                 .setContent(R.id.tab3));
 43
 44         // *** default badge ***
 45
 46         View target = findViewById(R.id.default_target);
 47         BadgeView badge = new BadgeView(this, target);
 48         badge.setText("1");
 49         badge.show();
 50
 51         // *** set position ***
 52
 53         btnPosition = (Button) findViewById(R.id.position_target);
 54         badge1 = new BadgeView(this, btnPosition);
 55         badge1.setText("12");
 56         badge1.setBadgePosition(BadgeView.POSITION_CENTER);
 57         btnPosition.setOnClickListener(new OnClickListener() {
 58             @Override
 59             public void onClick(View v) {
 60                 badge1.toggle();
 61             }
 62         });
 63
 64         // *** badge/text size & colour ***
 65
 66         btnColour = (Button) findViewById(R.id.colour_target);
 67         badge2 = new BadgeView(this, btnColour);
 68         badge2.setText("New!");
 69         badge2.setTextColor(Color.BLUE);
 70         badge2.setBadgeBackgroundColor(Color.YELLOW);
 71         badge2.setTextSize(12);
 72         btnColour.setOnClickListener(new OnClickListener() {
 73             @Override
 74             public void onClick(View v) {
 75                 badge2.toggle();
 76             }
 77         });
 78
 79         // *** default animation ***
 80
 81         btnAnim1 = (Button) findViewById(R.id.anim1_target);
 82         badge3 = new BadgeView(this, btnAnim1);
 83         badge3.setText("84");
 84         btnAnim1.setOnClickListener(new OnClickListener() {
 85             @Override
 86             public void onClick(View v) {
 87                 badge3.toggle(true);
 88             }
 89         });
 90
 91         // *** custom animation ***
 92
 93         btnAnim2 = (Button) findViewById(R.id.anim2_target);
 94         badge4 = new BadgeView(this, btnAnim2);
 95         badge4.setText("123");
 96         badge4.setBadgePosition(BadgeView.POSITION_TOP_LEFT);
 97         badge4.setBadgeMargin(15, 10);
 98         badge4.setBadgeBackgroundColor(Color.parseColor("#A4C639"));
 99         btnAnim2.setOnClickListener(new OnClickListener() {
100             @Override
101             public void onClick(View v) {
102                 TranslateAnimation anim = new TranslateAnimation(-100, 0, 0, 0);
103                 anim.setInterpolator(new BounceInterpolator());
104                 anim.setDuration(5000);
105                 badge4.toggle(anim, null);
106             }
107         });
108
109         // *** custom background ***
110
111         btnCustom = (Button) findViewById(R.id.custom_target);
112         badge5 = new BadgeView(this, btnCustom);
113         badge5.setText("37");
114         badge5.setBackgroundResource(R.drawable.badge_ifaux);
115         badge5.setTextSize(16);
116         btnCustom.setOnClickListener(new OnClickListener() {
117             @Override
118             public void onClick(View v) {
119                 badge5.toggle(true);
120             }
121         });
122
123         // *** clickable badge ***
124
125         btnClick = (Button) findViewById(R.id.click_target);
126         badge6 = new BadgeView(this, btnClick);
127         badge6.setText("click me");
128         badge6.setBadgeBackgroundColor(Color.BLUE);
129         badge6.setTextSize(16);
130         badge6.setOnClickListener(new OnClickListener() {
131             @Override
132             public void onClick(View v) {
133                 Toast.makeText(DemoActivity.this, "clicked badge", Toast.LENGTH_SHORT).show();
134             }
135         });
136         btnClick.setOnClickListener(new OnClickListener() {
137             @Override
138             public void onClick(View v) {
139                 badge6.toggle();
140             }
141         });
142
143         // *** tab ***
144
145         TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
146
147         btnTab = (Button) findViewById(R.id.tab_btn);
148         badge7 = new BadgeView(this, tabs, 0);
149         badge7.setText("5");
150         btnTab.setOnClickListener(new OnClickListener() {
151             @Override
152             public void onClick(View v) {
153                 badge7.toggle();
154             }
155         });
156
157         // *** increment ***
158
159         btnIncrement = (Button) findViewById(R.id.increment_target);
160         badge8 = new BadgeView(this, btnIncrement);
161         badge8.setText("0");
162         btnIncrement.setOnClickListener(new OnClickListener() {
163             @Override
164             public void onClick(View v) {
165                 if (badge8.isShown()) {
166                     badge8.increment(1);
167                 } else {
168                     badge8.show();
169                 }
170             }
171         });
172
173         // *** list adapter ****
174
175         listDemo = (ListView) findViewById(R.id.tab2);
176         listDemo.setAdapter(new BadgeAdapter(this));
177
178     }
179
180     @Override
181     protected void onResume() {
182         super.onResume();
183
184         BadgeView badge;
185         View target;
186
187         // *** test linear layout container ***
188
189         target = findViewById(R.id.linear_target);
190         badge = new BadgeView(this, target);
191         badge.setText("OK");
192         badge.show();
193
194         // *** test relative layout container ***
195
196         target = findViewById(R.id.relative_target);
197         badge = new BadgeView(this, target);
198         badge.setText("OK");
199         badge.show();
200
201         // *** test frame layout container ***
202
203         target = findViewById(R.id.frame_target);
204         badge = new BadgeView(this, target);
205         badge.setText("OK");
206         badge.show();
207
208         // *** test table layout container ***
209
210         target = findViewById(R.id.table_target);
211         badge = new BadgeView(this, target);
212         badge.setText("OK");
213         badge.show();
214
215         // *** test linear layout ***
216
217         target = findViewById(R.id.linear_group_target);
218         badge = new BadgeView(this, target);
219         badge.setText("OK");
220         badge.show();
221
222         // *** test relative layout ***
223
224         target = findViewById(R.id.relative_group_target);
225         badge = new BadgeView(this, target);
226         badge.setText("OK");
227         badge.show();
228
229         // *** test frame layout ***
230
231         target = findViewById(R.id.frame_group_target);
232         badge = new BadgeView(this, target);
233         badge.setText("OK");
234         badge.show();
235
236         // *** test table layout ***
237
238         target = findViewById(R.id.tablerow_group_target);
239         badge = new BadgeView(this, target);
240         badge.setText("OK");
241         badge.show();
242
243     }
244
245     private static class BadgeAdapter extends BaseAdapter {
246         private LayoutInflater mInflater;
247         private Context mContext;
248         private static final int droidGreen = Color.parseColor("#A4C639");
249
250         public BadgeAdapter(Context context) {
251             mInflater = LayoutInflater.from(context);
252             mContext = context;
253         }
254
255         public int getCount() {
256             return DATA.length;
257         }
258
259         public Object getItem(int position) {
260             return position;
261         }
262
263         public long getItemId(int position) {
264             return position;
265         }
266
267         public View getView(int position, View convertView, ViewGroup parent) {
268             ViewHolder holder;
269
270             if (convertView == null) {
271                 convertView = mInflater.inflate(android.R.layout.simple_list_item_2, null);
272                 holder = new ViewHolder();
273                 holder.text = (TextView) convertView.findViewById(android.R.id.text1);
274                 holder.badge = new BadgeView(mContext, holder.text);
275                 holder.badge.setBadgeBackgroundColor(droidGreen);
276                 holder.badge.setTextColor(Color.BLACK);
277                 convertView.setTag(holder);
278             } else {
279                 holder = (ViewHolder) convertView.getTag();
280             }
281
282             holder.text.setText(DATA[position]);
283
284             if (position % 3 == 0) {
285                 holder.badge.setText(String.valueOf(position));
286                 holder.badge.show();
287             } else {
288                 holder.badge.hide();
289             }
290
291
292             return convertView;
293         }
294
295         static class ViewHolder {
296             TextView text;
297             BadgeView badge;
298         }
299     }
300
301 }

Android 图标上面添加提醒使用开源UI类库 Viewbadger,布布扣,bubuko.com

时间: 2024-08-03 22:10:19

Android 图标上面添加提醒使用开源UI类库 Viewbadger的相关文章

Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger

版权声明:本文为博主原创文章,未经博主允许不得转载. 上一篇讲到用canvas进行绘制得到对应最终的bitmap. 在实际应用中,我们除了给图标添加数字外,也有可能加一些红色方块之类的图标作为新功能的提醒. 那么有没有什么方法,很方便地给图标添加提醒icon或者数字呢? 有的,还是得借助于开源项目ViewBadger,这个是github上的地址: https://github.com/jgilfelt/android-viewbadger 还是先看下效果图: 其用法非常简单: 首先是添加数字:

Android 图标上面添加提醒(一)使用Canvas绘制

版权声明:本文为博主原创文章,未经博主允许不得转载. 在我们开发一些如通讯录.社交等应用或者应用添加新功能模块时,会考虑在对应的图标上加上未读信息的数量,或者是新功能提醒的图标,这样不占太大空间还能达到提示的目的. 之前在MMS分析部分,也有人问过我这种提醒的实现. 关于这种提醒的添加,我总结了下,有大概几种方法可以实现: 1. 在对应的布局放置TextView或者ImageView. 2. 用Canvas在原来Icon的bitmap基础上进行绘制 3. 利用开源项目ViewBadger进行添加

Android 图标右上角添加数字提醒

方法一:使用开源项目ViewBadger,github上的地址:https://github.com/jgilfelt/android-viewbadger 效果如图所示: [java] view plaincopy <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:

开源UI类库的使用

PullToRefresh 特点:无侵入的下拉刷新,就是可用在ListView,ScrollView,GridView,ViewPager等所有能滑动的控件上,而且扩展性强,可以监听下拉进度,更改下拉和上拉的布局以及动画,github地址:https://github.com/chrisbanes/Android-PullToRefresh,其作者是Google官方Android工程师ChrisBane 原理: PullToRefreshBase本身继承LinearLayout,在构造方法中ad

android app性能优化大汇总(UI渲染性能优化)

UI性能测试 性能优化都需要有一个目标,UI的性能优化也是一样.你可能会觉得“我的app加载很快”很重要,但我们还需要了解终端用户的期望,是否可以去量化这些期望呢?我们可以从人机交互心理学的角度来考虑这个问题.研究表明,0-100毫秒以内的延迟对人来说是瞬时的,100-300毫秒则会感觉明显卡顿,300-1000毫秒会让用户觉得“手机卡死了”,超过1000ms就会让用户想去干别等事情了. 这是人类心理学最基础的理论,我们可以从这个角度去优化页面/view/app的加载时间. Ilya Grigo

Android系统中添加一个产品----图文详解

本文本着开源的精神介绍如何向一个Android系统中添加一个产品的整个过程,按照以下过程笔者有理由相信每个将要从事本行业的人都可以完成,其实添加一个产品并不难,难的是对其相关硬件的修改,好了废话不多说. 首先我们要创建一个属于自己产品的目录,这里以WY_device为例,以WY作为产品的名字. 首先从已经存在的产品中拷贝一个以产品的名字为名的.mk文件,修改为自己的.mk文件,在这里为WY.mk 对其进行如下的修改: 然后添加AndroidProducts.mk  这是添加产品的配置文件名路径,

[Android系列—] 4. 添加操作栏(Action Bar)

前言 操作栏是最重要的设计元素之一,使用它来实现你的应用程序活动.通过提供多种用户界面功能, 使应用程序快速和其他的Andorid应用程序一致, 以便被用户熟悉和接受. 主要功能包括: 1. 标识你的应用程序,指示在应用程序的用户的位置. 2. 能很方便的操作重要的功能(像搜索功能) 3. 导航和视图切换功能(使用制表符或下拉列表) 类似的效果如下: 设置操作栏 在基本的使用状况是, 操作栏在左边显示活动的标题和应用的图标. 类似: 设置一个基本的操作栏需要你使用的应用活动主题支持操作栏, 这和

ANDROID L——Material Design详解(UI控件)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lollipop(5.0). 前几天发现Android5.0正式版的sdk已经可以下载了,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市. 所以是时候开始学习Android L了! 关于Android L如何配置模拟器和创建项目,如果大家有兴趣的话可以看看我之前的一篇文章: A

Android开发怎么让自己的APP UI漂亮、大方(规范篇一)

首先,笔者是站立在开发者的角度来看UI设计的,欢迎专业人士提供指导,不多说,来看怎么把UI设计和开发高效结合起来~ 一.约定APP开发中的一些规则 1.大部分图标满足HDPI(高清)即可,比如:大众点评首页的右上角图标,尺寸大致在48*48px左右 2.一般提供1280*720px的尺寸即可,最常见的适配模式 3.还有种图标,很多界面复用且图标中等偏大(80px及以上左右),他们在常规手机.平板,小尺寸手机上面需要适配,所以需要多种尺寸的图标,如:微信底部的tab菜单图标,一般设计的尺寸要3套,