设为首页 加入收藏

TOP

Android: TextView添加图片(drawable)及动画实例(一)
2014-11-24 08:37:08 来源: 作者: 【 】 浏览:2
Tags:Android: TextView 添加 图片 drawable 动画 实例

1、首先是界面的UI layout: main.xml(片段)


2、Activity代码:


public class TextViewDemo extends Activity {

private TextView statusTextView;
private Drawable statusIcon;
private Drawable arrowIcon;
private LayerDrawable layerDrawable;
private Animation anim_start;
private Animation anim_finish;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}

private void init(){

Button startButton = (Button)findViewById(R.id.startButton);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setStartStatus();
}
});

Button finishButton = (Button)findViewById(R.id.finishButton);
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFinishStstus();
}
});

statusTextView = (TextView)findViewById(R.id.statusTextView);
statusTextView.setCompoundDrawablePadding(10);
anim_start = AnimationUtils.loadAnimation(this, R.anim.status_view_enter);
anim_finish = AnimationUtils.loadAnimation(this, R.anim.status_view_enter);
statusIcon = zoomDrawable(getResources().getDrawable(R.drawable.status_icon),60, 60) ;
arrowIcon = zoomDrawable(getResources().getDrawable(R.drawable.arrow), 40, 30);
Drawable[] icons = new Drawable[2];
icons[0] = statusIcon;
icons[1] = arrowIcon;
layerDrawable = new LayerDrawable(icons);
layerDrawable.setLayerInset(0, 0, 0, 20, 0);
layerDrawable.setLayerInset(1, 40, 20, 0, 0);
}

private void setStartStatus(){
statusTextView.setText(R.string.start_text);
statusTextView.setCompoundDrawablesWithIntrinsicBounds(layerDrawable.getDrawable(0), null, null, null);
statusTextView.startAnimation(anim_start);

}

private void setFinishStstus(){
statusTextView.setText(R.string.finish_text);
statusTextView.setCompoundDrawablesWithIntrinsicBounds(layerDrawable, null, null, null);
statusTextView.startAnimation(anim_finish);
}

private Drawable zoomDrawable(Drawable drawable, int w, int h)
{
int width = drawable.getIntrinsicWidth();
int height= drawable.getIntrinsicHeight();
// drawable转换成bitmap
Bitmap oldbmp = drawableToBitmap(drawable);
// 创建操作图片用的Matrix对象
Matrix matrix = new Matrix();
// 计算缩放比例
float scaleWidth = ((float)w / width);
float scaleHeight = ((float)h / height);

// 设置缩放比例
matrix.postScale(scaleWidth, scaleHeight);
// 建立新的bitmap,其内容是对原bitmap的缩放后的图
Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true);
// 把bitmap转换成drawable并返回
return new BitmapDrawable(newbmp);
}


/* drawable 转换成bitmap */
private Bitmap drawableToBitmap(Drawable drawable)
{
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();

// 取drawable的颜色格式
Bitmap.Config config =
drawable.getOpacity() != PixelFormat.OPAQUE Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
// 建立对应bitmap

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Eclipse无法编译Android故障排除 下一篇Dm9000aep在u-boot下网卡驱动调试..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)