繁体   English   中英

Android位图图像调整大小

Android Bitmap image resize

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

所以我已经在imageview上工作了,我想在项目中调整图片的大小,我知道我可以用Bitmap做到这一点,所以我更改了代码并开始使用Bitmap,当我使用Bitmap调整大小时,它的throw和eror(exption )并从应用程序崩溃

public class ClassicMode extends Activity {//מהמשחק עצמו

String pic;//תמונה של הדגל
Button answer1;//תשובות
Button answer2;
Button answer3;
Button answer4;
TextView guess;//
TextView numOfGuess;//
DatabaseHandler db = new DatabaseHandler(this);
String fn;
Guesses G;
Bitmap bm;
//int Nguess=3;//מסםר ניחושים
//int Nguesstemp=Nguess;

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

    guess =(TextView)findViewById(R.id.guesses);
    numOfGuess=(TextView)findViewById(R.id.numOfGuesses);
    //numOfGuess.setText(Integer.toString(Nguess));
    numOfGuess.setText(String.valueOf(Guesses.numOfGuesses));
    Flags f = new Flags();
    Random r = new Random();//הדגל שיבחר לשאלה
    int num = r.nextInt(100);//Up
    //Log.d("yes", "yes");
    //Random ra = new Random();//הדגלים שיהיו בתשובות
    //int numA = ra.nextInt(4);//Up

    f = db.getFlag(num);//הצגת הדגל הרנדומלי שיצא
    //  final Flags d = f; // trying to make it final but it dosent help
    fn = f.getName().toString();
    pic = f.getImage().toString();
    pic_view(pic);//מעבר לפונקציה להשמת התמונה של הדגל במשחק

    //מערך ארבע כפתורים כנגד ארבע תשובות
    Button [] b = new Button[4];
    b[0] = (Button)findViewById(R.id.button1);
    b[1] = (Button)findViewById(R.id.button2);
    b[2] = (Button)findViewById(R.id.button3);
    b[3] = (Button)findViewById(R.id.button4);

    List<String>Answers=new ArrayList<String>();//מערך תשובות
    Answers.add(f.getName().toString());//הוספת התשובה הנכונה
    num = r.nextInt(30);
    Answers.add(db.getFlag(num).getName().toString());//הוספת 3 תשובות רנדומליות
    num = r.nextInt(30);
    Answers.add(db.getFlag(num).getName().toString());
    num = r.nextInt(30);
    Answers.add(db.getFlag(num).getName().toString());

    Collections.shuffle(Answers);//ערבוב התשובות

    for(int i=0;i<Answers.size();i++)
    {
        b[i].setText(Answers.get(i));//השמת התשובות מהמהערך למערך הכפתורים
    }
}//end of OnCreat


@SuppressLint("NewApi")
public void resetQuiz()
{
    //finish();
    recreate();
    //numOfGuess.setText(String.valueOf(Nguess));
}

public void check(View v)
{
    Log.d("yes", fn);
    Button b = (Button)v;
    String text = b.getText().toString();
    if(text.equals(fn))
        resetQuiz();
    else
    {
        if(Guesses.numOfGuesses==1)
        {
            G.setNumOfGuesses(3);
            finish();//כאשר מספר הניחושים
            return;
        }
        Guesses.numOfGuesses--;
        //numOfGuess=(TextView)findViewById(R.id.numOfGuesses);
        //numOfGuess.setText(Integer.toString(Nguess));
        numOfGuess.setText(String.valueOf(Guesses.numOfGuesses));
    }

}


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

private void pic_view(String pic2) {

    // TODO Auto-generated method stub
    //גישה לדגל לפי שמו וייבוא התמונה
    Log.d("Result from pic function " , pic2);
    ImageView imageView = (ImageView)findViewById(R.id.imageView1);
    String uri ="@drawable/";
    uri += pic2;    
    int imageResource = getResources().getIdentifier(uri, pic2, getPackageName());//הצוות התמונה 
    Bitmap bm = BitmapFactory.decodeResource(getResources(), imageResource);
    Bitmap resized = Bitmap.createScaledBitmap(bm, 120, 120, true);
    Drawable res= getResources().getDrawable(imageResource);//ציור התמונה
    imageView.setImageDrawable(res);

}

}

调整大小和位图以及所有图像都在pic_view函数中正常工作,希望代码能对我有所帮助。

我的尺寸问题的图片,因此我要调整标志的尺寸: http : //i60.tinypic.com/25zh0zm.png

1 个回复

好的,您可以做的是创建自己的自定义imageView

    public class ScaleImageView extends ImageView {

      public ScaleImageView(Context context) {
        super(context);
      }

      public ScaleImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
      }

      public ScaleImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
      }

      @Override
      protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        try {
          Drawable drawable = getDrawable();
          if (drawable == null) {
            setMeasuredDimension(0, 0);
          } else {
            int measuredWidth = MeasureSpec.getSize(widthMeasureSpec);
            int measuredHeight = MeasureSpec.getSize(heightMeasureSpec);
            if (measuredHeight == 0 && measuredWidth == 0) { //Height and width set to wrap_content
              setMeasuredDimension(measuredWidth, measuredHeight);
            } else if (measuredHeight == 0) { //Height set to wrap_content
              int width = measuredWidth;
              int height = width *  drawable.getIntrinsicHeight() / drawable.getIntrinsicWidth();
              setMeasuredDimension(width, height);
            } else if (measuredWidth == 0){ //Width set to wrap_content
              int height = measuredHeight;
              int width = height * drawable.getIntrinsicWidth() / drawable.getIntrinsicHeight();
              setMeasuredDimension(width, height);
            } else { //Width and height are explicitly set (either to match_parent or to exact value)
              setMeasuredDimension(measuredWidth, measuredHeight);
            }
          }
        } catch (Exception e) {
          super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
      }
}

您可以根据您的XML文件中使用此imageView

<com.example.MyPackage.ScaleImageView 
        android:layout_height="20dp"
        android:layout_width="20dp"
        android:src="@drawable/ic_launcher"/>

如果这也没有帮助告诉我:)

1 如何调整位图图像的大小:Android

我想增加图像尺寸。 我用此代码获取图像BitmapFactory.decodeResource(getResources(), R.drawable.car); 但是此图像在不同的屏幕上具有不同的大小,因此我想根据屏幕大小调整图像大小。 ...

2013-10-13 11:56:51 4 547   android
6 位图图像调整大小

我使用Intent单击图像并启动Android Camera时出现问题。 我通过Intent数据获得的图像带有调整大小的位图图像的信息。 也许我的理解有误,但是请提出我可以做些什么来纠正它。 ImageView显示的图像与我单击的图像相同,但图像非常模糊 这是基础代码: ...

8 Android-如何防止android重新调整位图图像的大小

在过去的两天里,我一直在opengl中努力解决纹理问题,在某些设备上,纹理只是白框,在其他所有东西上都显示得很好。 我已经仔细检查过,只使用了POT(两个幂)图像,但并不能解决问题。 从我读到的内容中,我认为我认为android对这些特定设备上的位图进行了某些处理,使它们失去尺寸,然后导致纹 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM