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

时间:2022-08-30 14:48:00

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>