میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

دسترسی به محتوای static و استفاده از آن در اندروید استودیو

دسترسی به فایل های محتوا ( resources ) از طریق کلاس Resources

کلاس Resources به شما اجازه می دهد به منابع و محتوای اپلیکیشن خود به صورت مجزا و فردی دسترسی داشته باشید. می توانید با فراخوانی متد () getResources از کلاس Context به راحتی به نمونه ی کلاس Resources دسترسی داشته باشید. از آنجایی که کلاس های activity و service همگی از ( propertyها و متدهای کلاس) Context ارث بری دارند، شما می توانید این متد را مستقیما در پیاده سازی های این کامپوننت ها بکار ببرید.

سایر کلاس های framework اندروید نیز به نمونه ای از کلاس Resources احتیاج دارند. برای مثال، کد زیر برای شما نمایش می دهد چگونه یک فایل Bitmapاز IDاشاره گر ایجاد نمایید.

 

BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search);



دسترسی به view ها از layout در کلاس activity

طبیعتا برای تنظیم ظاهر viewها، شما لازم دارید که در کد activity و fragment به آن ها دسترسی داشته و propertyهای آن ها را ویرایش نمایید.
جهت دسترسی به view مورد نظر از layout جاری، کافی است متد findViewById(id را فراخوانی نمایید. پارامتر ورودی id در واقع اشاره به خصیصه ی ID از viewمورد نظر در فایل layout دارد.
کد زیر کاربرد این متد را به نمایش می گذارد.

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.mytext);
// TODO do something with the TextView
}

همچنین این امکان وجود دارد که به وسیله ی متد ) ،findViewById(id در یک view hierarchy ه  ( viewهای تودرتو در فایل layout ) به آسانی view مد نظر را پیدا کرده و به آن دسترسی داشت.
همچنین می توانید یک متد کمکی ( utility method ) تعریف کنید و به وسیله ی آن آسان تر به view دلخواه دسترسی داشته باشید.
با این روش شما می توانید بدون طی کردن پروسه ی تبدیل ( cast ) صریح، آسان تر و سریع تر به view مورد نظر دسترسی داشته باشید.

 

 

package com.example.android.test;
import android.app.Activity;
import android.view.View;
public class UiUtils {
public static <T extends View> T findView(View root, int id) {
return (T) root.findViewById(id); }
public static <T extends View> T findView(Activity activity, int id) {
return (T) activity.getWindow().getDecorView().getRootView().findViewById(id); }
}
// search in the layout of the activity
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayout);
// afterwards search in linearLayout for another view
TextView textView = (TextView) linearLayout.findViewById(R.id.mytext);
// note, you could have directly searched for R.id.mytext, the above coding
// is just for demonstration purposes
 
<table class="NormalTable"><td width="200">package com.example.android.test;
import android.app.Activity;
import android.view.View;
public class UiUtils {
public static <T extends View> T findView(View root, int id) {
return (T) root.findViewById(id); }
public static <T extends View> T findView(Activity activity, int id) {
return (T) activity.getWindow().getDecorView().getRootView().findViewById(id); }
}  
Button button = UiUtils.findView(this, R.id.button);

دسترسی به محتوای مورد نظر در فایل های XML از دیگر فایل های resource

در فایل های XML خود، برای مثال فایل های layout اپلیکیشن، می توانید به سایر resourceها اشاره کرده و در واقع از داخل فایل مورد نظر به آن ها دسترسی داشته باشید. این کار از طریق درج علامت @ صورت می پذیرد.

برای مثال، جهت دسترسی به مقدار color که در یک فایل resource file)  XML ) تعریف شده، کافی است این ساختار نگارشی را بکار ببرید:

@color/your_id

همچنین ممکن است قبلا یک String با ID یا شناسه ی  ” titlepage ” در فایل XML تعریف کرده باشید و اکنون می خواهید به آن دسترسی داشته باشید. می توانید با دستور

@string/titlepage

به راحتی به آن متغیر دسترسی داشته باشید.

به منظور دسترسی به محتوایی که خود سیستم اندروید ارائه می دهد ( system resource ) لازم است namespace یا پوشه ی android را در اشاره گرها ( idهایی که برای دسترسی به آن منبع مورد استفاده قرار می دهید) لحاظ نمایید

مثال android.R.string.cancel

 


استفاده از پوشه ی assets و دسترسی به داده های ذخیره شده در آن

در سیستم اندروید، پوشه ای به نام res تعریف شده که دربردارنده ی مقادیر ساخت یافته و سازماندهی شده ( با semantics و معانی از پیش تعریف شده) ویژه ی محیط کاری اندروید است. هر نوع داده ای را می توان در این پوشه ذخیره کرد. شما می توانید به فایل های ذخیره شده در پوشه، بر اساس محل قرارگیری آن فایل دسترسی داشته باشید. داخل این پوشه ی assets همچنین می توانید زیرپوشه داشته باشید. برای نگهداری داده هایی که با ساختار مشخصی سازمان دهی و ذخیره نشده اند ( unstructured data ) می توانید از پوشه ی /res/raw استفاده نمایید. هر چند بهتر است این نوع اطلاعات را نیز در همان پوشه ی assets ذخیره نمایید (منابعی که در پوشه ی res ذخیره می شود برای کاربر قابل دسترسی هستند.)

می توانید با فراخوانی متد () getAssets که نمونه ای از کلاس AssetManager را برمی گرداند، به فایل های خام ذخیره شده در پوشه ی /res/raw دسترسی داشته باشید. این متد از کلاس انتزاعی Context برگرفته شده است.

در زیر یک آبجکت از کلاس AssetsManager ایجاد می کنید که این کلاس اجازه ی دسترسی به فایل های خام مستقر در پوشه ی assets را می دهد. اسم این آبجکت را manager انتخاب می کنید. سپس با فراخوانی متد () getAssets نمونه ای از کلاس AssetsManager را برمی گردانید. از کلاس InputStream یک آبجکت به نام open ایجاد می کنید. سپس متد () open را بر روی آبجکت ایجاد شده از کلاس InputStream فراخوانی می کنید و اسم فایل مورد نظر را به عنوان پارامتر ورودی به متد () open پاس می دهید. این متد فایل را می خواند و در آبجکت open از کلاس InputStream می ریزد.

 

// get the AssetManager
AssetManager manager = getAssets();
// read the "logo.png" bitmap from the assets folder
InputStream open = null;
try {
open = manager.open("logo.png");
Bitmap bitmap = BitmapFactory.decodeStream(open);
// assign the bitmap to an ImageView in this layout
ImageView view = (ImageView) findViewById(R.id.imageView1);
view.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (open != null) {
try {
open.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

 


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

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

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

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟