آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

۳۳ مطلب با موضوع «آموزش اندروید :: نکات تکمیلی» ثبت شده است

1. سینگل تون

 

2. بیلدر (با توجه به وجود named constructor و کلاس data در کاتلین این دیزاین پترن معنی نداره)

 

3. فکتوری

 

4. dependency Injection (DI)

 

5. Facade:

امکان این را می دهد که رابط ساده ای را برای دسترسی به یک سیستم پیچیده ایجاد کرد. در واقع، زیر ساخت های پیچیده سیستم را مخفی کرده و به کاربر اجازه می دهد تا بدون آگاهی از پیچیدگی داخلی، با سیستم تعامل داشته باشه. مثل اینترفیسی که در رتروفیت برای تعریف متدهای نتورک استفاده میشه.

 

6. Adapter:

این دیزاین پترن برای اتصال دو کلاس با ساختارهای متفاوت استفاده می شود. به عبارت دیگر، یک میانجی بین دو ساختار دیگر است. این میانجی تغییرات لازم را روی داده های سورس انجام میده تا در مقصد نشون داده بشه بدون اینکه داده های اصلی تغییر پیدا کنه. مثل اداپتر در ریسایکلر ویو که لیستی از داده های منبع که عموما لیست یا آرایه هست را به view holder که قابل نمایش برای ریسایکلر ویو است را تبدیل میکند.

۰ نظر موافقین ۰ مخالفین ۰ ۱۱ اسفند ۰۲ ، ۰۵:۳۰
میم دال

اگر بخواهیم با زدن یک دکمه در وب دیتا به اپلیکیشن ارسال شود؛ باید متد addJavascriptInterface برای وب ویو ست گردد. در ورودی این متد یک کلاس از جنس آبجکت و یک name پاس داده میشود.

binding.webView.addJavascriptInterface(new JavaScriptInterface(), "Android");

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۳۱ مرداد ۰۱ ، ۱۸:۵۲
میم دال

برای اپلیکیشن هایی که بیش از 64K متد دارن (K یعنی 1024) به عبارتی دیگر، اپ هایی که بیش از 65,536 متد دارن، باید multidex فعال بشه در غیر این صورت ارور میده.

نحوه فعال سازی در sdkهای پایین تر از 20:

۰ نظر موافقین ۰ مخالفین ۰ ۱۵ تیر ۰۰ ، ۲۰:۵۳
میم دال

"گوگل پلی سرویس" یک لایه نرم افزاری است که اپلیکیشن های اندروید رو به سرویس های گوگل متصل میکنه. گوگل پلی سرویس همیشه در بک گراند در حال اجرا است و مسائلی مثل پوش نوتیفیکیشن، لوکیشن و اینا رو مدیریت می کنه. با توجه به نیازمون توی اپلیکیشن، از dependency مربوطه برای گوگل پلی سرویس استفاده می شه. مثلا:

dependency مپس:

"com.google.android.gms:play-services-maps:17.0.0"

dependency لوکیشن:

"com.google.android.gms:play-services-location:18.0.0"

 

لیست dependencyهای گوگل پلی سرویس

 

"گوگل موبایل سرویس (GMS)" یک سری از اپلیکیشن ها و APIهای گوگل هست که روی گوشی های اندرویدی نصب میشه (مثل کروم، جیمیل، یوتیوب، گوگل مپ و ...) و به عملکرد مناسب گوشی کمک میکنه.

۱ نظر موافقین ۰ مخالفین ۰ ۱۰ فروردين ۰۰ ، ۰۴:۲۷
میم دال

ادیت تکست مورد علاقم!

مالتی لاین، اسکرول هم داره تازه!

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۱ بهمن ۹۹ ، ۱۰:۰۶
میم دال

برای اینکه بدونیم در حال حاضر دیوایس به اینترنت وصل هست یا خیر از کد زیر استفاده می شود:

 

private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}

نکته مهم اینکه در منیفست باید پرمیشن زیر اضافه شده باشه:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

منبع

۰ نظر موافقین ۰ مخالفین ۰ ۰۳ دی ۹۹ ، ۰۴:۵۵
میم دال

متدی به نام "onKeyDown" داریم که میشه باهاش هر کلید سخت افزاری که کاربر فشار میده detect کرد.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // back was pressed
        return true;
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        // volume up was pressed
    }
    return super.onKeyDown(keyCode, event);
}

۰ نظر موافقین ۰ مخالفین ۰ ۰۱ دی ۹۹ ، ۱۸:۲۶
میم دال

توی اندروید استودیوی 4 به بعد باتن پیش فرض باتن متریال دیزاین هست. بنابراین اگر برای کاستوم کردن باتن از روش قبلی استفاده کنیم یعنی shape بسازیم و با اتریبیوت background بدیم باتن تغییری نمیکنه. این روش برای باتن هایی که غیر متریال هستن جواب میده.

برای حل این مشکل دو راه هست:

 

1. استفاده از باتن غیر متریال و shape

این باتن توی XML اینجوری فراخونی میشه:

android.widget.Button

 

2. استفاده از باتن متریال و کاستوم کردن باتن به صورت زیر:

  • app:rippleColor: The colour to be used for the button ripple effect
  • app:backgroundTint: Used to apply a tint to the background of the button. If you wish to change the background color of the button, use this attribute instead of background.

  • app:strokeColor: The color to be used for the button stroke

  • app:strokeWidth: The width to be used for the button stroke
  • app:cornerRadius: Used to define the radius used for the corners of the button

 

منبع

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۱ دی ۹۹ ، ۰۳:۴۷
میم دال

مقاله جالبیه

 

یه قرارداد منطقی برای نامگذاری ریسورس ها معرفی میکنه

 

ترجمش

 

ولی من اصلشو ترجیح میدم :)

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ آذر ۹۹ ، ۰۳:۴۹
میم دال

برای ارسال آبجکت از یک اکتیویتی به اکتیویتی دیگر سه راه وجود دارد:

 

1. اینکه دونه دونه ویژگی هاش رو گت کنیم (البته اگر primitive باشن) و از طریق putExtra بفرستیم که روش جالبی نیست.

 

2. پیاده سازی اینترفیس serializable توسط کلاس مدل. این اینترفیس در جاوا تعریف شده و روش خوب و ساده ایه هست. فقط سرعتش کمه.

 

3. پیاده سازی اینترفیس Parceable توسط کلاس مدل. این API جز SDK اندروید هست و سرعت خیلی بیشتری نسبت به قبلی داره ولی پیاده سازیش یک مقدار پیچیده تره.

۰ نظر موافقین ۰ مخالفین ۰ ۱۰ آذر ۹۹ ، ۱۳:۳۷
میم دال