رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

ضمن عرض سلام خدمت دوستان من برنامه نویسی رو تازه شروع کردم و فعلا در حال طراحی یک ماشین حساب هستم. اما در کدنویسی یکی دوتا button دچار مشکل شدم اولی اینکه برای طراحی کلید اعشار (dot) کد زیر رو نوشتم ولی مشکل اینجاست که اعشار فقط باید یکبار زده بشه مثلا عدد ۴۴.۷ اما این کد هیچ محدودیتی برای اعشار نداره  مثلا ۲۲.۴.۵.۶ که یک عدد بی معنی هست

dot.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
       String str = disp.getText().toString();
                if (str.length() >= 1) {
                    str = str.substring(0, str.length() - 1);
                    disp.setText(str);
                }
                if (str.length() < 1) {
                    disp.setText("0");

                }

            }
        });

میشه راهنمایی کنید که چه دستوری باید اضافه کنم یا کد رو چجوری تغییر بدم که اعشار فقط یک بار امکان استفاده داشته باشه؟

سوال بعدی در مورد ریشه nام یک عدد هست مثلا میخام رادیکال عدد ۲۴۳ به فرجه ۴ رو حساب کنم چه دستوری باید بنویسم؟ اندروید استودیو در بخش math دو گزینه ریشه دوم و ریشه سوم رو داره ولی نمیدونم ریشه های بالاتر چجوری محاسبه میشه

و سوال اخر اینکه وقتی دو عدد رو در هم ضرب می کنم حاصل بصورت عددی با اعشار زیاد میادبرای مثال ۶.۰۰۰۰۰۰۰۰ چطوری باید این اعشار اضافی رو حذف کنم؟

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 3 ساعت قبل، رشید ایگدری گفته است :

ضمن عرض سلام خدمت دوستان من برنامه نویسی رو تازه شروع کردم و فعلا در حال طراحی یک ماشین حساب هستم. اما در کدنویسی یکی دوتا button دچار مشکل شدم اولی اینکه برای طراحی کلید اعشار (dot) کد زیر رو نوشتم ولی مشکل اینجاست که اعشار فقط باید یکبار زده بشه مثلا عدد ۴۴.۷ اما این کد هیچ محدودیتی برای اعشار نداره  مثلا ۲۲.۴.۵.۶ که یک عدد بی معنی هست

dot.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
       String str = disp.getText().toString();
                if (str.length() >= 1) {
                    str = str.substring(0, str.length() - 1);
                    disp.setText(str);
                }
                if (str.length() < 1) {
                    disp.setText("0");

                }

            }
        });

میشه راهنمایی کنید که چه دستوری باید اضافه کنم یا کد رو چجوری تغییر بدم که اعشار فقط یک بار امکان استفاده داشته باشه؟

سوال بعدی در مورد ریشه nام یک عدد هست مثلا میخام رادیکال عدد ۲۴۳ به فرجه ۴ رو حساب کنم چه دستوری باید بنویسم؟ اندروید استودیو در بخش math دو گزینه ریشه دوم و ریشه سوم رو داره ولی نمیدونم ریشه های بالاتر چجوری محاسبه میشه

و سوال اخر اینکه وقتی دو عدد رو در هم ضرب می کنم حاصل بصورت عددی با اعشار زیاد میادبرای مثال ۶.۰۰۰۰۰۰۰۰ چطوری باید این اعشار اضافی رو حذف کنم؟

با تشکر

 

یک کلاس ایجاد کنید برای اینکه بتوانید روی EditTextکاری کنید فقط یبار دات لود شود :

public class DecimalTextWatcher implements TextWatcher {
    private NumberFormat numberFormat = NumberFormat.getNumberInstance();
    private EditText editText;
    private String temp = "";
    private int moveCaretTo;
    private int integerConstraint;
    private int fractionConstraint;
    private int maxLength;

    /**
     * Add a text watcher to Edit text for decimal formats
     * 
     * @param editText
     *            EditText to add DecimalTextWatcher
     * @param before
     *            digits before decimal point
     * @param after
     *            digits after decimal point
     */
    public DecimalTextWatcher(EditText editText, int before, int after) {
        this.editText = editText;
        this.integerConstraint = before;
        this.fractionConstraint = after;
        this.maxLength = before + after + 1;
        numberFormat.setMaximumIntegerDigits(integerConstraint);
        numberFormat.setMaximumFractionDigits(fractionConstraint);
        numberFormat.setRoundingMode(RoundingMode.DOWN);
        numberFormat.setGroupingUsed(false);
    }

    private int countOccurrences(String str, char c) {
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == c) {
                count++;
            }
        }
        return count;
    }

    @Override
    public void afterTextChanged(Editable s) {
        // remove to prevent StackOverFlowException
        editText.removeTextChangedListener(this);
        String ss = s.toString();
        int len = ss.length();
        int dots = countOccurrences(ss, '.');
        boolean shouldParse = dots <= 1 && (dots == 0 ? len != (integerConstraint + 1) : len < (maxLength + 1));
        boolean x = false;
        if (dots == 1) {
            int indexOf = ss.indexOf('.');
            try {
                if (ss.charAt(indexOf + 1) == '0') {
                    shouldParse = false;
                    x = true;
                    if (ss.substring(indexOf).length() > 2) {
                        shouldParse = true;
                        x = false;
                    }
                }
            } catch (Exception ex) {
            }
        }
        if (shouldParse) {
            if (len > 1 && ss.lastIndexOf(".") != len - 1) {
                try {
                    Double d = Double.parseDouble(ss);
                    if (d != null) {
                        editText.setText(numberFormat.format(d));
                    }
                } catch (NumberFormatException e) {
                }
            }
        } else {
            if (x) {
                editText.setText(ss);
            } else {
                editText.setText(temp);
            }
        }
        editText.addTextChangedListener(this); // reset listener

        // tried to fix caret positioning after key type:
        if (editText.getText().toString().length() > 0) {
            if (dots == 0 && len >= integerConstraint && moveCaretTo > integerConstraint) {
                moveCaretTo = integerConstraint;
            } else if (dots > 0 && len >= (maxLength) && moveCaretTo > (maxLength)) {
                moveCaretTo = maxLength;
            }
            try {
                editText.setSelection(editText.getText().toString().length());
                // et.setSelection(moveCaretTo); <- almost had it :))
            } catch (Exception e) {
            }
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        moveCaretTo = editText.getSelectionEnd();
        temp = s.toString();
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        int length = editText.getText().toString().length();
        if (length > 0) {
            moveCaretTo = start + count - before;
        }
    }
}

فراخوانی :

itemCostEditText.addTextChangedListener(new DecimalTextWatcher(itemCostEditText, 6, 2));

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 هفته بعد...
در در 1395/10/13, 15:50:50، Farzad Sarseifi گفته است :

 

یک کلاس ایجاد کنید برای اینکه بتوانید روی EditTextکاری کنید فقط یبار دات لود شود :

public class DecimalTextWatcher implements TextWatcher {
    private NumberFormat numberFormat = NumberFormat.getNumberInstance();
    private EditText editText;
    private String temp = "";
    private int moveCaretTo;
    private int integerConstraint;
    private int fractionConstraint;
    private int maxLength;

    /**
     * Add a text watcher to Edit text for decimal formats
     * 
     * @param editText
     *            EditText to add DecimalTextWatcher
     * @param before
     *            digits before decimal point
     * @param after
     *            digits after decimal point
     */
    public DecimalTextWatcher(EditText editText, int before, int after) {
        this.editText = editText;
        this.integerConstraint = before;
        this.fractionConstraint = after;
        this.maxLength = before + after + 1;
        numberFormat.setMaximumIntegerDigits(integerConstraint);
        numberFormat.setMaximumFractionDigits(fractionConstraint);
        numberFormat.setRoundingMode(RoundingMode.DOWN);
        numberFormat.setGroupingUsed(false);
    }

    private int countOccurrences(String str, char c) {
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == c) {
                count++;
            }
        }
        return count;
    }

    @Override
    public void afterTextChanged(Editable s) {
        // remove to prevent StackOverFlowException
        editText.removeTextChangedListener(this);
        String ss = s.toString();
        int len = ss.length();
        int dots = countOccurrences(ss, '.');
        boolean shouldParse = dots <= 1 && (dots == 0 ? len != (integerConstraint + 1) : len < (maxLength + 1));
        boolean x = false;
        if (dots == 1) {
            int indexOf = ss.indexOf('.');
            try {
                if (ss.charAt(indexOf + 1) == '0') {
                    shouldParse = false;
                    x = true;
                    if (ss.substring(indexOf).length() > 2) {
                        shouldParse = true;
                        x = false;
                    }
                }
            } catch (Exception ex) {
            }
        }
        if (shouldParse) {
            if (len > 1 && ss.lastIndexOf(".") != len - 1) {
                try {
                    Double d = Double.parseDouble(ss);
                    if (d != null) {
                        editText.setText(numberFormat.format(d));
                    }
                } catch (NumberFormatException e) {
                }
            }
        } else {
            if (x) {
                editText.setText(ss);
            } else {
                editText.setText(temp);
            }
        }
        editText.addTextChangedListener(this); // reset listener

        // tried to fix caret positioning after key type:
        if (editText.getText().toString().length() > 0) {
            if (dots == 0 && len >= integerConstraint && moveCaretTo > integerConstraint) {
                moveCaretTo = integerConstraint;
            } else if (dots > 0 && len >= (maxLength) && moveCaretTo > (maxLength)) {
                moveCaretTo = maxLength;
            }
            try {
                editText.setSelection(editText.getText().toString().length());
                // et.setSelection(moveCaretTo); <- almost had it :))
            } catch (Exception e) {
            }
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        moveCaretTo = editText.getSelectionEnd();
        temp = s.toString();
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        int length = editText.getText().toString().length();
        if (length > 0) {
            moveCaretTo = start + count - before;
        }
    }
}

فراخوانی :

itemCostEditText.addTextChangedListener(new DecimalTextWatcher(itemCostEditText, 6, 2));

 

ضمن تشکر میشه لطف کنید توضیح بدید چون تازه کارم درضمن اینهمه کدنویسی فقط برای یکبار لود شدن دکمه دات هستش؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به نظر من یه راه خیلی سادش اینه یه متغیر boolean تعریف کنید وقتی dot وارد کرد true بشه و توی آنکلیک دکمه dot شرط انجام دستورات رو false بودن متغیر ها بذارید.

در صورتی که قرار هست اون dot پاک بشه،میتونید تو textChange اون editText یه کد بنویسید چک کنه ببینه الان dot پاک شد؟؟پس متغیر رو false کن

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 5 سال بعد...

من آموزش برنامه ماشین حساب پیشرفته به همراه کدها و xml و گریدل تنظیمات رو برای اندروید استودیو میخواستم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من  آموزش برنامه ماشین حساب پیشرفته به همراه کدها و xml و گریدل تنظیمات رو برای اندروید استودیو میخواستم

اندروید استودیو من آخرین  نسخه منتشر شده هست

[email protected] 

09195986304 واتساپ تلگرام

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط elecomco
      آیا می‌خواهید برنامه اندروید بعدی خود را بسازید ، اما مطمئن نیستید که کدام زبان برنامه‌نویسی برای شما بهترین انتخاب است؟ در این مقاله به زبان هایی خواهم پرداخت که برای توسعه برنامه های اندروید بعدی ممکن است از آنها استفاده کنم.
      اندروید پذیرفته ترین سیستم عامل موبایل در جهان است. اندروید توسط گوگل توسعه داده شد و یک سیستم‌عامل باز مبتنی بر لینوکس است. اندروید کاملا متن باز است و هر شرکت یا فردی می‌تواند آن را دانلود کرده و از آن برای محصولات خود استفاده کند. در اصل ، این سیستم عامل از طریق شرکت اندروید برای دوربین‌های دیجیتال و موبایل طراحی شد. شرکت اندروید در سال ۲۰۰۵ توسط گوگل خریداری شد. در حال حاضر ، ۲.۳ میلیارد تلفن هوشمند اندروید در جهان وجود دارد.
      اندروید نه تنها از دو میلیارد تلفن هوشمند ، لپ‌تاپ ، تبلت  و کامپیوترهای شخصی پشتیبانی میکند ، بلکه اندروید قلب تپنده میلیاردها دستگاهی است که در زندگی روزمره خود از آنها استفاده می‌کنید. برخی از این وسایل عبارتند از: تلویزیون ، سیستم‌های امنیت خانگی ، یخچال و فریزر ، باکس های تلویزیونی ، دوربین ها ، ماشین ها ، سیستم‌های ناوبری ، تبلت های هوشمند ، بازی رایانه‌ای و وسایل خانگی هوشمند.
      چه زبان‌های برنامه‌نویسی می‌توانند برای توسعه برنامه‌های کاربردی تلفن همراه به کار روند؟ در اینجا لیستی از رایج‌ترین زبان‌های برنامه‌نویسی برای توسعه برنامه‌های اندروید آورده شده است : 
      Java Kotlin #C Python ++C
      جاوا
      زبان جاوا محبوب‌ترین زبان برنامه‌نویسی در این زمینه است. جاوا یک زبان برنامه‌نویسی استاتیک ، همه منظوره و متن باز است. جاوا از زمان راه‌اندازی سیستم‌عامل اندروید , زبان برنامه‌نویسی اولیه این سیستم عامل بوده است . جاوا در شرکت سان میکروسیستمز توسط James Gosling در سال ۱۹۹۵ ساخته شد. این زبان برنامه نویسی در حال حاضر متعلق به اوراکل است.
      جاوا براساس ++c  ساخته شد تا یادگیری آن برای توسعه دهندگان ساده باشد. این زبان همراه با ++c بهترین زبان‌های برنامه‌نویسی برای دانشجویان و افراد تازه کار برای یادگیری اصول برنامه‌نویسی هستند. زبان جاوا توسط بسیاری از دانشگاه‌ها به عنوان اولین زبان برنامه‌نویسی برای آموزش به دانشجویان استفاده میشود.
      برخلاف زبان های سوئیفت، سی شارپ و کاتلین ممکن است جاوا زبان برنامه‌نویسی مدرنی نباشد و مانند زبان های دیگر مدام بروزرسانی نشود. با این حال , زبان جاوا نقطه شروعی را برای توسعه دهندگان جدید مشخص میکند. یادگیری زبان جاوا در مقایسه با کاتلین بسیار ساده‌تر است. اگر یک توسعه دهنده تازه کار هستید و میخواهید توسعه اندروید را یاد بگیرید , جاوا یکی از آسان‌ترین راه‌ها برای شروع است.
      کاتلین
      کاتلین یک زبان برنامه‌نویسی مدرن , دقیق , ایمن , شی گرا و سازگار با همه ی پلتفرم هاست که توسط یک شرکت نرم‌افزاری به نام JetBrains در سال ۲۰۱۱ ساخته شده‌است. این زبان برای ساخت نرم‌افزارهای کاربردی , برنامه های اندروید و برنامه‌های بومی استفاده می‌شود. در حال حاضر گوگل توسط شرکت گوگل پشتیبانی میشود.
      زبان کاتلین از زمان انتشار Android Studio ۳,۰ در اکتبر سال ۲۰۱۷  به عنوان زبان برنامه‌نویسی رسمی برای اندروید استفاده شده‌است. این زبان برای طراحی برنامه‌های کاربردی ، ساخت اپلیکیشن های مدرن و ارائه قابلیت‌های جدید برای توسعه دهندگان طراحی شده است. کاتلین برای شما سادگی , انعطاف‌پذیری و بهره‌وری را فراهم می آورد.
      کد های نوشته شده در این زبان نسبت به زبان جاوا کوتاه تر و تمیز تر است. برای پروژ های اندروید بعدی شدیدا ً توصیه می‌کنم که از این زبان استفاده کنید . 
      #C
      زبان #C توسط Anders Hejlsberg در مایکروسافت در سال ۲۰۰۰ ایجاد شد. سی شارپ یک زبان برنامه‌نویسی ساده ، انعطاف‌پذیر ، ایمن ، و متن باز است. این زبان یکی از پراستفاده ترین زبان‌های برنامه‌نویسی در جهان است. سی شارپ به توسعه‌دهندگان اجازه می‌دهد تا تمام برنامه‌های کاربردی از قبیل ویندوز ، کنسول‌ها ، برنامه‌های وب ، برنامه‌های موبایل ، و سیستم‌های backend را بسازند.
      برنامه نویسان سی شارپ می‌توانند برنامه‌های کاربردی ios و اندروید را با کمک Xamarin بسازند . Xamarin به عنوان بخشی از ویژوال استادیو ابزاری است که به توسعه دهندگان اجازه میدهد کدهای سی شارپ خود را به برنامه های بومی اندروید و یا ios تبدیل کنند. سی شارپ طراحان را قادر می‌سازد که برنامه‌های کاربردی ios بومی و اندروید را بدون آگاهی از یک زبان برنامه‌نویسی جدید بسازند.
      پایتون
      پایتون یکی از رایج‌ترین زبان‌های برنامه‌نویسی زمانه اخیر است. پایتون که توسط Guido van Rossum در سال ۱۹۹۱ ایجاد شد. این زبان متن باز ، سطح بالا و همه منظوره است. پایتون یک زبان برنامه‌نویسی پویا است که از پارادایم‌های توسعه شی گرا ، تابعی و رویه‌ای پشتیبانی می‌کند. این زبان در برنامه‌نویسی یادگیری ماشین بسیار محبوب است. در توسعه نرم‌افزار های اندروید ، پایتون جهت ایجاد کتابخانه‌ها ، توابع ، و دیگر وظایف پردازش به کار می‌رود .
      ++C
      ++C یکی از قدیمی‌ترین و محبوب‌ترین زبان‌های برنامه‌نویسی است. ++C برای ساختن رابط های کاربری یا صفحات برنامه استفاده نمی‌شود. در فرآیند توسعه اندروید ، ++C برای ساختن API ها و وظایف backend استفاده می‌شود. توسعه دهندگان front end درگیر توسعه ++C نیستند ، بلکه کارکرد این زبان بیشتر مربوط به API هاست که مربوط به بخش back-end است. کتابخانه های معروفی در + +C  وجود دارند که برای توسعه دهندگان Android در دسترس هستند و میتوانند از آنها در برنامه های خود استفاده کنند.

      نتیجه‌گیری
      اندروید رایجترین سیستم‌عامل در دنیا است. برای ساخت اپلیکیشن اندروید از دو زبان برنامه‌نویسی اصلی یعنی جاوا و کاتلین استفاده شده‌است. در حالی که زبان برنامه‌نویسی جاوا یک زبان برنامه‌نویسی قدیمی است اما زبان کاتلین یک زبان سریع واضح و در حال تکامل است. اگر شما یک توسعه دهنده جدید هستید و به تازگی می‌خواهید توسعه برنامه های اندرویدی را شروع کنید، پیشنهاد من به شما زبان کاتلین است.
             
    • توسط rezanasarzade
      با سلام عرض ادب خدمت کاربران انجمن و تبریک سال 99
      بنده مشکل sdk دارم لطفا راهنمایی کنید . با تشکر
       
       




    • توسط irmacfa
      دوستان من تازه کار هستم میخواستم بپرسم برای شروع کار با اندروید استودیو اگر آخرین ورژن برنامه رو نصب کنم مشکلی نداره ؟ 
      بعد اینک پک کامل اندروید SDK هم دانلود کردم چطور بهش وصلش کنم ؟
       
      دانلود اندروید استودیو
       
    • توسط mostafa5709
      سلام
      من تا امروز هنگام ران گرفتن اندروید استودیو از گوشی استفاده می کردم ولی نمی دونم چی شد دیگه هنگام ران گوشی رو دیگه تشخیص نمیده.
      قبلش تنظیمات مربوط به تلفن هم انجام داده بود .
      از طریق usb گوشی رو به کامپیوتر وصل می کردم
       
      لطفا کمک کنید
      اجرا و دیباگ پروژه اندروید بر روی دیوایس واقعی
       
    • توسط mhm1380
      سلام دوستان گلم
      من ازتون یه راهنمایی میخواستم
      اگر بخوایم یه نرم افزار بارگزاری فیلم مانند فیلیمو بسازیم چقدر زمان نیاز داره برای ساختنش ؟
      و اگر کسی میتونه همکاری یا مشورت بهم بده لطف کنه بیاد پی وی در تلگرام
      @MHmansouri
  • فایل

×
×
  • اضافه کردن...