我的代码运行不出来,我是想做有两个按钮,一个控制图片变大,一个控制图片变小,现在运行不出来,求帮忙!!急!

爱吃胡萝卜的小笼包 2015-05-09 08:30:51
package com.example.tom2;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.AnimationDrawable;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

private Button bt_small,bt_big;
private ImageView imageView;
private RelativeLayout layout1;
private Bitmap bmp;
private int id = 0;
private int displayWidth;
private int displayHeight;
private float scaleWidth = 1;
private float scaleHeight = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageView = (ImageView) findViewById(R.id.imageView1);
final AnimationDrawable background = (AnimationDrawable) imageView.getBackground();
imageView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v)
{

background.stop();
background.start();
}
});


/* 取得屏幕分辨率的大小 */
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
displayWidth = dm.widthPixels;
/* 加载资源 */
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.cat_blink0000);
layout1 = (RelativeLayout) findViewById(R.id.layout);
/* 计算出来的高度要减去Button的高度 */
displayHeight = dm.heightPixels-bt_small.getHeight();
Log.e("Tag", " " + displayHeight);//这块通过Log输出发现并没有获得Button的高度,不知道怎么回事!

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

// System.out.println("按钮监听成功实现!");
// Log.i("tag", "按钮监听成功实现");
//错,这句话是改变按钮的文字 bt1.setText("按钮监听成功实现!");
small();
Toast.makeText(MainActivity.this, "按钮监听成功实现,tom猫变小", 1000).show();

}

});


bt_big=(Button)findViewById(R.id.button_big);
bt_big.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
big();
Toast.makeText(MainActivity.this, "按钮监听成功实现,tom猫变大", 1000).show();

}

});
}




protected void big() {

// TODO Auto-generated method stub
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
/* 放大变量 */
double scale = 1.1;
/* 放大以后的宽高,一定要强制转换为float型的 */
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);

/* 产生resize后的Bitmap对象 */
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight,
matrix, true);

if (id == 0) {
/* 如果是第一次按就删除原来设置的ImageView */
layout1.removeView(imageView);
} else {
/* 如果不是第一次按,就删除上次放大or缩小的ImageView */
layout1.removeView((ImageView) findViewById(id));
}
/* 产生新的ImageView,放入Resize后的Bitmap对象,再放入Layout中 */
id++;
ImageView imageView = new ImageView(MainActivity.this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);

/* 如果再放大会超过屏幕大小,就把Button disable */
if (scaleWidth * scale * bmpWidth > displayWidth
|| scaleHeight * scale * bmpHeight > displayHeight) {
Log.e("Tag", " " + scaleHeight * scale * bmpHeight);
bt_big.setEnabled(false);
}
}




protected void small() {

// TODO Auto-generated method stub
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
/* 设置图片缩小比例 */
double scale = 0.8;
/* 计算出缩小后的长宽 */
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);

/* 产生Resize后的Bitmap对象 */
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight,
matrix, true);

if (id == 0) {
/* 如果是第一次单击缩小按钮,就删除原来默认的ImageView */
layout1.removeView(imageView);
} else {
/* 不然就删除上次放大或缩小产生的ImageView */
layout1.removeView((ImageView) findViewById(id));
}
/* 产生新的ImageView,放入Resize后的Bitmap对象,再放入Layout中 */
id++;
ImageView imageView = new ImageView(MainActivity.this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);

/* 将bt_big设置成可点击的 */
bt_big.setEnabled(true);
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
...全文
138 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
杰哥哥啊 2015-05-13
  • 打赏
  • 举报
回复
楼主为什么不用动画作呢

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧