برترین های انجمن

  1. Farzad Sarseifi

    Farzad Sarseifi

    مدیریت انجمن


    • امتیاز: پسندیدن (Likes)

      315

    • تعداد ارسال ها

      2,085


  2. a.khosroabadi

    a.khosroabadi

    مدیر انجمن


    • امتیاز: پسندیدن (Likes)

      88

    • تعداد ارسال ها

      195


  3. Omid Zakeri

    Omid Zakeri

    مدیر انجمن


    • امتیاز: پسندیدن (Likes)

      65

    • تعداد ارسال ها

      107


  4. جواد زبیدی زاده

    جواد زبیدی زاده

    مدیر انجمن


    • امتیاز: پسندیدن (Likes)

      49

    • تعداد ارسال ها

      121



Popular Content

Showing most liked content since ۱۳/۰۳/۱۲ in all areas

  1. 8 likes

    نگارش 1.0.0

    867 دانلود

    سورس اندروید استودیو فروشگاه اینترنتی + وب سایت + وبسرویس زبان ها جاوا + php

    رایگان

  2. 6 likes

    نگارش 1.0.0

    179 دانلود

    سورس اپلیکیشن whatsApp یک اپلیکیشن چت و سورس باز که بصورت رایگان در اختیار کاربران انجمن اندروید ایران قرار گرفته است. دانلود سورس اپلیکیشن واتزاپ Whatschat- Whatsapp clone نسخه 1.0 Real time chat functionality Whatsapp feel Add Friends User Profile and Status User online and offline system Create Group and add friends to group Chat in group Chat with friends Login and Registration System

    رایگان

  3. 4 likes
    آره والا دست این گوگل درد نکنه که همه جوره راحتمون کرده
  4. 3 likes
    با سلام در این تاپیک با نحویه کد و دیکد کردن اطلاعات بین اندروید وسرور آشنا میشوید و میتوانید اطلاعات رو به صورت امن بین کلاینت و سرور رد و بدل کنید. اول این کلاس php را به سرور اضافه کنید <?php class MCrypt { private $iv = 'fedcba9876543210'; #Same as in JAVA private $key = '0123456789abcdef'; #Same as in JAVA function __construct() { } function encrypt($str) { //$key = $this->hex2bin($key); $iv = $this->iv; $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv); mcrypt_generic_init($td, $this->key, $iv); $encrypted = mcrypt_generic($td, $str); mcrypt_generic_deinit($td); mcrypt_module_close($td); return bin2hex($encrypted); } function decrypt($code) { //$key = $this->hex2bin($key); $code = $this->hex2bin($code); $iv = $this->iv; $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv); mcrypt_generic_init($td, $this->key, $iv); $decrypted = mdecrypt_generic($td, $code); mcrypt_generic_deinit($td); mcrypt_module_close($td); return utf8_encode(trim($decrypted)); } protected function hex2bin($hexdata) { $bindata = ''; for ($i = 0; $i < strlen($hexdata); $i += 2) { $bindata .= chr(hexdec(substr($hexdata, $i, 2))); } return $bindata; } } و بعد از اون این کلاس جاوا رو به پروژه خودتون اضافه کنید import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class MCrypt { private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!) private IvParameterSpec ivspec; private SecretKeySpec keyspec; private Cipher cipher; private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!) public MCrypt() { ivspec = new IvParameterSpec(iv.getBytes()); keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES"); try { cipher = Cipher.getInstance("AES/CBC/NoPadding"); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public byte[] encrypt(String text) throws Exception { if(text == null || text.length() == 0) throw new Exception("Empty string"); byte[] encrypted = null; try { cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); encrypted = cipher.doFinal(padString(text).getBytes()); } catch (Exception e) { throw new Exception("[encrypt] " + e.getMessage()); } return encrypted; } public byte[] decrypt(String code) throws Exception { if(code == null || code.length() == 0) throw new Exception("Empty string"); byte[] decrypted = null; try { cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); decrypted = cipher.doFinal(hexToBytes(code)); } catch (Exception e) { throw new Exception("[decrypt] " + e.getMessage()); } return decrypted; } public static String bytesToHex(byte[] data) { if (data==null) { return null; } int len = data.length; String str = ""; for (int i=0; i<len; i++) { if ((data[i]&0xFF)<16) str = str + "0" + java.lang.Integer.toHexString(data[i]&0xFF); else str = str + java.lang.Integer.toHexString(data[i]&0xFF); } return str; } public static byte[] hexToBytes(String str) { if (str==null) { return null; } else if (str.length() < 2) { return null; } else { int len = str.length() / 2; byte[] buffer = new byte[len]; for (int i=0; i<len; i++) { buffer[i] = (byte) Integer.parseInt(str.substring(i*2,i*2+2),16); } return buffer; } } private static String padString(String source) { char paddingChar = ' '; int size = 16; int x = source.length() % size; int padLength = size - x; for (int i = 0; i < padLength; i++) { source += paddingChar; } return source; } } حا الا که کلاس های بالا رو به پروژه و سرور اضافه کردید نوبت میرسه به رد بدل کردن اطلاعات میشه برای وارد کردن کلاس php به فایل های php از include استفاده کنید به این صورت توجه کنید که لاس در کنار فایل ها باید باشه و گر نه باید مسیر کامل رو هم بدید include('myclass.php'); توی دو کلاس دو متغییر وجود دارند که باید در هر دو کلاس متغییر (دو متغییر در جاوا و دوتا در سمت سرور ) شبیه به هم باشند و گر نه شناسای مقادیر کد شده مشکل و عملا دیکد نمیشوند این متغییر ها قدرت کد شدن داده رو افزایش می دهند متغییر ها در جاوا private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!) private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!) متغییر ها در سمت php private $iv = 'fedcba9876543210'; #Same as in JAVA private $key = '0123456789abcdef'; #Same as in JAVA خب کد و دیکد کردن مقدار در جاوا رو به این صورت تعریف میکنیم اول میای یک شیئ از کلاس ایجاد میکنیم mcrypt = new MCrypt(); اول کد اطلاعات رو کد میکنیم بعد مقادیر رو به صورت bytesToHex در یک متغییر قرار میدیم و بعد به وسیله encrypt مقدار رو کد میکنیم (این مقدار کد شده هستش) String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("Text to Encrypt") ); برای دیکد کردن کافیه متغیر رو به درون تابع decrypt قرار بدیم String decrypted = new String( mcrypt.decrypt( encrypted ) ); کا ما در سمت اندروید تموم شد و مقدار کد و دیکد کردیم کد های تکمیلی جاوا mcrypt = new MCrypt(); /* Encrypt */ String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("Text to Encrypt") ); /* Decrypt */ String decrypted = new String( mcrypt.decrypt( encrypted ) ); خب حالا سمت php باز میایم یک شیئ ایجاد میکنیم $mcrypt = new MCrypt(); ابتدا میایم مقدار رو کد میکنیم $encrypted = $mcrypt->encrypt("Text to encrypt"); سپس همون مقدار رو نیز دیکد میکنیم $decrypted = $mcrypt->decrypt($encrypted); کد های تکمیلی php $mcrypt = new MCrypt(); #Encrypt $encrypted = $mcrypt->encrypt("Text to encrypt"); #Decrypt $decrypted = $mcrypt->decrypt($encrypted); امید وارم آموزش مفیدی برای شما باشه من الله التوفیق
  5. 3 likes

    نگارش 1.0.0

    42 دانلود

    یکی از عواملی که باعث جلب توجه کاربران به برنامه ای می شود استفاده از انیمیشن های جذاب و چشمگیر است. استفاده از انیمیشن در اندروید به برنامه ها شکل و شمایل حرفه ای می دهد و یکی از فاکتورهای اصلی و مهم در طراحی برنامه هایی با رابط کاربری قوی و یا باصطلاح کاربر پسند (User friendly) استفاده از انیمشین در برنامه های اندرویدی است.کتابخانه Curved-Fab-Reveal یکی از کتابخانه های جذاب به صورت انیمیشن و متریال بسیار زیبا.

    رایگان

  6. 3 likes

    نگارش 1.0.0

    153 دانلود

    ایا به سورس اپلیکیشن اندرویدی نیاز دارید که بتوانید یک Music Player قوی پخش فایل های صوتی را داشته باشید،با این پروژه اندرویدی میتوانید اینکار را انجام دهید. ویژگی های این پروژه اندرویدی : پخش فایل صوتی از طریق حافظه داخلی استریم فایل ها صوتی از طریق اینترنت پخش فایل های صوتی با فرمت های MP3, AMR, AAC, PCM WAV, OGG, MP4a, 3GP

    رایگان

  7. 3 likes
    برای این حالت باید به TabLayout خودتون حالت scroll را ست کنید <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" app:tabMode="scrollable" />
  8. 3 likes
    سلام حتما از اسم موضوع تعجب کردید ! ولی باید بگم چاقوی کره خوری یه کتاب خونه هست واسه برنامه نویسی اندروید که یه قسمتی رو که حتما تا حالا خستتون کرده رو تفاوت توش ایجاد کرده FindViewById حتما این قسمت میدونید دیگه واسه تعریف ویجت هاست در کد Java حالا با این کتابخونه ما این قسمتو توش تغییر ایجاد میکنیم دیگه جا نوشتن FindViewById مینویسیم @BindView(R.id.user) EditText username; خوب حالا بریم سراغ آموزش اول این کتابخونه رو اضافه کنید به پروژتون dependencies { compile 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' } حالا سینک کنید پروژه رو و برید یه ویجت بذارید تو فایل XML بیاید تو کد جاوا و مثلا اینو بنویسید در زیر کلاس اصلیتون(توی توابع ننویسید.جایی بذارید همه جا در دسترس باشه) که کد در کل به این حالت در بیاد class ExampleActivity extends Activity { @BindView(R.id.user) EditText username; @BindView(R.id.pass) EditText password; @BindString(R.string.login_error) String loginErrorMessage; @OnClick(R.id.submit) void submit() { // TODO call server... } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields... } } توجه کنید کد ButterKnife.bind(this); فراموش نشه که بذاریدش تو تابع onCreate دوستان لینک کامل آموزش خودشم اینجاس ببخشید یکم سر سری توضیح دادم ---------------------
  9. 3 likes
    با سلام 54 مگ گذاشتین برای دانلود ولی هنگام extract کردن faild میده !!!!
  10. 3 likes
    یک کلاس ایجاد کنید برای اینکه بتوانید روی 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));
  11. 2 likes
    public void startProgress() { // do something long Runnable runnable = new Runnable() { @Override public void run() { for (int i = 0; i <= 10; i++) { final int value = i; doFakeWork(); progress.post(new Runnable() { @Override public void run() { } }); } } }; new Thread(runnable).start(); } // Simulating something timeconsuming private void doFakeWork() { SystemClock.sleep(1000);e.printStackTrace(); }
  12. 2 likes
    ما نرم افزار ساخته ایم برای دانشجو ها . امکاناتش جالبه پیشنهاد میکنم دانلود کنید اگر مشکلی داشت یا پیشنهادی داشتید با ما اطلاع بدید . با تشکر . لینک دانلود :http://iranapps.com/app/com.hsb.daneshjoo ارتباط با ما : h.myapps@gmail.com
  13. 2 likes
    سلام میتونید از این دستورات استفاده کنید: Locale locale_fa = new Locale("fa", "IR"); getResources().getConfiguration().setLocale(locale_fa); در MainActivity و در بخش onCreate...
  14. 2 likes
    سلام یه مدت پیش داشتم توی اینترنت گشت میزدم که به یک کتابخانه ای خیلی خوبی برخورد کردم که کار رو برای ارتباط با سرور بهتر از هر کتاب خانه ای راحت تر کرده اینجا آموزش این کتاب خانه رو به صورت متنی قرار خواهم داد ولی بعدا به صورت ویدئو در قالب یک پروژه کامل این کتاب خانه رو آموزش میدم. ویژگی های مهم این کتاب خانه جدا کردن متد های پست ، گت ، داشتن دانلود منیجر در خود کتاب خانه ، و هم چنین آپلود منیجر که این کتاب خونه رو از همه متمایز کرده و سرعت خوبی هم داره خب بریم سر آموزش اول مییایم به وسیله گردل کتاب خونه رو به پروژه اضافه میکنیم compile 'com.amitshekhar.android:android-networking:1.0.0' بعد به منی فیست دسترسی به اینترنت رو میدیم <uses-permission android:name="android.permission.INTERNET" /> بعد از اضافه شدن کتابخانه به پروژه و تعریف دسترسی حالا توی اکتیویتی که میخوایم عملیات ارسال و دریافت رو انجام بدیم اول میای کد زیر رو توی بخش OnCreate پروژه قرار میدیم تا کتابخانه اینشیالایز بشه AndroidNetworking.initialize(getApplicationContext()); بعد از این که کتابخانه آماده شد حالا میریم سراغ متد های ارسال و دریافت ابتدا متد GET AndroidNetworking.get("http://yourDomin.com/{pageNumber}") .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") .setTag("test") .setPriority(Priority.LOW) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); بجای yourDomin.com باید ادرس دامنه و فایل رو قرار بدید مقادیر ارسالی رو در این سه بخش قرار میدیم .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") البته این سه پارامتر قابل اضافه شدن هستند حالا متد Post AndroidNetworking.post("http://yourDomin.com/createAnUser") .addBodyParameter("firstname", "Amit") .addBodyParameter("lastname", "Shekhar") .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); شما میتوانید مقادیر رو در پارمتر addBodyParameter قرار بدید البته شما میتونید اطلاعات رو به صورت یک فایل ، ابجکت و جیسون هم بفرستید در زیل سه نوع ارسال وجود دارد User user = new User(); user.firstname = "Amit"; user.lastname = "Shekhar"; AndroidNetworking.post("http://yourDomin.com/createUser") .addBodyParameter(user) // posting java object .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("firstname", "Amit"); jsonObject.put("lastname", "Shekhar"); } catch (JSONException e) { e.printStackTrace(); } AndroidNetworking.post("hhttp://yourDomin.com/createUser") .addJSONObjectBody(jsonObject) // posting json .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); AndroidNetworking.post("http://yourDomin.com/postFile") .addFileBody(file) // posting any type of file .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); خوب مقادیر برگشتی در متد زیر به صورت یک جیسون ابجکت برگشت داده میشوند ( این متد در خود متد گت و پست هست ) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); در صورتی که جواب برگشت داده شد در onResponse به صورت جییسون ابجکت ذخیره میشود و اگر خطای رخ داد در متد onError برگشت داده میشود خب حالا اگر میخواید یک فایلی رو از ادرسی دانلود کنید میتونید از متد ذیل استفاده کنید AndroidNetworking.download(url,dirPath,fileName) .setTag("downloadTest") .setPriority(Priority.MEDIUM) .build() .setDownloadProgressListener(new DownloadProgressListener() { @Override public void onProgress(long bytesDownloaded, long totalBytes) { // do anything with progress } }) .startDownload(new DownloadListener() { @Override public void onDownloadComplete() { // do anything after completion } @Override public void onError(ANError error) { // handle error } }); url ادرس فایل dirPath ادرس محل ذخیره فایل fileName نمای که میخواید فایل بر روی دیوایس ذخیره بشه متد setDownloadProgressListener وضعیت دانلود رو برمیگردونه متد startDownload زمانی که دانلود شروع شد منتظر میشه که دانلود به پایان میرسه یا خیر که دو متد داره متد onDownloadComplete زمانی که دانلود به اتمام ریسدو فایل دانلود شد مقداریرو بر میگردونه و اگر خطای رخ داد توسط متد onError برگشت داده میشه برای آپلود میتونید از متد زیر استفاده کنید AndroidNetworking.upload(url) .addMultipartFile("image",file) .addMultipartParameter("key","value") .setTag("uploadTest") .setPriority(Priority.HIGH) .build() .setUploadProgressListener(new UploadProgressListener() { @Override public void onProgress(long bytesUploaded, long totalBytes) { // do anything with progress } }) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); فایل را به وسیله متد addMultipartFile میتوانید ارسال کنید نمایش تصویر به صورت مستقیم از اینترنت به وسیله این کتابخانه میتونید تصویری رو بدون نیزا به کتابخانه های مانند پیکاسو و گلید در ایمیج ویوی خود تابخانه نمایش بدید <com.androidnetworking.widget.ANImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center" /> imageView.setDefaultImageResId(R.drawable.default); imageView.setErrorImageResId(R.drawable.error); imageView.setImageUrl(imageUrl); گرفتن Bitmap از ادرس همراه با یکسری مقادیر AndroidNetworking.get(imageUrl) .setTag("imageRequestTag") .setPriority(Priority.MEDIUM) .setBitmapMaxHeight(100) .setBitmapMaxWidth(100) .setBitmapConfig(Bitmap.Config.ARGB_8888) .build() .getAsBitmap(new BitmapRequestListener() { @Override public void onResponse(Bitmap bitmap) { // do anything with bitmap } @Override public void onError(ANError error) { // handle error } }); خب تا اینجا متد های مهم این کتاتخانه رو گفتم البته متد های دیگری هم داره که ادرس مستقیم کتابخانه رو میزارم تا استفاده کنید https://github.com/amitshekhariitbhu/Fast-Android-Networking امید وارم که این کتابخانه و این آموزش مفید باشد
  15. 2 likes
    سلام جدیترین پست ها "ببینید هر پستی که قرار میگیره یک ایدی جدیدی میگیره میتونید بر اساس بزرگترین ایدی سورت کنید" select * from tblName order by id desc حالا اگر میخواید صفحه بندی بشه مثلا هر سری 10 تا پست رو بیاره به این صورت بزنید select * from tblName order by id desc limit 0,10 0 >> از شماره مثلا از شماره 1 10 >> تعداد 10 تا به 10 حالا بر اساس ویو ها select * from tblName order by view desc حالا اون های که دیده شدندشما باید یک فیلیدی به دیتا بیس اضافه کنید و هر وقت اون پست دیده شد عدد اون رو از 0 به یک تغییر بدید یعنی این پست دیده شده البته اگر بخواید توسط خود کاربر دیده بشه باید یک جدول دیگه ای بزنید و ایدی پست همراه با ایدی کاربر رو توی اون جدول ذخیره کنید و از join توی mysql استفاده کنید select * from tblName where post_view=1 برای سوال بعدیتون که کاقه بازار رو مثال زدید این بستگی داره به کد نویسی شما مثلا میتونید یک اداپتر بنویسید و 3 model و یا به هر نحو دیگه ای 3 اداپتر و.... بستگی داره به قدرت برنامه نویسی تمیزی نوشتن کد و رعایت خیلی از اصول های دیگه درمورد سوال اخرت هم درست متوجه نشدم ولی من بیشتر view pager هام رو کاستوم میکنم برای استفاده های بیشتر
  16. 2 likes

    نگارش 1.0.0

    8 دانلود

    کتابخانه (ShowcaseView ) برای برجسته سازی و نمایش بخش های خاص برنامه ها به کاربر با پوشش متمایز و جذاب طراحی شده است. این کتابخانه عالی است برای اشاره به نقاط مورد علاقه برای کاربران، حرکات، و یا موارد مبهم مفید است.

    رایگان

  17. 2 likes
    سلام دوستان اینجام میخوام آموزشی بدم که میتونه خیلی کاربرد داشته باشه شاید در برخی مواقعه دیده باشید که برخی از برنامه ها همراه با متن معمولی لینک قرار میدن اینجا میخوام آموزش بدم که چطور این کار رو میشه انجام داد. برای این کار ما از کتاب خانه Linkify استفاده میکنیم میتونید مستندات کاملش رو از ادرس زیر مطالعه کنید. https://developer.android.com/reference/android/text/util/Linkify.html خوب ما اول باید یک pattern ایجادکنیم کار این pattern چی هستش ما میایم متنی رو که میخوایم لینک دار کنیم رو به این pattern میدیم Pattern pattern= Pattern.compile("جواد زبیدی زاده"); خب حالا اگر ما بخوایم لینک به وسیله scheme خود برنامه خودمون باز بشه یا به وسیله هر برنامه دیگه میاد متنی رو که داخل pattern نوشتیم رو ارسال میکنه اگر بخوایم متن دلخواهی بفرستیم میاید از خاصیت TransformFilter استفاده میکنیم به مثل زیر توجه کنید مثال : اگر عنوان لینک نام و نام خانوادگی کاربر باشه(جواد زبیدی زاده) و بخوایم نام کاربری رو بفرستیم (Javadzobeidi) میایم به صورت زیر انجام میدیم Linkify.TransformFilter username = new Linkify.TransformFilter() { @Override public String transformUrl(Matcher match, String url) { return "javadzobeidi"; } }; حالا باید ویوی که متن توی اون هستش رو هم تعریف کنیم که اینجا Textview هستش TextView event_message = (TextView)itemView.findViewById(R.id.event_message); event_message.setText("جواد زبیدی زاده یک پیغامی برای شما ارسال کرده است"); خب حالا وقتش شده لینک رو ایجاد کنیم گفتیم از کلاس Linkify استفاده میکنیم Linkify.addLinks(event_message,pattern,"myScheme://?username=",null,username); توی کد بالا اگر توجه کنید من یک scheme ایجاد کردم myScheme://?username= این scheme هستش که من با اون اطلاعات رو میگیرم خب اگر تا اینجا درست انجام داده باشید لینک همراه با متن نمایش داده میشه ولی خب یک زیر خط همراه لینک به نمایش در میاد که بهش میگن Underlines برای حذف این زیر خط باید کلاس و تابع زیر رو بنویسید /** * Delete Under Line From Link in Text View Class */ public static class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String p_Url) { super(p_Url); } public void updateDrawState(TextPaint p_DrawState) { super.updateDrawState(p_DrawState); p_DrawState.setUnderlineText(false); } } /** * Delete Under Line From Link in Text View method * Enterd Text View Get text */ public static void removeUnderlines(Spannable p_Text) { URLSpan[] spans = p_Text.getSpans(0, p_Text.length(), URLSpan.class); for(URLSpan span:spans) { int start = p_Text.getSpanStart(span); int end = p_Text.getSpanEnd(span); p_Text.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); p_Text.setSpan(span, start, end, 0); } } و کد زیر رو کنار کد ایجاد لینک قرار بدید // Make sure the TextView was instantiated correctly if(event_message != null) { removeUnderlines((Spannable)event_message.getText()); } و من الله التوفیق
  18. 2 likes
    وقتی که میخوایم داده هایی رو از کاراکتر ها و یا ارایه ها بخونیم میتونیم اونها رو داخل یک bufferreader بریزیم.و سپس اونها رو بخونیم. تو اینجا یه مثال ساده گذاشتم امیدوارم ب دردت بخوره.توضیح کد اینه ک یه اریه از نوع char داریم و یه بافر ریدر هم تعریف کردیم.میخایم با استفاده از داده های اریه ی char رو بخونیم و برزیم داخل بافر ریدر . بعدش این بافر ریدر رو به رشته تبدیل میکنیم. char[] char_me=arr_char; StringBuffer result = new StringBuffer(); for (int i = 0; i < arr_char.size(); i++) { result.append( char_me[i] ); } String str=result.toString();
  19. 2 likes
    در این مقاله، میخواهیم یاد بگیریم به چه صورتی میتوانیم متغیر ها را در کاتلین تعریف نماییم قبل از شروع این آموزشی حتما مطلب آموزشی زیر را مطالعه کنید تعریف متغیر ها در کاتلین،همه چیز یک OBject میباشد ،زیرا در کاتلین نوع اصلی نمی توانیم پیدا کنیم تعریف اولین متغیر شما میتوانید براحتی با کلمه کلیدی val یا var متغیر و نوع آن را تعریف کنید var i: Int=1 var d: Double=1.1 var f: Float=1.1F var l : Long=1L var c : Char ='c' var s: String="P30droid" با همین مثال های بالا ما تعداد شی با مقداد دهی اولیه ایجاد کنیم در کاتلین سمی کالن نداریم حافظه متغیر ها در کاتلین همچنین درکاتلین میتوانید متغیر یک متغیر جدید را بدون تعریف نوع آن فقط با مقداردهی یک متغیر دیگر که قبلا تعریف شده است را ایجاد کرد var ii= i+1 var dd= d+2.0 var ff= f+1 var ll= 1+1 var ss=s + "Iranian developers forum" println("ii : $ii , dd: &dd, ff: $ff,ll : &ll,ss : &ss") خروجی ii :2, dd : 3.1, ff :2, ss :P30droid Android Developers forum رشته ها در کاتلین : کار کردن با رشته ها در کاتلین به سادگی آب خوردن هستش var s : "Android" var ss : "My name is $s" // My name is Android var c : s[2] // this will assign character 'i' با صدا زدن کاراکتر & میتوانید به مقدار یک متغیر دسترسی پیدا کرد Type Casting در کاتلین در کاتلی به سادگی میتوانید Type Casting را انجام دهید var i: Int =1 var d: Double = i // Not possible var d : Double = t.toDouble() // Ok
  20. 2 likes
    برای پیاده سازی اینکار باید در فایل مانیفست تگ زیر را اضافه کنید تا در صورتی کاربر در بخش Brower ها اپ شما را انتخاب کرد اطلاعات برای شما ارسال شود <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="example.com" android:pathPrefix="/someresource/" android:scheme="http" /> <data android:host="www.example.com" android:pathPrefix="/someresource/" android:scheme="http" /> </intent-filter> Here, scheme -> Protocol of particular site host-> Exact site url with WWW pathprefix - > Your site's sub path if available Now,
  21. 2 likes
    دقیقا مشکل شما از همینجا هستش، دقت کنید که در طراحی گرافیکی حتما از آیکون با حجم مناسب استفاده کنید، چون 50 کیلوبایت برای آیکون یکم زیاده... از لینک پایین میتونید آیکونهای مورد نیازتون رو بدست بیارید: https://materialdesignicons.com/ در غیر این صورت باید به شکل مناسب اونها رو طراحی کنید تا هم حجم اپ بیاد پایین و هم دچار این چنین مشکلاتی نشید... در هر صورت اگر موفق به انجام کار بالا نشدید در فایل مانیفست و در بخش application کدهای زیر رو وارد کنید: android:largeHeap="true" android:hardwareAccelerated="false"
  22. 2 likes
    نه سخت نیس در حال حاظر دوتا دیتابیس پر کاربرد برای اندروید sqlite و realm هستند : https://realm.io/news/realm-for-android/ https://www.androidhive.info/2011/11/android-sqlite-database-tutorial/ منابع زیادی در اینترنت موجود هست .میتونید سرچ کنید
  23. 2 likes
    RecyclerView بسیار شبیه ListView در اندروید است. هر دو برای نمایش لیست در برنامه اندروید مورد استفاده قرار می گیرند، اما در بعضی موارد در مقایسه با یکدیگر تفاوت دارند. ListView در مقایسه با RecyclerView تا حدودی کندتر است. RecyclerView برخی از سفارشی سازی های اضافی را که ListView ارائه نمی کند فراهم می کند. RecyclerView در طراحی آیتم ها لیست ها در اندروید معرفی شده است. RecyclerView می تواند عملکرد نرم افزار را با بازیابی دیدگاه ها برای نمایش اقلام ردیف بهینه سازی کند، زیرا از هر نمایشگر برای نمایش هر آیتم لیست استفاده می کند که ListView هر بار که آیتم لیست قابل مشاهده است، نمای جدید را ایجاد می کند. ListView برخی از اقلام لیست را محدود می کند، در حالی که RecyclerView ابزار خاصی برای طراحی آیتم لیست فراهم می کند. ما همچنین می توانیم بگوییم که RecyclerView نسخه جدید ListView در اندروید است. ListView لیست سفارشی سازی لیست را با کمک منابع drawable فراهم می کند اما سفارشی سازی آن برای مثال محدود می شود. ما می توانیم از itemable برای item list که برای همه موارد در لیست استفاده می شود استفاده کنیم، نمی توانیم سفارشی سازی یک آیتم لیست خاص را ارائه دهیم. در حالی که ابزار ItemDecoration recyclerview، سفارشی کردن طراحی خاص و طرح بندی طرح برای یک آیتم لیست خاص را فراهم می کند. DividerItemDecoration verticalDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.HORIZONTAL); Drawable verticalDivider = ContextCompat.getDrawable(getApplicationContext(), R.drawable.myshape); verticalDecoration.setDrawable(verticalDivider); recyclerView.addItemDecoration(verticalDecoration); DividerItemDecoration horizontalDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL); Drawable horizontalDivider = ContextCompat.getDrawable(getApplicationContext(), R.drawable.myshape); horizontalDecoration.setDrawable(horizontalDivider); recyclerView.addItemDecoration(horizontalDecoration);
  24. 2 likes
    نه ربطی به این موضوع نداره شما تو تنظیمات اپلیکیشن مشخص مینید که حداقل ورژن اندروید(minSdk) که ساپورت میکنه چند باشه
  25. 2 likes
    با سلام زرین پال اومده کتاب خانه ای ایجاد کرده که میشه به راحتی بدون نوشتن کد های سمت سرور درون برنامه یک درون پرداختی ایجاد کرد که میشه خود برنامه نویس امنیتش رو تامیین کنه خب من هم اومدم آموزش ویدئوی این کتاب خانه رو ظبط کرد که برای شما قرار میدم آقای سرسیفی من برای اینکه به زرین پال بفرستم توی پیکو فایل آپلود کردم اگر میشه خودتون توی سایت ارسال کنید و اتچ کنید سپاس دانلود از سرور انجمن اندروید ایران zarinpalpayment.mp4 لینک کمکی : لینک دانلود
  26. 2 likes
    استفاده از Parcelable یک راه مناسب و مفید برای انتقال یا پاس دادن اطلاعات بین کامپوننت های اندروید می باشد. Parcelable یک مکانیسم سریال سازی است که توسط Android ارائه می شود. برای نوشتن یک شی به صورت Parcelable، باید انرا به اندروید استودیو اضافه کرد. برای این کار می توانید از آدرس زیر کمک بگیرید: http://corochann.com/fast-easy-parcelable-implementation در این اینجا، ما خواهیم ببینیم که چگونه یک شی Parcelable را در یک برنامه Android اجرا کنیم تا اطلاعات پیچیده را از یک اکتیویتی به اکتیویتی دیگر انتقال دهیم. import android.os.Parcel; import android.os.Parcelable; import android.util.Log; public class Student implements Parcelable{ String mSName; int mSAge; String mSAddress; String mSCourse; @Override public int describeContents() { // TODO Auto-generated method stub return 0; } /** * Storing the Student data to Parcel object **/ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mSName); dest.writeInt(mSAge); dest.writeString(mSAddress); dest.writeString(mSCourse); } /** * A constructor that initializes the Student object **/ public Student(String sName, int sAge, String sAddress, String sCourse){ this.mSName = sName; this.mSAge = sAge; this.mSAddress = sAddress; this.mSCourse = sCourse; } /** * Retrieving Student data from Parcel object * This constructor is invoked by the method createFromParcel(Parcel source) of * the object CREATOR **/ private Student(Parcel in){ this.mSName = in.readString(); this.mSAge = in.readInt(); this.mSAddress = in.readString(); this.mSCourse = in.readString(); } public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() { @Override public Student createFromParcel(Parcel source) { return new Student(source); } @Override public Student[] newArray(int size) { return new Student[size]; } }; } import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class StudentViewActivity extends Activity { TextView mTvSName; TextView mTvSAge; TextView mTvSAddress; TextView mTvSCourse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_student); // Fetching data from a parcelable object passed from MainActivity Student student = getIntent().getParcelableExtra("student"); // Getting reference to TextView tv_sname of the layout file activity_student mTvSName = (TextView)findViewById(R.id.tv_sname); // Getting reference to TextView tv_sage of the layout file activity_student mTvSAge = (TextView) findViewById(R.id.tv_sage); // Getting reference to TextView tv_saddress of the layout file activity_student mTvSAddress = (TextView) findViewById(R.id.tv_saddress); // Getting reference to TextView tv_scourse of the layout file activity_student mTvSCourse = (TextView) findViewById(R.id.tv_scourse); if(student!=null){ mTvSName.setText("Name:"+student.mSName); mTvSAge.setText("Age:"+Integer.toString(student.mSAge)); mTvSAddress.setText("Address:"+student.mSAddress); mTvSCourse.setText("Course:"+student.mSCourse); } } } import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { EditText mEtSName; EditText mEtSAge; EditText mEtSAddress; EditText mEtSCourse; Button mBtnOk; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting a reference to EditText et_sname of the layout activity_main mEtSName = (EditText)findViewById(R.id.et_sname); // Getting a reference to EditText et_sage of the layout activity_main mEtSAge = (EditText)findViewById(R.id.et_sage); // Getting a reference to EditText et_saddres of the layout activity_main mEtSAddress = (EditText)findViewById(R.id.et_saddress); // Getting a reference to EditText et_scourse of the layout activity_main mEtSCourse = (EditText)findViewById(R.id.et_scource); // Getting a reference to Button btn_ok of the layout activity_main mBtnOk = (Button)findViewById(R.id.btn_ok); // Setting onClick event listener for the "OK" button mBtnOk.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Creating an instance of Student class with user input data Student student = new Student(mEtSName.getText().toString(), Integer.parseInt(mEtSAge.getText().toString()), mEtSAddress.getText().toString(), mEtSCourse.getText().toString()); // Creating an intent to open the activity StudentViewActivity Intent intent = new Intent(getBaseContext(), StudentViewActivity.class); // Passing data as a parecelable object to StudentViewActivity intent.putExtra("student",student); // Opening the activity 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.main, menu); return true; } }
  27. 2 likes
    برای افزایش سرعت و همچنین بهینه سازی برنامه می توانیم از برنامه نویسی چند نخی « Thread » استفاده نماییم. با این کار می توانیم وظایف برنام را به چند قسمت تقسیم و به طور همزمان انجام بدهیم تا سرعت بالاتری برای برنامه رقم بزنیم. برنامه نویسی چند نخی یکی از اساسی ترین و مهمترین ارکان برنامه نویسی می باشد که متأسفانه حتی بسیاری از برنامه نویسان حرفه ای نیز آنرا نادیده می گیرند. چرا که با وجود سرعت های بالای CPU در سخت افزارهای PC و Notebook نیاز به استفاده از Thread ها به چشم نمی آید اما یکی از بزرگترین دلایل وجود Hang و در نتیجه Crash ها عدم توجه به این تکنیک برنامه نویسی می باشد. در دستگاه های ضعیف تر نظیر Smart Phone ها استفاده از Thread ها بسیار واجب و ضروری می باشد و حتی برای انجام هر عمل کم زمانبر نیز استفاده از Thread ها اکیداً توصیه می گردد. new Thread(new Runnable() { @Override public void run() { // your codes } }).start(); بد نیست که همین کد بالا را به شیوه ای دیگر بنویسیم : Runnable runnable = new Runnable() { public void run() { // your codes } }; Thread myThread = new Thread(runnable); myThread.start();
  28. 2 likes
    سلام دوست عزیز میتونید پارامتر های زیر رو ست کنید که باعث میشه دیگه از کش نخونه هر مرتبه از رو سرور بخونه Picasso.with(context).load(url).networkPolicy(NetworkPolicy.NO_CACHE).memoryPolicy(MemoryPolicy.NO_CACHE);
  29. 2 likes
    خواهش میکنم زمانی که احتیاج باشه یک فایل رو جا به جا کنید مثلا تصمیم دارین جای یک عکس رو تغییر بدین باید این دسترسی رو داشته باشه برنامتون.
  30. 2 likes
    خطا مشخصه چونکه اسم فیلد تو دیتابیس img_adrs میباشد و در cursro اشتباه نوشتید اینجوری بنویسید : String imgAddress=cursor.getString(cursor.getColumnIndex("img_adrs"));
  31. 2 likes
    کاربران گرامی انجمن اندروید ایران با درود همانند روال سال های گذشته ، انجمن برنامه نویسی پی سی دروید اقدام به انتشار هدایای نوروزی نموده است ، امیدواریم هدایای این دوره عیدی خوبی برای کاربران گرامی انجمن باشد.پس در نوروز کنار ما باشید با تشکر انجمن اندروید ایران
  32. 2 likes
  33. 2 likes
    کاربران گرامی انجمن برنامه نویسی اندروید پی سی دروید با درود چهار سالگی انجمن برنامه نویسی اندروید پی سی دروید مبارک باد همچنان که در طی سالیان گذشته در کنار ما بودید مبنی بر اینکه در روز 22 اسفند ماه که برابر است با چهار سالگی انجمن برنامه نویسی اندروید ، به پاس این روز نیک قصد داریم هدایایی را تقدیم کاربران انجمن پی سی دروید نماییم ،از این رو خوشحال میشویم شما در این روز با ما همراه باشید. خوشحال خواهیم نظرات خود را در مورد انجمن اندروید ایران با ما در میان بگذارید تا بتوانیم در سال جدید(۱۳۹۶) انجمنی پربارتر را داشته باشیم با احترام مدیر انجمن اندروید ایران (پی سی دروید) فرزاد سرسیفی
  34. 2 likes
    سلام دوست عزیز احتیاجی به متغییر نیست.دلیل این اتفاق این هستش که زمانی که شما بین تب ها جا به جا میشین فرگمنت ها به صورت کامل از بین نمیرن. برای این که شما جلو این تکرار رو بگیرین باید تو متد onCreateView یه شرط بزارین قبل از ساخت adapter تا چک کنید ببینید ازین فرگمنت دیتایی ساخته شده یا نه به این صورت تغییر بدین کدتونو if (savedInstanceState == null){ adapterCardView = new AdapterCardView(getActivity(),arrayList); loadDatabase(); }
  35. 2 likes
    این کد برای بسته شدن دراور هستش. برای اینکه از برنامه خارج بشین میتونید از متدهای زیر استفاده کنید finish(); System.exit(0);
  36. 2 likes
    این کد کامل این اکتیویتی من هستش. public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { protected Toolbar mToolbar; protected DrawerLayout drawerLayout; protected NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); /* mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); */ drawerLayout = (DrawerLayout) findViewById(R.id.home_activity_drawer_layout); if (getWindow().getDecorView().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) { getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); } navigationView = (NavigationView) findViewById(R.id.navigation_view); navigationView.setNavigationItemSelectedListener(this); } @Override public boolean onNavigationItemSelected(MenuItem item) { drawerLayout.closeDrawers(); switch (item.getItemId()) { case R.id.plants_drawer: { Intent intent = new Intent(BaseActivity.this, PlantActivity.class); startActivity(intent); return true; } case R.id.fishes_drawer: Intent intent = new Intent(BaseActivity.this, FishActivity.class); startActivity(intent); return true; /* case R.id.pest_algae_drawer: Toast.makeText(getApplicationContext(), "pest", Toast.LENGTH_SHORT).show(); return true;*/ case R.id.calculator_drawer: Toast.makeText(getApplicationContext(), "calculator", Toast.LENGTH_SHORT).show(); return true; default: return true; } } private void showDrawer() { drawerLayout.openDrawer(GravityCompat.START); } private void hideDrawer() { drawerLayout.closeDrawer(GravityCompat.START); } @Override public void onBackPressed() { if (drawerLayout.isDrawerOpen(GravityCompat.START)) hideDrawer(); else super.onBackPressed(); } @Override protected void attachBaseContext(Context context){ super.attachBaseContext(CalligraphyContextWrapper.wrap(context)); } } این قسمت رو هم اضافه کنید. من فراموش کردم متاسفانه navigationView.setNavigationItemSelectedListener(this);
  37. 2 likes
    به نظر من یه راه خیلی سادش اینه یه متغیر boolean تعریف کنید وقتی dot وارد کرد true بشه و توی آنکلیک دکمه dot شرط انجام دستورات رو false بودن متغیر ها بذارید. در صورتی که قرار هست اون dot پاک بشه،میتونید تو textChange اون editText یه کد بنویسید چک کنه ببینه الان dot پاک شد؟؟پس متغیر رو false کن
  38. 2 likes
    نه بابا چرا شکست اخه تا جایی که من میدونم haxm باعث میشه سرعت بره بالا برای امولاتور ها.و نباید این خطارو بده ولی حالا که میده میشه رفت سراغ راه حل های بعدی. چندتا راه دارین اول به نظرم Genymotion نصب کنید خیلی عالیه.البته باید virtualBox 5 هم نصب کنید.من خودم ازین امولاتور استفاده میکنم. راه بعد نصب امولاتور های زامارین هستش من استفاده نکردم. راه اخر اینه که روی گوشیتون تست کنید.
  39. 2 likes
    ممنون دوست عزیز
  40. 2 likes
    سلام برای api17+ ساپورت فارسی اضافه شده برای همین این سری موارد پیش میاد برای اینکه فقط برنامه ما درواقع یک جهت داشته باشه دو کار میشه انجام داد . یک ، اینکه توی منیفست Support rtl رو false بزارید که دیگه ساپورت فارسی نداشته باشه و به همون صورت اصلی باقی بمونه . دو ، اگه میخوایید اون ویژگی رو غیر فعال نکنید . برای ویوپیجر layoutDirection رو روی ltr بزارید . البته اگه توضیحات شما رو درست متوجه شده باشم .
  41. 2 likes

    نگارش 1.0.0

    95 دانلود

    سلام سورس کد اندروید موزیک پلیر مانند Spotify و Apple music همراه با سورس سمت سرور موفق باشید

    رایگان

  42. 2 likes
    با سلام خدمت اساتید محترم من سابقه برنامه نویسی دارم ولی این اولین اپلیکیشن اندرویدمه و اگه امکانش هست نگاهی بهش بندازید و ایراداتش رو بهم بگید.الیبته اینم بگم اولین اپلیکیشن منه و دست تنهام پس زیاد سخت نگیرید https://cafebazaar.ir/app/iTrip.eTrip/?l=fa
  43. 2 likes
    سلام.فایل نمونه قرار داد
  44. 2 likes
    تبریک میگم مهندس سرسیفی عزیز قالب جدید سایت بسیار خوب هستش هم به دلیل اینکه به صورت واکنشگرا می باشد و برای نمایش در هر محیطی مناسب قالبلیت چت هم بسیار خوب است به دلیل اینکه بحث در مورد بعضی از موضوعات بسیار زیاد میشد و تاپیک تبدیل به اسپم بسیار زیادی از جواب ها و نقطعه نظر غیر مرتبط تشکیل میشد . الان با این قابلیت دیگه این انتفاق نخواد افتاد . پاینده باشید
  45. 2 likes
    خوبه خوشم اومد قالب جالبیه و خوشحال شدم وااااقعا که انجمن یکم عوض شد قیافه ش خخخخ فقط این شکلکارو هم عوض کنید از این متحرکا بذارید
  46. 2 likes
    بیشتر افراد دارای سیم کارت های اعتباری هستند و هر چند وقت یکبار میخواهند بدانند که مانده حساب چقدر میباشد. خب در اندروید اینکار به سادگی قابل انجام بوده، در این آموزش قصد داریم امکانات زیر را پیاده سازی کنیم 1-دریافت مانده شارژ 2-شارژ سیم کارت 3-شارژ شگفت انگیز 4-تنظیمات اینترنت GPRS ما فرض را بر سیم کارت های ایرانسل قرار میدهیم، برای سایر اپراتورها فقط کد مربوطه را قرار میدهیم: [align=left] phNumber = "*141*111-333-222-4#";String uri = "tel:" + phNumber ;Intent intent = new Intent(Intent.ACTION_CALL);intent.setData(Uri.parse(uri));startActivity(intent); [/align] سپس در فایل مانیفست این مجوزها را فعال میکنیم: [align=left] [/align] رویداد فوق را میتوانید در کلیک ویجت Button قرار دهید . بهتر است در دیوایس واقعی تست شود تا خروجی دقیقا مشاهده شود.
  47. 2 likes
    [align=center]به نام خدایی که غم از دست دادنشو ندارم [/align] [align=right]با سلام خدمت دوستان گرامی.قسمت دوم هم ساختم.در این قسمت آموزش این هست که کلاس دیتابیسمون رو بسازیم.البته کد خیلی طولانی داره واسه همین اون کد هم قرارش دادم واستون.در این جلسه بعد از ساخت کلاس ابتدا فایل دیتابیسمون رو کپی میکنیم درون پروژه بعدش داخل گوشی انتقال میدیم به جای مخصوص بعدش هم تست میکنیم کپی شده یا نه!بعدشم یه تست میگیزیم ببینیم درست هست یا نه.[/align] [align=right]_____________[/align] [align=right]حجم فایل:30 مگابایت[/align] [align=right]محتویات:فیلم آموزش+پروژه تا اینجا+سورس کلاس دیتابیس در یک فایل txt[/align] [align=right]لینک دانلود....[/align] [align=right]_____________[/align] [align=right]نرم افزار Root Explorer[/align] [align=right]حجم فایل:2.5 مگ[/align] [align=right]نسخه:3.3.5 با پشتیبانی زبانی پارسی[/align] [align=right]لینک دانلود....[/align]
  48. 2 likes
    در این اموزش میخواهیم انیمیشنی برای دکمه قرار دهیم ابتدا دکمه ای در صفحه قرار داده.فایل xml به نام animation.xml با Resource type=Tween Animation و Root Element=Scale ایجاد میکنیم. کد زیر را در فایل ایجاد شده تایپ میکنیم. [shcode=xml]<?xml version="1.0" encoding="utf-8"?> android:fromXScale="0.1" android:toXScale="2.0" android:fromYScale="0.1" android:toYScale="2.0" android:pivotX="50%" android:pivotY="50%" android:duration="3000" > android:fromDegrees="0" android:toDegrees="180" android:pivotX="50%" android:pivotY="50%" android:duration="3000" android:startOffset="1500" > [/shcode] خصوصیت های Scale fromXScale و fromYScale: کنترل از چه اندازه ای در جهت محورX یا Yبزرگ شود toXScale و toYScale :کنترل تا چه اندازه ای در جهت محور X یا Y بزرگ شود. pivotX و pivotY : نقطه مبدا محور X و Y duration : زمان انیمیشن بر حسب میلی ثانیه در صورتی که بخواهیم از چند افکت استفاده کنیم از تگ set استفاده میکنیم. خصوصیت های Rotate fromDegrees :از چه درجه ای شروع به چرخش نماید toDegrees : تا چه درجه ای چرخش نماید startOffset: زمانی که پیش از اجرای انیمیشن لازم است با تمام شدن کار، به فایل MainActivity.java رفته و کد زیر را در ان تایپ میکنیم. [shcode=java]final Button b=(Button) findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Animation anim=AnimationUtils.loadAnimation(MainActivity.this, R.anim.animation); b.startAnimation(anim); } });[/shcode] با اجرای برنامه و کلیک روی دکمه، تنظیماتی که برای انیمیشن قرار داده اید را مشاهده میکنید.
  49. 2 likes
    در این تاپیک آموزشی، از ابتدا آموزش برنامه نویسی اندروید را شروع خواهیم نمود ،یکی از مشکلات برنامه نویسان اندروید کم یا نبود آموزش های اصولی اندروید میباشد ،بر همین اساس تصمیم بر آن داشتیم بطور جامع آموزش های فارسی را منتشر نماییم . بیشتر کاربران انجمن برنامه نویسی اندروید، کم و بیش با این مشکل رو به رو بوده اند که به چه صورتی اندروید را شروع کنند و شروع به آموزش اندروید بگیرند.بر این اساس در این تاپیک بطور جامع آموزش های اندروید قرار داده خواهد شد.. این تاپیک آموزشی هر چند روز یکبار بروز رسانی خواهد شد و آموزش ها جدیدتر قرار داده خواهد شد منو در اندروید ذخیره سازی اطلاعات در اندروید فرگمنت و گوگل مپ در اندروید وب سرویس در اندروید آموزش های متریال دیزاین در اندروید آموزش های کاتلین : با تشکر انجمن برنامه نویسی اندروید-پی سی دروید
  50. 2 likes
    کاربران گرامی با درود و عرض احترام لطفا در ارسالهای خود و بخشهای مختلف انجمن پی سی دروید قوانین زیر را رعایت فرمائید: منع فعالیت سیاسی : هر گونه فعالیت سیاسی بر خلاف قوانین بوده و با کاربر خاطی سریعا برخورد خواهد شد. زبان فارسی : زبان اصلی این انجمن فارسی است ، لطفا در هنگام ارسال مطالب از زبان پینگلیش استفاده نکنید . قوانین عمومی 1- انجمن پی سی دروید بدون هیچگونه فعالیت در جهت کسب منافع مادی فقط و فقط در حیطه راهنمایی کاربران ، رفع مشکلات کاربران ، معرفی و آموزش اندروید فعالیت مینماید و هر کاربر یا مدیری که در جهت سودجویی و منفعت مالی اقدام به منحرف کردن مبحث و سوالات کاربران دیگر را داشته باشد در بار اول به مدت 24 ساعت و برای بار دوم برای همیشه از انجمن اخراج میگردد. 2- تبلیغات در انجمن ممنوع میباشد و کاربران صرفا مجاز به درج تبلیغ در امضا خود میباشد و ارسال پست و تاپیک های تبلیغاتی شامل اخطار و اخراج میشود. 3- تمامي کاربران مي بايست در هنگام ثبت نام در سايت ، از کلمات مناسب جهت استفاده در نام کاربري خود استفاده نمايند. در صورت مشاهده کلمات رکيک و نامناسب، اشتراک آن كاربر در اولين فرصت حذف خواهد شد و دسترسي وي به انجمنها قطع خواهد شد حتي المقدور نام كاربري را با حروف انگيسي به جاي فارسي ايجاد نماييد. 4- کاربران سايت مي بايست در هنگام ارسال پيغام در انجمن ها از کلمات مناسب استفاده نمايند. در صورت مشاهده کلمات رکيک و نامناسب ، اشتراک آن كاربر در اولين فرصت حذف خواهد شد و دسترسي وي به انجمنها قطع خواهد شد. 5- عنوان تاپيک بايد به خودي خود نشانگر محتوا و گفتگوي هاي تاپيک باشد . لطفا در هنگام ايجاد تاپيک به اين نکته توجه کنيد تا تاپيک شما بيشتر مورد توجه ساير کاربران قرار گيرد . از ايجاد تاپيک هايي با عناوين : کمک ، کمک فوري ، خيلي مهم و ساير عناوين عمومي جدا خودداري کنيد ... 6- در صورتي که مايل به ارسال مطلبي از يک سايت ديگر مي باشيد ، حتماً منبع آن را ذکر نماييد. در صورتي که مطلب يا موضوع مذکور نوشته شده توسط شخص خاصي بود ، حتماً نام وي را ذکر نماييد. 7- لطفا در هنگام مطرح کردن سوالات خود ، انجمن مناسب را انتخاب نماييد و از مطرح کردن سوالات خود در انجمنهاي نامتناسب با سوالتان خودداري نماييد. 8- لطفا در هنگام طرح سوالات خود آنها را به صورت جداگانه مطرح فرماييد. بدين معني که در صورتي که سوالهاي گوناگوني داريد ، آنها را در چندين موضوع جداگانه مطرح نماييد و از مطرح کردن تمامي سوالات در يک موضوع خودداري فرماييد . 9- لطفا در هنگام جواب دادن به سوالات از به کار گيري الفاظ و جملاتي که باعث دلسردي کاربر سوال کننده شود خودداري فرماييد. اين را بدانيد که اين سايت محل آموزش است و کساني هستند که سوالهايشان بسيار ابتدايي مي باشد. لذا از به کارگيري کلماتي که باعث شود کاربر به جاي گرفتن جواب سوال خود دلسرد شود اکيداً خودداري فرماييد. 10- لطفا در صورتي که جواب يک سوالي را نمي دانيد از ارسال مطالبي که باعث شلوغ کردن آن تاپيک ( يا سوال ) شود خودداري فرماييد. در صورتي که بحث خاصي داريد مي توانيد براي خودتان يک تاپيک عمومي باز کنيد. 11- از نوشتن يك سوال و يا يك نامه در انجمنهاي مختلف خودداري كنيد. طبق قانون شماره 7 انجمن مناسب و مرتبط به نامه خود را انتخاب كنيد و فقط در آن انجمن نامه خود را ارسال كنيد. 12- تمام کاربران و مدیران موظف به احترام گذاشتن به یکدیگر در انجمن پی سی دروید هستند.ارسال مطالب کنایه آمیز ، بازی با کلمات! ، پیام خصوصی توهین آمیز ، خرد کردن شخصیت افراد و هرگونه بحثی که نشان از بی ادبی و تمسخر دیگران باشد در این انجمن جایی ندارد و بلافاصله کاربر خاطی اخراج خواهد شد. 13- کاربران بسیاری هستند که حتی نمیدانند که روش کار یک انجمن به چه شکل است و یا سوالات خیلی مبتدی میپرسند لذا هیچ کاربری حق جسارت به این دسته از کاربران را نداشته و باید با احترام و با صبر و حوصله پاسخ کاربران و راهنمایی لازم داده شود. انجمن تخصصی اندروید پی سی دروید