বিটম্যাপড্রেবলযোগ্য অবমূল্যায়িত বিকল্প


89

আমার কাছে নিম্নলিখিত কোড রয়েছে যা একটি অঙ্কের পরিমাণ সেট করে অঙ্কনযোগ্য ঘোরান।

    public Drawable rotateDrawable(float angle, Context context)
    {
      Bitmap arrowBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.generic2rb);

      // Create blank bitmap of equal size
      Bitmap canvasBitmap = arrowBitmap.copy(Bitmap.Config.ARGB_8888, true);
      canvasBitmap.eraseColor(0x00000000);

      // Create canvas
      Canvas canvas = new Canvas(canvasBitmap);

      // Create rotation matrix
      Matrix rotateMatrix = new Matrix();
      rotateMatrix.setRotate(angle, canvas.getWidth()/2, canvas.getHeight()/2);

      //Draw bitmap onto canvas using matrix
      canvas.drawBitmap(arrowBitmap, rotateMatrix, null);

      return new BitmapDrawable(canvasBitmap); 
    }

নতুন এসডিকে বলছে যে

BitmapDrawable(canvasBitmap); 

অবচয় করা হয়। কোন বিকল্প কি আদৌ?

http://developer.android.com/references/android/ographicics/drawable/BitmapDrawable.html


4
'নতুন বিটম্যাপড্রেইবল (কনটেক্সট.টেট রিসোর্সস (), ক্যানভাস বিটম্যাপ) এর সাথে কী ভুল?
রূবেণ স্ক্র্যাটন

উত্তর:


201

পরিবর্তে এটি করুন:

return new BitmapDrawable(context.getResources(), canvasBitmap);

ঠিক আছে ধন্যবাদ, এটি কাজ করে বলে মনে হচ্ছে না। আমি সেখানে অবমূল্যায়ন নিয়ে চিন্তিত ছিলাম! এটি আইকনটিকে আরও বড় করে দেখায় বলে মনে হয় তবে আমি এটি আরও পরে দেখব!
লি আর্মস্ট্রং

7
@ লিআর্মস্ট্রং এটি দেখতে আরও বড় দেখাচ্ছে কারণ এটি আপনার পর্দার ঘনত্বের সাথে চিত্রটি সামঞ্জস্য করতে রিসোর্স অবজেক্টটি ব্যবহার করছে। প্রায়শই কোনও পদ্ধতির অবমূল্যায়ন করার অর্থ হ'ল জিনিসগুলি করার জন্য এটি এখন আর সঠিক উপায় নয়, তবে এটি প্রায়শই পিছনের দিকে সামঞ্জস্য রাখতে চালিত হয়। যাইহোক, গুগল সবসময় এপিআই বান্ধব বলে মনে হয় না, তাই তারা ভবিষ্যতে যদি পুরানো নির্মাতাকে ভেঙে দেয় তবে আমাকে অবাক করে না।
onit

সরঞ্জাম শ্রেণীর স্থির পদ্ধতিতে আমাকে নতুন বিটম্যাপড্রেইবল তৈরি করতে হবে। আমার প্রসঙ্গে অ্যাক্সেস নেই। এই ক্ষেত্রে আমি এই পদ্ধতিটি কীভাবে ব্যবহার করতে পারি?
মারেক

4
@ মারেক আমি মনে করি আপনি কীভাবে সেই পদ্ধতিটি কল করছেন সেগুলি সহ সমস্ত প্রাসঙ্গিক উত্স কোড সহ আপনার একটি নতুন প্রশ্ন খোলার উচিত। প্রসঙ্গটি (বা সংস্থানগুলি) এর মধ্যেও প্রবেশ করার জন্য আপনাকে কেবল সেই পদ্ধতিটি পুনরায় চুলক করতে হবে।
অনিত

4
এই নতুন কনস্ট্রাক্টর বিটম্যাপকে স্কেল করে, যা অনেক ক্ষেত্রে পছন্দসই আচরণ নয়।
Moxor

2

একবার চেষ্টা করে দেখুন

  1. ক্রিয়াকলাপে

    BitmapDrawable background = new BitmapDrawable(this.getResources(), blurImageBg);
    
  2. খণ্ডে

    BitmapDrawable background = new BitmapDrawable(getActivity(), blurImageBg);
    
  3. অ্যাডাপ্টারে বা অন্যথায়

    BitmapDrawable background = new BitmapDrawable(context.getResources(), blurImageBg);
    

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.