آرشیو آبان ماه 1401

بهترین و اولین مرجع رسمی مقالات طراحی اپلیکیشن

دانلود SDK و کامل کردن آن:

۱۶۶ بازديد
Facebook SDK را دانلود کرده و آن را وارد eclipse نمائید. وقتی که وارد شدید ،  طراحی اپلیکیشن در مشهد روی پروژه ی چهره بوک خویش راست کلیک نمائید و روی دکمه ی add کلیک فرمائید ، facebook SDK را تحت عنوان پروژه گزینش کرده و روی OK کلیک فرمائید.
ساخت‌و‌ساز نرم افزار ورود به رخ بوک (Creating facebook login application) :
هنگامی که کلیه چیز بی نقص باشد،  رایا پارس می‌توانید مثال هایی را اعمال فرمائید که با SDK می‌آیند و یا این که خودتان اپلیکیشنی تولید نمائید.
برای ورود مایحتاج میباشد که مشی openActiveSession را فراخوانده و callback آن را جاری ساختن فرمایید.
مخلوط آن در تحت ارائه شد‌ه‌است :
// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
// callback when session changes state
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
// make request to;2 the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
TextView welcome = (TextView) findViewById(R.id.welcome);
welcome.setText("Hello " + user.getName() + "!");
}
}
});
}
}
}
اشتراک گذاری Intent :
اشتراک گذاری Intent برای اشتراک گذاری داده دربین نرم افزار ها به کار گیری می‌گردد.
در‌این استراتژی ، ما به مورد SDK نمی پردازیم بلکه به نرم‌افزار ی رخ بوک اذن میدهیم تا به آن استیناف نماید. به آسانی اپ ی صورت بوک را فرا خوانده و داده را وارد میکنیم تا به اشتراک بگذارد. از این نحوه می قدرت چیزی روی چهره بوک به اشتراک گذاشت.
اندروید کتابخانه ی Intent ارائه میدهد تا اطلاعات در میان اکتیویتی ها و نرم افزار ها به اشتراک گذارده شوند. برای به کارگیری از آن تحت عنوان share intent بایستی نوع share intent را برای ACTION_SEND مشخص و معلوم کنیم.
سینتکس آن در تحت ارائه گردیده‌است :
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
عمل دیگری که مایحتاج میباشد اجرا دهید ، تعریف و تمجید نوع داده برای جابجایی میباشد که می‌توانید بعد از آن داده را منتقل فرمائید.
سینتکس آن مانند ذیل میباشد.
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello, from tutorialspoint");
startActivity(Intent.createChooser(shareIntent, "Share your thoughts"));

معرفی و کار با انواع SDK های مختلف در اندروید استودیو

۱۶۲ بازديد
برای دانلود و نصب واپسین نسخه android APIs از وب و پیشرفت ی ابزار ، طراحی اپلیکیشن در مشهد اندروید به ما SDK manager را معرفی می نماید.
SDK manager در اندروید ، API ها و ابزار و پلتفرم های متفاوت را در پکیج های مختلفی (که می‌توانید دانلود فرمایید) از هم جداازهم می نماید.
SDK manager اندروید با مجموعه ی Android SDK یاور میباشد رایاپارس و شما نمی توانید آن را به صورت جداازهم دانلود نمائید.
اجرای Android SDK Manager:
بعد از دانلود می‌توانید SDK Manager را به یکی‌از شیوه های پایین اعمال فرمائید :
روی مورد ی tools->Android-> SDK Manager در Eclipse کلیک فرمائید.
روی فولدر SDK Manager.exe در پوشه Android SDK دابل کلیک نمائید.
هنگامی که نرم‌افزار ایفا شد ، کاغذ ی تحت را مشاهده میکنیم :
بعد از تعیین آیتم ی checkbox ، میتوانید تعیین فرمایید که کدام پکیج دانلود گردد و آن گاه روی install کلیک فرمایید تا پکیج ها را نصب نماید.
وقتی که SDK را دانلود کردید، پکیج های پایین در دسترس خواهند بود ، البته سه پکیج ی اولیه برای اجرای SDK ضروری خواهند بود و سایر تنها پیشنهادی می‌باشند :
پکیج های پیشنهادی SDK:
SDK Tools : یک پکیج مایحتاج برای اجرای SDK است.
SDK Platform-tools : این پکیج وقتی نصب گردد که شما آغاز SDK manager را انجام فرمائید.
SDK Platform : برای اجرای نرم افزار تان، دست‌کم یک پلتفرم می بایست در دور و بر گزینه به کارگیری ی شما نصب گردیده باشد.
System Image : دانلود تصاویر سیستم برای کل نسخه های اندروید تمرین خیر و خوبی میباشد، براین اساس می‌توانید نرم افزار خویش را با Android Emulator بوسیله آنها آزمایش نمایید.
SDK Samples : به شما یک سری کد مثال برای یادگیری و استعمال اندروید ارائه خواهد بخشید.

کار با مدیا پلیر در برنامه نویسی اندروید

۱۵۸ بازديد
اندروید راه و روش های بسیار زیادی برای استعمال طراحی اپلیکیشن در مشهد از فایل های صوتی و تصویری ایجاد کرده میباشد. یکی از این رویه ها به کارگیری از کلاس مدیا پلیر (MediaPlayer) میباشد.
اندروید کلاس مدیا پلیر (MediaPlayer) را مهیا کرده تا به سرویس های داخلی این کلاس همانند رایاپارس قرائت فایل های صوتی و تصویری و غیره دسترسی داشته باشد.به خواسته به کار گیری از مدیا پلیر باید اسلوب استاتیک ()create را در‌این کلاس به کارگیری کنیم .
در این اسلوب مثال ای از کلاس مدیا پلیر را return می نماید. ؛ جزییات در زیر آمده میباشد :
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.song);
دومین پارامتر اسم موسیقی میباشد که شما قصد انجام کردن آن را دارید .شما باید فولدر جدیدی با اسم raw ذیل پروژه خویش بسازید و داده ها فایل موزیک را در آن قرار دهید.
زمانی که آبجکت مدیا پلیر را بسازیم خواهیم توانست برخی مشی ها را برای استارت کردن (start ) و مجموع کردن (stop) موزیک ایجاد کنید. این سیاق ها در زیر لیست گردیده اند :
mediaPlayer.start();
mediaPlayer.pause();
با به کارگیری از سیاق ()start ترانه از آغاز آغاز به ایفا شدن می کند. در صورتی‌که این سیاق بعد از فراخوانی سیاق ()pause مجدد فراخوانی گردد ، موزیک از به عبارتی جایی که متوقف گردیده آغاز به پخش شدن میکند خیر از اولِ موزیک ! در‌صورتی‌که بخواهید آهنگ از آغاز استارت به پخش نماید مشی ()reset را به فعالیت بگیرید . سینتکس آن به طور تحت میباشد :
mediaPlayer.reset();
خلال اسلوب های start و pause روال های دیگری در این کلاس برای کارایی فراتر فایل های صوتی و تصویری ارئه گردیده اند. این مشی ها در زیر لیست شد‌ه‌است :
()isPlaying : این مشی درستی یا نادرستی اجرای آهنگ را معلوم می کند.
(seekTo(positon : در این اسلوب نوا به صورت integer دریافت می خواهد شد و در لحظه ای خاص از آوا ، جابجایی داده می گردد.
()getDuration : این اسلوب کل فرصت آوا را در مقیاس یک هزارم ثانیه return می نماید .
()reset : در این روال مدیا پلیر مجدد بارگذاری می‌شود .
()release : این سیاق هر منبعی را که به مدیا پلیر پیوست داده می خواهد شد را آزاد می کند.
(setVolume(float leftVolume, float rightVolume در‌این مشی مدیا پلیر به بالا و پایین بردن صدا کمک می کند.
(setDataSource(FileDescriptor fd : این سیاق منبع اطلاعاتی (data source) فایل های صوتی و تصویری را مشخص و معلوم می نماید.
(selectTrack(int index : این روال یک integer میگیرد و یکی از track های آوا را از لیست موزیک ها تعیین می کند.
نمونه :
در اینجا مثالی برای استعمال از مدیا پلیر ارائه گردیده است. یک مدیا پلیر پایه (basic media player) می سازد که دربرگیرنده فوروارد و بکوارد و play و pause می گردد.
به مراد آزمایش کردن این نمونه شما نیاز به یک دستگاه واقعی برای شنیدن صدا دارید.
از اندروید استودیو برای اجرای نرم افزار ذیل پکیج com.example.sairamkrishna.myapplication به کارگیری فرمایید .
src/MainActivity.java به مراد اضافه کردن کد های ما یحتاج تغییر‌و تحول دهید .
res/layout/activity_main به مراد اضافه کردن مولفه های XML تغییر‌و تحول دهید .
یک فایل جدید در مدیا پلیر بسازید و آن را raw اسم گذاری فرمائید و یک فایل mp3 در آن مکان قرار دهید : song.mp3
نرم افزار را انجام کنید و یک دستگاه اندرویدی اجرایی را گزینش کنید آن‌گاه نرم افزار را در آن نصب کنید و نتیجه را گشوده بینی کنید

چگونه ظاهر نقشه را تغییر بدهید

۱۶۱ بازديد
می اقتدار از بخش اعظمی جهات نقشه های گوگل را فردی سازی کرد و به نقشه ظواهر و جلوه ی بی نظیری اعطا کرد.
میتوانید یک شی MapFragment را با استعمال از خصوصیت های مو جود XML سفارشی فرمائید ، همان گونه که هر fragment دیگری را سفارشی می‌کنید. با این هم اکنون ، درین مرحله ، شما با به کار گیری از سیاق های مو جود در شی GoogleMap ، ظواهر و محتوای MapFragment را سفارشی میکنید.
برای ساخت و ساز یک ظواهر سفارشی برای نقشه خویش ، طراحی اپلیکیشن در مشهد بایستی یک پوشه JSON ساخت فرمایید که طرز اکران خصوصیت های نقشه را مشخص و معلوم می نماید. نیازی وجود ندارد که‌این فولدر JSON را به طور دستی ساخت‌و‌ساز فرمایید. Google با به کار گیری از Google Platform Styling Wizard این قابلیت و امکان را برای شما آماده نموده است که به طور بصری ظواهر نقشه خویش را مشخص و معلوم نمائید، این اپلیکیشن با دقت به گزینش های شما ، به طور خود رایاپارس کار پوشه JSON را برای شما ایجاد می نماید. در اینجا، شما نقشه را با یک تمِ کلاسیک پیاده سازی می‌کنید ، به‌این معنا که نقشه از رنگ های سابق استعمال می نماید و شما جاده های رنگی اضافه میکنید.
اعتنا: تغییر و تحول ظواهر صرفا برای نقشه هایی اجرا می‌شود که از نوع نقشه ساده به کارگیری می نمایند.
مرحله نخستین: یک style برای نقشه خویش تولید نمایید
با به کار گیری از مرورگر خویش به وبسایت https://mapstyle.withgoogle.com رجوع نمایید.
مورد «Create a Style» را تعیین نمایید.
مورد «Retro» را تعیین نمایید. مانند تصویر ذیل:
4. روی «More Options» کلیک نمایید.
5. آیتم «Road > Fill» را گزینش نمائید:
6. رنگ جاده ها به رنگ دلخواه تان تغییر‌و تحول دهید. مانند صورتی در تصویر پایین:
7. روی Finish کلیک فرمائید.
8. کد JSON را از این پنجره نسخه برداری کرده و در شکل رغبت ، آن را در یک پوشه متنی بی آلایش قرار دهید تا در مرحله آجل به کار گیری فرمائید.

ساخت اپلیکیشن های مدرن با استفاده از معماری کامپوننت ها در اندروید

۱۶۳ بازديد
توسعه و گسترش دهندگان اندروید در طی ساختن نرم افزار های اندرویدی با معضل های رایجی مانند  طراحی اپلیکیشن در مشهد رئیس چرخه حیات حادثه ها، مرحله مراقبت و ذخیره سازی اطلاعات مواجه میشوند. این کارداران سبب مشقت بسط نرم افزار اندرویدی میگردند. به این ترتیب در‌این نوشته ی علمی ایجاد کرد نرم افزار های امروزی با استعمال از معماری کامپوننت ها در اندروید را پژوهش خوا‌هیم کرد.
بسط دهندگان اندروید در طی ساختن نرم افزار های اندرویدی با معضل های رایجی مانند مدیر چرخه حیات حادثه ها، مرحله مراقبت و ذخیره سازی اطلاعات مواجه میگردند. این دست اندرکاران سبب ساز  رایاپارس مشقت توسعه و گسترش نرم افزار اندرویدی می گردند. ضمن این ها اعضای یک مجموعه اندروید هیچگاه بینش های خویش را در خصوص اینکه از کدام معماری به کار گیری کنیم مطرح نمی‌کنند. آنان مدام توصیه میکنند که از معماری ای مصرف شود که شایسته ترین سازش رو با نرم افزار داراست، که در بیشتر مواقع این سفارش منجر گنگی بیشتر میگردد تا پر‌نور خیس کردن مسئله.
خوشبختانه گروه اندروید، معماری کامپوننت ها را یاور با راهبرد ها و ارشاد ها برای حل خطاها رایج در زمان ایجاد کرد نرم افزار اندرویدی دراختیار پیشرفت دهندگان نهاده میباشد.
معماری کامپوننت ها چیست؟
باتوجه به گفته های دسته پیشرفت دهنده این معماری، "معماری کامپوننت ها یک دسته تازه از کتابخانه هایی میباشد که امداد میکنند تا شما یک نرم افزار حاذق که امکان آزمایش و حفظ داراست را پیاده سازی نمایید. آن ها با کلاس هایی که وظیفه مدیر چرخه حیات اجزای رابط کاربری شما ومدیریت ماندگاری اطلاعات را بر عهده دارا هستند آغاز کردند."

آموزش ساخت اسلایدر با image switcher در اندروید

۱۵۶ بازديد
از ImageSwitcher برای تشکیل داد slider در نرم افزار به کار گیری می‌گردد. طراحی اپلیکیشن در مشهد به طو نمونه در صورتی شما بخواهید یکسری تا عکس را به طور اسلاید نشانه دهید می بایست از ImageSwitcher به کارگیری نمائید؛
بعضی وقتها نمی‌خواهید که تصویری به صورت ناگهانی روی شیت ظواهر گردد، رایاپارس بلکه ترجیح می دهید به گذر زمان و به طور پخش اسلایدی ، تصاویر را به فعالیت بگیرید. این فعالیت در اندروید به وسیله ImageSwitcher دفاع می‌گردد.
سویچر تصویر به شما اذن میدهد تا روی طرز ی ظواهر شدن تصاویر در برگه ، تغییراتی اجرا نمایید. برای استعمال از سویچر تصویر (image switcher) ، آغاز می بایست مولفه xml آن را تمجید نمائید که سینتکس آن را در پایین مشاهده میکنید :
android:id="@+id/imageSwitcher1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
اینک ما در پوشه جاوا یک مثال ImageSwithcer ساخت نموده و یک reference از مولفه ی XML آن به دست می‌آوریم. سینتکس آن را در پایین مشاهده میکنید :
private ImageSwitcher imageSwitcher;
imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);
شغل دیگری که جاری ساختن می دهید اجرای اینترفیس ViewFactory و اجرای سیاق انجام نشده ای میباشد که یک imageView را گزارش می‌دهد.
سینتکس آن مانند تحت میباشد :
imageSwitcher.setImageResource(R.drawable.ic_launcher);
imageSwitcher.setFactory(new ViewFactory() {
public View makeView() {
ImageView myView = new ImageView(getApplicationContext());
return myView;
}
}
و در پایان موردنیاز میباشد که Animation را به ImageSwithcer اضافه نمایید. می بایست آبجکتی از کلاس Animation را از روش کلاس AnimationUtilities و با فراخوانی روال استاتیک loadAnimation تمجید فرمائید،
که سینتکس آن را در ذیل مشاهده میکنید :
Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);
مشی setInAnimaton روش ظاهرشدن آبجکت برنامه خردسالان روی ورقه را تهیه می نماید، در حالی که setOutAnimation شغل عکس آن را ایفا میدهد. مشی ()loadAnimation یک آبجکت برنامه کودکان ساخت و ساز می نماید.
خلال این روال ها، مشی های کاربردی دیگری نیز در ImageSwitcher وجود دارا هستند که در لیست پایین مشاهده می‌کنید:
(setImageDrawable(Drawable drawable : یک تصویر را با سوییچر تصویر (image switcher) تهیه و تنظیم می نماید. تصویر به هیبت bitmap انتقال می یابد.
(setImageResource(int resid : یک تصویر را با سویچر تصویر (image switcher) تهیه می نماید. تصویر به هیبت یک id عددی انتقال میابد.
(setImageURI(Uri uri : یک تصویر را با سویچر تصویر (image switcher) تهیه و تنظیم می نماید. تصویر به هیبت URI منتقل میشود.
(ImageSwitcher(Context context, AttributeSet attrs : یک آبجکت image switcher را با تهیه و تنظیم چندین خصوصیت مصوب در سیاق ، گشوده می گرداند (Return می نماید) .
(onInitializeAccessibilityEvent (AccessibilityEvent event : یک AccessibilityEvent را با اطلاعاتی در ارتباط این ویو که منبع اتفاق افتاد (event source) میباشد، مقدار دهی نخستین می نماید.
(onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info : یک AccessibilityNodeInfo را با اطلاعاتی راجع به این ویو مقدار دهی اول می نماید.

معرفی حسگر های اندروید : حرکتی - محیطی - موقعیت یاب

۱۵۸ بازديد
بخش اعظمی از دستگاه های اندروید حسگر (سنسور) های داخلی دارا هستند طراحی اپلیکیشن در مشهد که حرکت ، جهت و اکثری از موقعیت محیطی دیگر را متوجه گردیده و می سنجند. نواع احساس گرها:
حسگر های حرکتی
حسگر های محیطی
حسگر های شرایط
بعضی حسگر ها مشقت بار افزاری (سخت افزار based) و برخی رایاپارس دیگر قابل انعطاف افزاری (software based ) می‌باشند. حسگر (سنسور) هر چه باشد ، اندروید به ما اذن می‌دهد تا اطلاعات را از این حسگر ها به دست آوریم و از آن در نرم افزار خویش به کارگیری کنیم. برای این مراد اندروید به ما کلاس هایی را ارائه می‌دهد :
اندروید کلاس SensorManager و Sensor را برای به کار گیری در نرم افزار ارائه میدهد.
برای به کارگیری حسگر ها اولی کاری که بایستی جاری ساختن دهید این میباشد که یک آبجکت از کلاس SensorManager را تحت عنوان مثال قرار دهید، که از روش سینتکس پایین به دست میاید.
SensorManager sMgr;
sMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
مبادرت آینده ، قرار دادن یک آبجکت از کلاس حسگر ها با فراخوانی روال ()DefaultSensor از کلاس SensorManager میباشد.
سینتکس آن در تحت ارائه گردیده‌است :
Sensor light;
light = sMgr.getDefaultSensor(Sensor.TYPE_LIGHT);
وقتی که حسگر شناسایی شد، مایحتاج میباشد مستمع ی آن را رجیستر کرده و دو مشی AccuracyChanged و onSensorChanged را وارد نمائید.
سینتکس آن مانند ذیل میباشد :
sMgr.registerListener(this, light,SensorManager.SENSOR_DELAY_NORMAL);
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
}
لیست حسگرهای مدد گردیده :
شما می‌توانید لیستی از حسگر هایی داشته باشد که با فراخوانی سیاق getSensorList ، بوسیله دستگاه نگهبانی می‌شوند .
لیست حسگرها مشمول اطلاعاتی از قبیل اسم و شماره ی نسخه و غیره است . سینتکس آن در پایین ارائه گردیده‌است :
sMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
List list = sMgr.getSensorList(Sensor.TYPE_ALL);
for(Sensor sensor: list){
}

پایگاه داده – کلاس Helper

۱۶۱ بازديد
برای سازماندهی همگی ی عملیات مرتبط با مقر داده، طراحی اپلیکیشن در مشهد یک کلاس Helper به اسم SQLiteOpenHelper ارائه گردیده‌است. این کلاس به صورت خود کار ساخت‌و‌ساز و به روزرسانی مقر داده را سازماندهی می نماید. سینتکس آن به صورت پایین است :
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(){
super(context,DATABASE_NAME,null,1);
}
public void onCreate(SQLiteDatabase db) {}
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {}
}
نمونه
در اینجا مثالی را میبینید که به کارگیری از مقر داده ی SQLite را توضیح می‌دهد. رایاپارس این نمونه یک نرم افزار شالوده برای تماس ساخت و ساز می نماید که قابلیت و امکان افزودن گزینه ، حذف آیتم و یا این که تغییر‌و تحول صورت تماس ها را مهیا می نماید.
برای تست این نمونه بایستی آن را روی دستگاهی ایفا نمایید که در آن دوربین حفاظت می‌شود.
برای ساخت یک نرم افزار اندروید از اندروید استدیو پایین پکیج com.example.sairamkrishna.myapplication به کار گیری نمایید .
پوشه src/MainActivity.java را برای تصاحب کردن مرجع همگی ی مولفه های XML تغییر تحول دهید و تماس ها در لیست ویو قرار دهید.
یک src/DBHelper.java نو ساخت فرمائید که عمل مقر داده را مدیر خواهد کرد.
یک اکتیویتی تازه با اسم DisplayContact.java ساخت‌و‌ساز نمایید که تماس را روی شیت اکران خواهد بخشید.
res/layout/activity_main را برای اضافه کردن کامپوننت های XML مربوطه تغییر و تحول دهید.
res/layout/activity_display_contact.xml را برای اضافه کردن مولفه های XML مربوطه تغییر تحول دهید.
res/values/string.xml را برای اضافه کردن مولفه های string ما یحتاج تغییر تحول دهید.
res/menu/display_contact.xml را برای اضافه کردن مولفه های menu ما یحتاج تغییر و تحول دهید.
یک منوی تازه با تیتر res/menu/mainmenu.xml برای اضافه کردن آیتم insert contact تولید نمایید.
نرم افزار را ایفا نمائید و یک دستگاه اجرایی اندروید تعیین کرده و نرم افزار را روی آن نصب نمائید و حاصل را نظارت فرمایید.
محتوای فولدر MainActivity.java :
package com.example.sairamkrishna.myapplication;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.Operating System.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends ActionBarActivity {
public final static String EXTRA_MESSAGE = "MESSAGE";
private ListView obj;
DBHelper mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mydb = new DBHelper(this);
ArrayList array_list = mydb.getAllCotacts();
ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);
obj = (ListView)findViewById(R.id.listView1);
obj.setAdapter(arrayAdapter);
obj.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
int id_To_Search = arg2 + 1;
Bundle dataBundle = new Bundle();
dataBundle.putInt("id", id_To_Search);
Intent intent = new Intent(getApplicationContext(),DisplayContact.class);
intent.putExtras(dataBundle);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
super.onOptionsItemSelected(item);
switch(item.getItemId()) {
case R.id.item1:Bundle dataBundle = new Bundle();
dataBundle.putInt("id", 0);
Intent intent = new Intent(getApplicationContext(),DisplayContact.class);
intent.putExtras(dataBundle);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public boolean onKeyDown(int keycode, KeyEvent event) {
if (keycode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
}
return super.onKeyDown(keycode, event);
}
}
محتوای فولدر DisplayContact.java :
package com.example.sairamkrishna.myapplication;
import android.سیستم عامل.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class DisplayContact extends Activity {
int from_Where_I_Am_Coming = 0;
private DBHelper mydb ;
TextView name ;
TextView phone;
TextView email;
TextView street;
TextView place;
int id_To_Update = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_contact);
name = (TextView) findViewById(R.id.editTextName);
phone = (TextView) findViewById(R.id.editTextPhone);
email = (TextView) findViewById(R.id.editTextStreet);
street = (TextView) findViewById(R.id.editTextEmail);
place = (TextView) findViewById(R.id.editTextCity);
mydb = new DBHelper(this);
Bundle extras = getIntent().getExtras();
if(extras !=null) {
int Value = extras.getInt("id");
if(Value>0){
//means this is the view part not the add contact part.
Cursor rs = mydb.getData(Value);
id_To_Update = Value;
rs.moveToFirst();
String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));
String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE));
String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));
String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));
String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));
if (!rs.isClosed()) {
rs.close();
}
Button b = (Button)findViewById(R.id.button1);
b.setVisibility(View.INVISIBLE);
name.setText((CharSequence)nam);
name.setFocusable(false);
name.setClickable(false);
phone.setText((CharSequence)phon);
phone.setFocusable(false);
phone.setClickable(false);
email.setText((CharSequence)emai);
email.setFocusable(false);
email.setClickable(false);
street.setText((CharSequence)stree);
street.setFocusable(false);
street.setClickable(false);
place.setText((CharSequence)plac);
place.setFocusable(false);
place.setClickable(false);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
Bundle extras = getIntent().getExtras();
if(extras !=null) {
int Value = extras.getInt("id");
if(Value>0){
getMenuInflater().inflate(R.menu.display_contact, menu);
} else{
getMenuInflater().inflate(R.menu.menu_main menu);
}
}
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId()) {
case R.id.Edit_Contact:
Button b = (Button)findViewById(R.id.button1);
b.setVisibility(View.VISIBLE);
name.setEnabled(true);
name.setFocusableInTouchMode(true);
name.setClickable(true);
phone.setEnabled(true);
phone.setFocusableInTouchMode(true);
phone.setClickable(true);
email.setEnabled(true);
email.setFocusableInTouchMode(true);
email.setClickable(true);
street.setEnabled(true);
street.setFocusableInTouchMode(true);
street.setClickable(true);
place.setEnabled(true);
place.setFocusableInTouchMode(true);
place.setClickable(true);
return true;
case R.id.Delete_Contact:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.deleteContact)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mydb.deleteContact(id_To_Update);
Toast.makeText(getApplicationContext(), "Deleted Successfully",
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
startActivity(intent);
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
AlertDialog d = builder.create();
d.setTitle("Are you sure");
d.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void run(View view) {
Bundle extras = getIntent().getExtras();
if(extras !=null) {
int Value = extras.getInt("id");
if(Value>0){
if(mydb.updateContact(id_To_Update,name.getText().toString(),
phone.getText().toString(), email.getText().toString(),
street.getText().toString(), place.getText().toString())){
Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
startActivity(intent);
} else{
Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();
}
} else{
if(mydb.insertContact(name.getText().toString(), phone.getText().toString(),
email.getText().toString(), street.getText().toString(),
place.getText().toString())){
Toast.makeText(getApplicationContext(), "done",
Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(getApplicationContext(), "not done",
Toast.LENGTH_SHORT).show();
}
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
startActivity(intent);
}
}
}
}

Bottom Sheet در اندروید

۱۶۰ بازديد
دیالوگ های Bottom Sheet آغازگر بعد از ظهر جدیدی از اکران دیالوگ ها و منوها در اندروید میباشد.
Bottom Sheet چیست؟
bottom sheet یک الگوی رابط کاربری و یا این که یک کامپوننت میباشد طراحی اپلیکیشن در مشهد  که برای اکران یک View ی قابل بستن (رد کردن) در تحت برگه به کارگیری می‌گردد. این View ی قابل بستن معمولاً مشتمل بر گروه ای از مورد ها میباشد. در پروسه کنونی ، اکثر نرم افزار ها از این سرمشق برای بی آلایش کردن عملیات ها به کار گیری می نمایند. این سر مشق برای نخسین بار در IOS مشاهده شد. به گویش بی آلایش ، این سرمشق چیزی وجود ندارد جز پنجره ای که زیر شیت قراردارد و هنگام نیاز با کارتون ظواهر گردد.
در توضیحات قانونی پیاده سازی «Material Design» بیان شده: «Bottom Sheet سطحی میباشد رایاپارس متصل به تحت شیت و دربردارنده محتوای تکمیلی.»
چرا به Bottom Sheet نیاز داریم؟
به مکان دیالوگ ها و منوها ی کهن ، Bottom Sheet یک راهکار انعطاف پذیر، در دسترس استفاده کننده و متحرک برای اکران داده ها یا این که انتخابی سهل وآسان از لیست آیتم ها ارائه میدهد. زیرا این پنجره ها مدام تحت برگه قرار دارا‌هستند، برای استعمال به راحتی در دسترس میباشند. این ایام چاره مشترک اکثری از نرم افزار ها برای حل خلل اکران تعداد متعددی آیتم معمولاً Bottom Sheet بوده میباشد.

چگونه می توانم تاریخ و زمان را در Room ذخیره کنم؟

۱۶۵ بازديد
Room از مبدل های نوع مدد می نماید.
نوع داده در کلاس را از نوع Date مشخص و معلوم فرمائید:
@ColumnInfo
Date timestamp;
آن گاه می‌توانید یک کلاس DataConverter شبیه کلاس رایاپارس تحت تمجید فرمایید:
// Mohamadreza Amani
// Email: help4usr@gmail.com
public class DateConverter {
@TypeConverter
public static Date toDate(Long timestamp) {
return timestamp == null ? null : new Date(timestamp);
}
@TypeConverter
public static Long toTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}
این کلاس نوع های Date و Long را به هم تبدیل می نماید.  طراحی اپلیکیشن در مشهد Room با یاری این کلاس نوع داده Long را در دیتابیس ذخیره می نماید اما در کلاس شما نوع داده Date را به شما ارائه می‌دهد.
تفاوت ROOM با بقیه کتابخانه های ORM چیست؟
ORM مخفف Object Relational Mapping میباشد و به کتابخانه هایی گفته می گردد که دیتابیس را به طور شی هایی درون کد نرم افزار در دسترس قرار میدهند. یکسری جنبه اصلی در Room وجود داراست که با طرز سنتی مصرف شده در کتابخانه های تبدیل جداول دیتابیس به اشیاء (کتابخانه های ORM) متفاوتند:
معمولاً کتابخانه های ORM ذیل گروه ای از دستورها SQL را مهیا می نمایند. جداول به طور اشیای جاوا تمجید می‌شوند و ارتباط فی مابین این جداول مشخص و معلوم می نمایند که چه نوع دستوراتی از SQL را می اقتدار به کار گرفت. در Room امرها SQL برای وارد کردن اطلاعات ، آپ دیت رسانی اطلاعات ، حذف کردن اطلاعات و اتصالات (join) بغرنج میان جداول به طور اشیای منحصربه‌فرد دسترسی به اطلاعات (DAO) تعریف و تمجید میگردند. DAO مخفف عبارت Data Access Object میباشد. داده هایی که از این کوئری ها بدست می‌آید به شی های جاوا تبدیل می‌شوند و باطن یاد قرار میگیرند تا دسترسی به آنان شل خیس باشد. بنابراین ، هیچ ذهنی درباره ی کیفیت دسترسی به اطلاعات نیست و تعاریف جداول جداگانه از کوئری های حقیقی و واقعی اعمال میشود.
ORM ها معمولاً ارتباط های « یک به یک » و « یک به یکسری » درون دیتابیس را به طور ارتباط در میان جداول رئیس می نمایند و Interface ها یا این که دسته ای از رابط ها آماده می نمایند که در پشت صحنه کوئری های SQL را انجام می نمایند. به جهت تهیه کردن عملکرد بیشتر Room برخلاف این نحوه تعریف‌و‌تمجید مصرح این پیوندها را اجباری نموده است. پس در Room کوئری بایستی به طور اشیای DAO تمجید گردد و داده هایی که از این DAO ها بدست می‌آید بایستی به صورت مصرح به اشیای مطلوب جاوا تبدیل شوند.
یک تفاوت دیگر این میباشد که Room نیازی به تعریف‌و‌تمجید جداول SQL شما تحت عنوان یک شی منفرد جاوا ندارد و با اذن دادن به تعریف‌و‌تمجید بقیه شی ءها Java جاوا تحت عنوان جزئی از یک جدول قابلیت و امکان محافظت کپسوله سازی شی ءها (قرار دادن هر شی با آحاد اجزای آن باطن یک کلاس) را مهیا می نماید. دستورها ابتدایی ساخت و ساز، تلاوت، آپ تو دیت رسانی و حذف اطلاعات (CRUD) می بایست باطن شی اختصاصی به دسترسی به اطلاعات (DAO) قرار گیرد. یک تفاوت عمده در‌این میباشد که نمی اقتدار پرس و جوها را در Thread اساسی ایفا اعطا کرد. ضمن این ، می اقتدار شی ها را با AsyncTask یا این که با به کارگیری از طریق runInTransaction وارد کرد.