شرح NumberFormat وكيفية عرض مجموعة صور تحمل نفس الاسم ولكن بارقام مختلفه في anroid studio

شرح NumberFormat  وكيفية عرض مجموعة صور تحمل نفس الاسم ولكن بارقام مختلفه في anroid studio


 شرح NumberFormat  وكيفية عرض مجموعة صور تحمل نفس الاسم ولكن بارقام مختلفه في anroid studio

في كثير من الاحيان يكون لدينا مجموعة من الصور يتم ترتيبها بشكل تصاعدي مثلا img1,img2img3 ... ولكن هل من المعقول ان نقوم بعرض جميع الصور بهذا التنسيق واضافتها داخل الarraylist على سبيل المثال ؟ في طبيعة الامر يكون صعب ولهذا نلجأ لطريقة تسمى NumberFormat  وهي مخصصه بان تقوم بعرض الارقام بشكل تصاعدي كل ما عليك هو كتابة اسم الصورة وبعدها اكتب الرقم الذي تريد عرضه وهيا سوف تتكفل بالباقي ولكي تفهم الصورة بشكل اوضح تعالوا نشاهد الكود التالي ونتعرف عليها بشكل اوضح .

والمقصود بالNumberFormat  هو الطريقة التي تصور بها أجهزة الكمبيوتر والآلات الحاسبة الأرقام تسمى تنسيق أرقام الكمبيوتر. تستخدم غالبية أجهزة الكمبيوتر نظامًا ثنائيًا يتكون من الآحاد والأصفار. النظامان الثماني (0،1-7) والسداسي عشري (0،1-9 ، A ، B ، C ، D ، E ، F) قيد الاستخدام أيضًا.


Android هو الاسم الأكثر انتشارًا هذه الأيام. ويجب أن يكون كل شخص يشارك في دورة تطوير Android على دراية بأحدث ميزات Android Studio ، والتي سنستكشفها اليوم , 

يعرف الجميع نظام Android ، لكن ربما لا يعرفون كيفية إنشاء تطبيق Android احترافي. سأريك كيف. تم تصميم تطبيقات Android باستخدام إعداد Android Studio من Google.

وفقًا للإحصاءات ، بحلول تقدم السنوات ، سيزداد الطلب على مطوري Android بشكل كبير جدا . اليست الان الفرصه بالنسبة لك بالبدء في تعلم تطوير تطبيقات الاندرويد والبدء في ربح المال بكل سهوله ؟


تهيئة methode للNumberFormat  في PageManager

في البداية تقوم بتهيئة class مخصص لهذه العملية بدلا من استخدامه في اكثر من مكان وهنا قمنا بوضع كلا الطريقتين وهيا الحصول على الصور من داخل الdrawable وايضا الحصول عليها من داخل ملف الassets ولهذا قمنا بوضع كلا المثالين ,بالنسبة للاصفار التي تم وضعها في الاعلى تعبر عن اذا كانت الصورة باسم image001 او image002 وهكذا فنضع القيمة 000 لان عدد الارقام هنا ثلاث واما اذا كانت الصورة لا تحتوي على اصفار يمكنك استخدام # كما هو موضح بالمثال بالاعلى ( المثال الاول يحصل على الصورة من الassets والثاني يحصل عليها من الdrawable ) .


تهيئة methode للNumberFormat  في PageManager


PageManager.java


public static int getQuranImageById(Context context , int pageNumber) {
        DecimalFormat format = new DecimalFormat("000");
        String drawableName = "page"+format.format(pageNumber);
        return context.getResources().getIdentifier(drawableName , "drawable" , context.getPackageName());
    }

    public static Drawable getQuranImage(Context context , int pageNumber) {
        DecimalFormat format = new DecimalFormat("000");
        String drawableName = "images/page"+format.format(pageNumber) + ".png";
        InputStream istr = null;
        try {
            istr = context.getAssets().open(drawableName);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return Drawable.createFromStream(istr, null);
    }
    


كيفية استدعاء الmethode داخل الAndroidViewModel

هنا قمنا بعمل class للmodel وهنا يتم الحصول على بيانات الclass السابق ويتم عرضها هنا , لكي نستخدم فقط هذا الclass ونحصل على مانريد منه وهذا من طرق الmvvm .


كيفية استدعاء الmethode داخل الAndroidViewModel

QuranViewModel.java


public class QuranViewModel extends AndroidViewModel {

    public QuranViewModel(@NonNull Application application) {
        super(application);
    }

    public int getQuranImageById(Context context , int pageNumber) {
        return PageManager.getQuranImageById(context,pageNumber);
    }

    public Drawable getQuranImage(int pageNumber) {
        return PageManager.getQuranImage(getApplication() , pageNumber);

    }
  }
  


كيفية استدعاء الصور من الActivity وعرضها

الان ياتي دور اخر مرحلة وهيا استخدام الmethode المطلوبة وهنا سوف نقوم بعمل متغير من نوع drawable ونحصل على الmethode المخصصه للحصول على الصور من داخله وبعدها قمنا بالحصول على الصورة رقم 8 , وبعدها قمنا بعرض الصورة , المثال الاخر وهو للحصول على الصورة من ملف الassets نفس خطوات التعامل مع الملف السابق ولكن هنا يحتاج منا الى الcontext وبما اننا داخل fragment فسوف نقوم بعمل requireContext() وبعدها نكتب رقم الصورة التي نريد عرضها ثم نقوم بعرضها ( استخدام احد الطريقتين وليس الجميع ) .


كيفية استدعاء الصور من الActivity وعرضها

MainActivity.java


public class QuranPageFragment extends Fragment {
FragmentPageQuranBinding binding;
QuranViewModel quranViewModel;
  
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

   binding = DataBindingUtil.inflate(inflater,R.layout.fragment_page_quran, container, false);
        return binding.getRoot();
    
 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);   }
  
quranViewModel = new ViewModelProvider(this).get(QuranViewModel.class);
    
Drawable quranPageImage = quranViewModel.getQuranImage(8);
binding.img.setImageDrawable(quranPageImage);

int quranPage = quranViewModel.getQuranImageById(requireContext() , 5);
binding.img.setImageResource(quranPage);
    
        }
}


فيديو الشرح 1

فيديو الشرح 2


لمزيد من المقالات :



تعليقات