مقالات اپلیکیشن

شرح مقالات اپلیکیشن

مقالات اپلیکیشن

شرح مقالات اپلیکیشن

آشنایی با انواع پشتیبانی کتابخانه ها در اندروید

زمانی شما اپلیکیشنی را روی واپسین نسخه اندروید،  طراحی اپلیکیشن در مشهد به عنوان مثال اندروید 4.0، پیشرفت می دهید و می‌خواهید آن را روی دستگاه هایی که دارنده نسخه های دیرین خیس اندروید می‌باشند، برای مثال اندروید 3.2، اعمال فرمایید بایستی سازگاری پذیری معکوس (backward compatibility) را به کد اپلیکیشن اضافه نمائید تا این شغل قابلیت پذیر گردد.


برای حفاظت سازگاری پذیری معکوس (backward compatibility) ، اندروید پکیج Android Support Library را به شما ارائه می‌دهد. رایاپارس  این پکیج گروه ای از کد کتابخانه هایی میباشد که نسخه های سازگاری پذیری معکوس را در فریمورک API های اندروید application  و همینطور خصوصیت هایی که صرفا از روش API های کتابخانه در دسترس میباشند، ارائه می‌دهد.

هر Support Library یک سازگاری پذیر معکوس برای یک سطح خاص از Android API  است.

خصوصیت های Support Library

پکیج Support Library در اندروید دارنده کتابخانه های متعددی میباشد که میتوانند وارد نرم افزار شما شوند. هرکدام از این کتابخانه ها تیم بندی خاصی از نسخه های پلتفرم اندروید و دسته ی خصوصیت های خاصی را تامین می نمایند.


برای اینکه از این کتابخانه ها به کارگیری ی موءثر تری داشته باشید، اعتنا به اینکه کدام سطح API گزینه مقصود شماست خیلی اساسی میباشد ، به این دلیل‌که هر کتابخانه ، سطوح گوناگون API را جانبداری می نماید.


در ذیل توضیح مختصری از android support libraries و سطح API که دفاع می نمایند را خواهید خواند :


v4 Support Library : این کتابخانه برای اندروید نسخه 1.6 (سطح API 4) و فراتر پیاده سازی گردیده است.


v7 Support Library : کتابخانه های متعددی وجود دارا هستند که برای به کارگیری اندروید نسخه 2.1 ( و سطح API 7) و فراتر پیاده سازی گردیده اند.


v8 Support Library : این کتابخانه برای اندروید ( و سطح API 8) پیاده سازی گردیده است.


v13 Support Library : این کتابخانه برای اندروید 3.2 ( سطح API 13) و فراتر پیاده سازی گردیده‌است.


لطفا به حافظه داشته باشید که به کار گیری از Android Support Library در نرم افزار های شما ترجیح داده میشود. با استعمال از این کتابخانه ها میتوانید بازار مشتریان و یوزرها نرم افزار خویش را ارتقا دهید.

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

معمولی ترین روش برای ساختن چرخه ی جلو رفتن (progress circle) ساخت و ساز کلاسی به اسم ProgressDialog است.
Loadinbar هم قادر است از روش همین کلاس ساخته خواهد شد. طراحی اپلیکیشن در مشهد  فقط تفاوت منطقی در میان bar و circle  این میباشد که او‌لین هنگامی به کار گیری می گردد که شما فرصت تک تک انتظار برای اکتیویتی خاص را می‌دانید، رایاپارس در حالی که دومین هنگامی به کار گیری می گردد که شما فرصت این انتظار را نمی دانید.
برای این خواسته مورد نیاز میباشد application که یک آبجکت از این کلاس را تحت عنوان مثال ساخت و ساز نمائید ، که سینتکس آن را مشاهده میکنید :
ProgressDialog progress = new ProgressDialog(this);
اینک شما می‌توانید تعدادی خصوصیت مرتبط با این دیالوگ را ، برای مثال استایل (style) ، متن و غیره ، تهیه و تنظیم نمایید.
progress.setMessage(\"Downloading Music :) \");
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setIndeterminate(true);
خلال این سیاق ها، روال های دیگری نیز به وسیله کلاس ProgressDialog ارائه می گردند که به تفصیل پایین میباشد :

()getMax : این مشی بیشترین مقدار یک progress را گزارش میدهد.
(incrementProgressBy(int diff : این روال ترازو توسعه و گسترش را مبتنی بر ترازو اختلاف مقدار عبور یافته ارتقا میدهد.
(setIndeterminate(boolean indeterminate : این روال نشانگر progress را تحت عنوان مشخص و معلوم یا این که نامعین ، تهیه و تنظیم می نماید.
(setMax(int max : این روال بیشترین مقدار را برای یک progress dialog را تهیه می نماید.
(setProgress(int value  : این سیاق برای به روز progress dialog با یک‌سری مقدار معلوم ، به کارگیری میشود.
(show(Context context, CharSequence title, CharSequence message :  این اسلوب یک مشی استاتیک است که برای اکران progress dialog به کار گیری میشود.

مقایسه LiveData با RxJava

LiveData ی اندروید تا حدودی مشابه RxJava میباشد طراحی اپلیکیشن در مشهد  با این تفاوت که LiveData از چرخه معاش (lifecycle)  در View های اندروید باخبر میباشد.
چنانچه View در دور‌نما باشد ، LiveData داده های شمارا در View آپ تو دیت نمی نماید. رایاپارس  این به ما امداد می نماید تا از استثناهایی مانند IllegalStateException و غیره پرهیز کنیم. این عمل سبب ساز کاهش مصرف منابع سیستمی برای مثالً کاهش مصرف cpu و حافظه موقت و باتری و غیره نیز میشود.
LiveData در ViewModel چه‌گونه اکتیویتی را آپ تو دیت می نماید؟
هنگامی Observer را در Activity خویش تصویب میکنیم ، application  بایستی مشی onChanged  را Override کنیم. هر فرصت LiveData عوض می شود ، روال onChanged فراخوانی می‌شود. به این ترتیب در onChanged ، میتوانیم تغییرات LiveData را به View جاری ساختن کنیم.
LiveData صرفا یک نوع داده میباشد که هر مجال داده عوض میشود ، آن را به Observer استحضار میدهد. LiveData مانند اعلان کننده تغییرات داده میباشد.
MutableLiveData
MutableLiveData صرفا یک کلاس میباشد که از کلاس نوع LiveData ارث بری می نماید. ولی برخلاف LiveData داده داخل آن را می اقتدار تغییر‌و تحول اعطا کرد.
با فراخوانی متدهای setValue و postValue  از MutableLiveData می قدرت داده داخل آن را تغییر‌و تحول اعطا کرد. بعد از اینکه داده تغییر و تحول کرد MutableLiveData به observer اگاهی می‌دهد.

با به کارگیری از سیاق getValue در شی LiveData یا این که MutableLiveData مقدار داده فعلی باطن آن را می اقتدار خواند.

MutableLiveData معمولاً بیشتر به کار گیری می گردد چون متدهای setValue و postValue  را به طور همگانی در دسترس قرار میدهند ، چیزی که کلاس LiveData ارائه نمی دهد.

تابع آماده جاوا برای اکتیویتی های تنظیمات اندروید

تابعی را فراهم کرده ایم تا با به کار گیری از آن در پروژه خویش ، فارغ از نیاز به کد نویسی طراحی اپلیکیشن در مشهد  اضافه نصیب مایحتاج خویش را در پیکربندی اندروید گشوده نمایید

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

مثلا شما یک صفحه کلید بسط داده اید ، در اولِ فعالیت شما نیاز بدین دارید رایاپارس  که پیکربندی مرتبط با صفحه کلید را در پیکربندی اندروید گشوده کرده ، تا استفاده کننده بتواند از آن قسمت صفحه کلید شمارا فعال نماید ، application  برای این عمل و امثال آن تابعی که می خواهم به شما معرفی کنم بسیار کارآمد میباشد 


شیوه استعمال


_Settings(\"\");

شما می‌توانید بین دو دابل کوتیشن بالا امرها از پیش رقم خورده ای را وارد نمائید تا قسمت های مختلفی از پیکربندی اندروید را گشوده نمائید 


 


بازکردن پیکربندی نرم افزار خویش 


_Settings(\"settings.your.app\");

بازکردن پیکربندی صفحه کلید 


_Settings(\"settings.keyboard\");

بازکردن پیکربندی نرم افزار ها 


_Settings(\"settings.app\");

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


_Settings(\"default.app\");

بازکردن پیکربندی apn


_Settings(\"settings.apn\");

بازکردن تنطیمات vpn 


_Settings(\"settings.vpn\");

بازکردن تنطیمات ورقه اکران 


_Settings(\"settings.display\");

بازکردن تنطیمات روز و شب 


_Settings(\"settings.night\");

بازکردن تنطیمات وب تلفن همراه 


_Settings(\"settings.mobile.data\");

بازکردن تنطیمات seo باطری 


_Settings(\"settings.battery.opt\");

بازکردن پیکربندی ذخیره سازی باطری 


_Settings(\"battery.saver\");

بازکردن پیکربندی نرم‌افزار نویسی 


_Settings(\"settings.developer\");

بازکردن پیکربندی حساب ها


_Settings(\"settings.account\");

بازکردن تنطیمات موقعیت هواپیما


_Settings(\"settings.airplane\");

بازکردن پیکربندی پشتوانه گیری 


_Settings(\"settings.backup\");

بازکردن پیکربندی ساعت و تاریخ 


_Settings(\"settings.date\");

متد های دیگر برای کلاس HttpURLConnection در دسترس است

()disconnect : این سیاق اتصال را آزاد می نماید طراحی اپلیکیشن در مشهد  تا منابع بتوانند مجدد استعمال شوند یااینکه در غایت بسته شوند.

()getRequestMethod : این روال ، روال درخواستی را که برای اتصال به سرور remote HTTP گزینه استعمال می سازد معلوم می نماید.

()getResponseCode : این اسلوب پاسخی رایاپارس  که به وسیله سرور HTTP ارسال می‌گردد را return می نماید.

(setRequestMethod(String method : این روال امر (command) درخواست ، application   که به سرور HTTP رویکرد به دور ارسال می شود را تهیه می نماید.

()usingProxy : این مشی آرم میدهد که آیا اتصال از یک پروکسی سرور به کار گیری می نماید یا این که نه .

نمونه :

نمونه پایین روش ی استعمال از کلاس HttpURLConnection را تبیین می نماید. این نرم افزار به شما اذن میدهد کد HTML را از سایت حصول نمائید .

این نمونه را بایستی روی یک دستگاه حقیقی و واقعی که به وب متصل میباشد آزمایش فرمایید .

محتوای پوشه src/MainActivity.java :

package com.tutorialspoint.myapplication;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import android.net.ConnectivityManager;
import android.Operating System.Bundle;
import android.Operating System.Handler;
import android.سیستم عامل.Message;
import android.support.v7.app.ActionBarActivity;
import android.view.View;

import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;

import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class MainActivity extends ActionBarActivity {
private ProgressDialog progressDialog;
private Bitmap bitmap = null;
Button b1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button);

b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkInternetConenction();
downloadImage(\"http://www.tutorialspoint.com/green/images/logo.png\");
}
});
}

private void downloadImage(String urlStr) {
progressDialog = ProgressDialog.show(this, \"\", \"Downloading Image from \" + urlStr);
final String url = urlStr;

new Thread() {
public void run() {
InputStream in = null;

Message msg = Message.obtain();
msg.what = 1;

try {
in = openHttpConnection(url);
bitmap = BitmapFactory.decodeStream(in);
Bundle b = new Bundle();
b.putParcelable(\"bitmap\", bitmap);
msg.setData(b);
in.close();
}catch (IOException e1) {
e1.printStackTrace();
}
messageHandler.sendMessage(msg);
}
}.start();
}

private InputStream openHttpConnection(String urlStr) {
InputStream in = null;
int resCode = -1;

try {
URL url = new URL(urlStr);
URLConnection urlConn = url.openConnection();

if (!(urlConn instanceof HttpURLConnection)) {
throw new IOException(\"URL is not an Http URL\");
}

HttpURLConnection httpConn = (HttpURLConnection) urlConn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod(\"GET\");
httpConn.connect();
resCode = httpConn.getResponseCode();

if (resCode == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
}catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return in;
}

private Handler messageHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
ImageView img = (ImageView) findViewById(R.id.imageView);
img.setImageBitmap((Bitmap) (msg.getData().getParcelable(\"bitmap\")));
progressDialog.dismiss();
}
};

private boolean checkInternetConenction() {
// get Connectivity Manager object to check connection
ConnectivityManager connec
=(ConnectivityManager)getSystemService(getBaseContext().CONNECTIVITY_SERVICE);

// Check for network connections
if ( connec.getNetworkInfo(0).getState() ==
android.net.NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() ==
android.net.NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() ==
android.net.NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
Toast.makeText(this, \" Connected \", Toast.LENGTH_LONG).show();
return true;
}else if (
connec.getNetworkInfo(0).getState() ==
android.net.NetworkInfo.State.DISCONNECTED ||
connec.getNetworkInfo(1).getState() ==
android.net.NetworkInfo.State.DISCONNECTED ) {
Toast.makeText(this, \" Not Connected \", Toast.LENGTH_LONG).show();
return false;
}
return false;
}

}