Android仿Iphone通知角标的实现(二)

简介: MainActivity如下: package cc.testtipmessage1;import android.os.Bundle;import android.

MainActivity如下:

package cc.testtipmessage1;
import android.os.Bundle;
import android.widget.ImageView;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
/**
 * Demo描述:
 * 仿Iphone通知角标的实现,借以提示用户有几条新的信息
 * 
 * 参考资料:
 * http://blog.csdn.net/t12x3456/article/details/9337561
 * Thank you very much
 */
public class MainActivity extends Activity {
    private ImageView mImageView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
    private void init(){
    	mImageView=(ImageView) findViewById(R.id.imageView);
    	Bitmap rawBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    	Bitmap newBitmap=createNewBitmap(rawBitmap);
    	mImageView.setImageBitmap(newBitmap);
    }
    private Bitmap createNewBitmap(Bitmap rawBitmap){
    	//新建画布
    	int width=rawBitmap.getWidth();
    	int height=rawBitmap.getHeight();
    	Bitmap newBitmap=Bitmap.createBitmap(width, height, Config.ARGB_8888);
    	Canvas canvas=new Canvas(newBitmap);

    	//--->先画原来的图片
    	Paint bitmapPaint=new Paint();
    	//防止抖动
    	bitmapPaint.setDither(true);
    	//对Bitmap进行滤波处理
    	bitmapPaint.setFilterBitmap(true);
    	Rect src=new Rect(0, 0, rawBitmap.getWidth(), rawBitmap.getHeight());    
    	Rect dst=new Rect(0, 0, newBitmap.getWidth(), newBitmap.getHeight());    
    	canvas.drawBitmap(rawBitmap, src, dst, bitmapPaint);  
    	
    	//--->再画新加的数字
    	Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);    
    	countPaint.setColor(Color.RED);    
    	countPaint.setTextSize(20f);    
    	countPaint.setTypeface(Typeface.DEFAULT_BOLD);    
    	canvas.drawText("5", 18, 25, countPaint);    
		return newBitmap;
    }
}


 

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="100dip"
        android:layout_height="100dip"
        android:layout_centerInParent="true"
   />

</RelativeLayout>


 

相关文章
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
小程序 Android开发 iOS开发
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
538 0
|
7月前
|
Android开发 iOS开发
未来即将上线 Android 版 “查找我的iPhone” ?
未来即将上线 Android 版 “查找我的iPhone” ?
174 0
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
450 1
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
存储 JavaScript 安全
教你如何用一行命令:Android打包->上传->发测试包通知
教你如何用一行命令:Android打包->上传->发测试包通知
274 0
教你如何用一行命令:Android打包->上传->发测试包通知
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
558 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
253 0
android 多级下拉菜单实现教程 greendao使用
|
监控 前端开发 Java
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
462 0