اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


مجید آرتا

مدیر کل سایت
  • تعداد ارسال ها

    3,665
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    104

تمامی مطالب نوشته شده توسط مجید آرتا

  1. این تیکه کدتون اگه Lab_detail یک لیبل یا ادیت تکست هستش که مشکل داره : Lab_detail=games.mydetail.Get(games.tag) به این شکل بنویسید : Lab_detail.Text=games.mydetail.Get(games.tag)
  2. کدهای اکتیویتی که اطلاعات رو میفرستین رو قرار بدین این کدا مشکلی ندارن
  3. سلام کد دستوری خاصی نداره شما اولا باید یک لیست Parent داشته باشید که این Parent باید یک شناسه داشته باشه یک لیست هم Node و شما یک شناسه به عنوان زیر مجموعه قرار بدید که قراره شناسه Parent رو درش ذخیره بشه Parent : Parent ID 1 - Majid 2 - Mehdi 3 - Navid 4 - Amin Node : Node ID Parent ID 1 1 2 1 3 3 4 3 5 4 6 2
  4. خب اون سه تا محصول رو بریز توی یک متغیر لیست بفرست سمت وب سرویس. اضافه کردنشم توی دیتابیس php دیگه نباید کار سختی باشه. این لیست رو توی وب سرویس میخونی با حلقه یکی یکی اینارو میریزی توی دیتابیس انلاینت کد php شم که توی وب موجوده. شما کافیه از اندروید اطلاعات رو به صورت لیست با فرمت جیسون بفرستین. توی وب سرویس هم جیسون رو بخونید و با حلقه اطلاعات رو بریزید توی دیتابیس زیاد مبحث سخت و پیچیده ای نداره.حلقه توی php رو یاد بگیرید و insert کردن اطلاعات توی دیتابیس یکی هم خوندن اطلاعات جیسون از سمت اندروید که میتونید به صورت get یا post این کارو انجام بدین. کد ارسال جیسون به سرور ( مثال ): Private data As Map Dim OrderList As List OrderList.Initialize Dim cr As Cursor For i = 0 To cr.RowCount - 1 cr.Position = i data.Initialize data.Put("product",cr.GetString("ProductName")) data.Put("quantity", cr.GetInt("Quantity")) data.Put("amount",cr.GetString("Amount")) OrderList.Add(data) Next Private Generator As JSONGenerator Generator.Initialize2(OrderList) If IsPost Then http.PostString("http://site.com/webservice.php","MyJSON=" & Generator.ToString) Else http.Download2("http://site.com/webservice.php",Array As String("MyJSON",Generator.ToString)) End If کد php شم خودتون تست کنید من مستقیما از W3Schools کپی کردم و تستی انجام ندادم: <?php header("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_GET["MyJSON"], false); #write code for get data from json ?> اگه بخوایید گت باشع که $_GET اگر پست خواستید $_POST. در ادامه حلقتونو مینویسید و اطلاعات جیسون رو توی دیتابیستون درج میکنید. در ضمن شما باید دیتابیستون رو طوری طراحی کنید که چندین مخصول رو بتونید برای یک سفارش در نظر بگیرید و بالعکس. یک سرچ ساده درمورد نرمال سازی پایگاه داده بزنید اولین مثالی که زده میشه همین موضوع فروشگاه و محصول هستش و راحت میتونید پایگاه دادتونو تا یک سطح مناسب نرمالسازی کنین.
  5. مجید آرتا

    ادمین سازی + مدیریت کاربران

    سلام می تونید دو صفحه بزارید می تونید دو تا اپ جدا یکی برای مدیر یکی برای کاربران میتونید از یک صفحه استفاده کنید زمانی که لاگین میکنن برنامه بیاد چک کنه یوزری که ادمین هستش مثلا دو سه تا ایتم براش اضافه تر بیاد مثل همین اپلود مطلب. مطلبارو هم توی یک جدول قرار میدی حالا میخواد ادمین باشه میخواد ممبر بتونه مطالب توی اپ نمایش بده.
  6. سلام کد خاصی نمیخواد. کار با دیتابیس رو که یاد دارید دیگه ؟ توی یک جدول این اطلاعات رو اضافه کنید. دقیقا بگید کجای کارو مشکل دارین تا راهنمایی کنیم.
  7. یجایی کدتونو اشتباه نوشتید که سعی کامپایلر ایراد میگیره و داره بهتون میگه شما نمیتونید یک رشته رو به ویو TextView تبدیل کنین کدی که نوشتین رو بزارید
  8. سلام دوست من بهتره از api یا وب سرویس استفاده کنید
  9. سلام هر دسترسی که با کار برنامه همخوانی نداشته باشه !!! دسترسی های مختلف رو خودتون می تونید فیلتر کنید دسترسی به هر چیزی که جز حریم خصوصی کاربر و . . . . تا حالا در فکر ساختن انتی ویروس نبودم می تونید یک نسخه apk رو دیکامپایل کنید چک کنید دقیقا چ فیلتری رو اعمال می کنن
  10. خسته نباشید خدا قوت
  11. سایتی که ارائه دهنده ی پنل اس ام اس باشه، خودشون داکیومنت استفاده از api رو ارائه میده 4 تا get و post رو راحت می تونید انجام بدید میخواد برنامتون با بیسیک، سی شارپ، جاوا و هر زبان برنامه نویسی که قابلیت کار با اینترنت رو داشته باشه انجام بدید
  12. وینرارتون رو بروز رسانی کنین
  13. سلام، دوستانی که بعضی از قسمتای انجمن واسشون قابل نمایش نیست به من گزارش بدن

  14. سلام یکی از دوستان درخواست همجین سورسی رو داده بود ببینید دوستان ما فقط برای عوض شدن اکتویتی میتونیم از انیمیشن دادن استفاده کنیم. و بنده برای لایه ها نتونستم کاری کنم که مثل اکتیویتی عمل کنه خب اساس کار ما چی بوده توی این پروژه: قرار دادن 4 فایل XML جهت انِمیشن دادن در پوشه ی anim در مسیر Objects/res/anim مربوط به پروژتون.شما میتونید فایل های دیگه ای از انیمیشن ها که مربوط میشه به اکتیویتی رو در این پوشه قرار بدید و استفاده کنید.نکته ای که وجود داره باید فایل ها Read Only باشند.یعنی شما رو فایل راست کلیک و به Propertis رفته و تیک Read Only رو میزنید. ایجاد یک کد ماژول و نوشتن تابعی جهت خواندن فایل های XML که بوسیله کتابخانه Reflection انجام میشه. رمز فایل : basic4android.org موفق باشید Activity Animation_(www.basic4android.org).rar
  15. مطالبتون مگه از دیتابیس نمیگیرید ؟ ب نظرم بجای Shared از دیتابیس استفاده کنید چون اون ردیفی که به علاقمندی اضافه میشه رو ایدیش رو هم ذخیره کنید.
  16. سلام کدی که نوشتین رو قرار بدین ببینیم دقیقا کجا مشکل دارین
  17. سلام امیدوارم حالتون خوب باشه بنده اموزش دریافت اطلاعات رو به فرمت JSON توی فروشگاه ساخته بودم و قرار دادم ولی خب بنده یادم رفته بود که ارسال اطلاعات به فرمت JSON رو هم آموزش بدم مختصرا اینجا آموزش میدم بر فرض بنده میخوام اسم و فامیل و اسم شهر رو به سرور بفرستمُ‌حالا احتمال داره این اطلاعات به صورت GET یا POST باشه. خب کد PHP به این شکل هستش که توی سایت اصلی بود » <? $json = $_REQUEST["MyJSON"]; $jsonArray = array(); $jsonObject = array(); $jsonArray=json_decode($json, true); $x = 0; while($x < count($jsonArray)) { $jsonObject=$jsonArray[$x]; $name = $jsonObject["name"]; $family=$jsonObject["family"]; $city=$jsonObject["city"]; $x++; echo $name . " " . $family . " ". $city; } ?> و به این شکل یک تابع نوشتیم که اطلاعات رو به سرور به فرمت جیسون میفرسته که با دو متد GET و POST میشه انجام داد » Private Sub Send(IsPost As Boolean) Private data As Map data.Initialize data.Put("name","Majid") data.Put("family","Arta") data.Put("city","Iranshahr") Private list As List list.Initialize list.Add(data) Private gen As JSONGenerator gen.Initialize2(list) If IsPost Then http.PostString("http://site.com/service/index.php","MyJSON=" & gen.ToString) Else http.Download2("http://site.com/service/index.php",Array As String("MyJSON",gen.ToString)) End If End Sub نمونه کد » Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("activity_main") http.Initialize("sendJson",Me) End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub btnSend_Click Send(True) 'Or Send(False) End Sub Sub JobDone(job1 As HttpJob) If job1.Success Then If job1.JobName = "sendJson" Then Msgbox(job1.GetString,"") End If End If End Sub Private Sub Send(IsPost As Boolean) Private data As Map data.Initialize data.Put("name","Majid") data.Put("family","Arta") data.Put("city","Iranshahr") Private list As List list.Initialize list.Add(data) Private gen As JSONGenerator gen.Initialize2(list) If IsPost Then http.PostString("http://site.com/service/index.php","MyJSON=" & gen.ToString) Else http.Download2("http://site.com/service/index.php",Array As String("MyJSON",gen.ToString)) End If End Sub مشکلی یا سوالی بود در خدمتم موفق باشید.
  18. با سلام به کاربرای عزیز. دیر وقته آموزش های متنی و ویدیویی برای کاربرای عزیز قرار ندادم یه آموزش ساده میدم، از سایت مرجع بیسیک 4 اندروید B4X. با این کلاس که توی core خود بیسیک هستش، میتونید متنتون رو زیبا تر و شکیل تر کنید.به یه قسمت از متنتون، فونت و استایل و سایز حاص می تونید بدید. این کلاس بر گرفته از کتابخونه RichString قدیم هستش که سازندش agraham یکی از توسعه دهندگان خوب b4a که کتابخونه های خوبی رو برای b4a ایجاد کرده. یادمه خیلی از دوستان مشکلات زیادی در این مورد داشتن، هایلایت کردن قسمتی از متن، لینک دادن به قسمتی از متن و . . . به وسیله ی این کلاس که توی خود بیسیک تعبیه شده امکان پذیر هستش. میریم سراغ مثال ها و نحوه ی استفاده این کلاس » مثال 1: lbl.Text = cs.Initialize.Color(Colors.Green).Append("Answer").Color(Colors.Red).Append("Center").PopAll خروجی مثال 1: مثال 2: Dim cs As CSBuilder cs.Initialize.Color(Colors.Red).Append("Hello ") cs.Bold.Color(Colors.Green).Append("Colorful ").Pop.Pop 'two pops: the first removes the green color and the second removes the bold style cs.Append("World!").PopAll lbl.Text = cs خروجی مثال2: مثال 3:( در این مثال نحوه استفاده از فونت ایکون هم موجود هستش) lbl.Text = cs.Initialize.Append("Text with FontAwesome: ").Typeface(Typeface.FONTAWESOME).Append(Chr(0xF209)).PopAll مثال 4:( در این مثال قسمتی از متن رو قابلیت کلیک میدیم) Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("main") Dim cs As CSBuilder cs.Initialize.Size(30).Append("Some ").Append(CreateClickableWord("words")) cs.Append(" are ").Append(CreateClickableWord("clickable")).Append(".").PopAll lbl.Text = cs cs.EnableClickEvents(lbl) End Sub Sub CreateClickableWord(Text As String) As CSBuilder Dim cs As CSBuilder Return cs.Initialize.Underline.Color(0xFF00D0FF).Clickable("word", Text).Append(Text).PopAll End Sub Sub Word_Click (Tag As Object) Log($"You have clicked on word: ${Tag}"$) End Sub خروجی 4: این کلاس از بیسیک نسخه 6.80 به بعد موجود هستش. خب امیدوارم مورد توجهتون قرار گرفته بشه. منبع: B4X forum Www.AnswerCenter.IR
  19. سلام روز دانشجو رو به همه بیکاران آینده تبریک عرض می کنم امیدوارم حالتون خوب باشه و خلاصه سرما خورده باشین اساسی :دی یکی از مواردی که باعث میشه برنامه هامون کمی جلوه بهتری داشته باشه همین انیمیشن هاست که در قسمت های مختلفی از برنامه اعمال می کنیم. بیشتر برنامه هایی که درست می کنیم مجبور به استفاده از RecyclerView هستیم و خوبه که بتونیم از این ویویی که پر کاربرده بهتر و قشنگترش کنیم. در طی یک جستجوی کوچولو تونستم یک کلاس پیدا کنم که انیمیشن های ساده ای رو داشت و خب به کار بنده اومد و شما اگر دوست داشتید می تونید باز این کلاس رو بهتزش کنید. کدهای کلاسمون » public class AnimationUtils { private static int counter = 0; public static void scaleXY(RecyclerView.ViewHolder holder) { holder.itemView.setScaleX(0); holder.itemView.setScaleY(0); PropertyValuesHolder propx = PropertyValuesHolder.ofFloat("scaleX", 1); PropertyValuesHolder propy = PropertyValuesHolder.ofFloat("scaleY", 1); ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(holder.itemView, propx, propy); animator.setDuration(800); animator.start(); } public static void scaleX(RecyclerView.ViewHolder holder) { holder.itemView.setScaleX(0); PropertyValuesHolder propx = PropertyValuesHolder.ofFloat("scaleX", 1); ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(holder.itemView, propx); animator.setDuration(800); animator.start(); } public static void scaleY(RecyclerView.ViewHolder holder) { holder.itemView.setScaleY(0); PropertyValuesHolder propy = PropertyValuesHolder.ofFloat("scaleY", 1); ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(holder.itemView, propy); animator.setDuration(800); animator.start(); } public static void animate(RecyclerView.ViewHolder holder, boolean goesDown) { YoYo.with(Techniques.RubberBand) .duration(1000) .playOn(holder.itemView); // AnimatorSet animatorSet = new AnimatorSet(); // ObjectAnimator animatorScaleX = ObjectAnimator.ofFloat(holder.itemView, "scaleX" ,0.5F, 0.8F, 1.0F); // ObjectAnimator animatorScaleY = ObjectAnimator.ofFloat(holder.itemView, "scaleY", 0.5F, 0.8F, 1.0F); // ObjectAnimator animatorTranslateY = ObjectAnimator.ofFloat(holder.itemView, "translationY", goesDown == true ? 300 : -300, 0); // ObjectAnimator animatorTranslateX = ObjectAnimator.ofFloat(holder.itemView, "translationX", -50, 50, -30, 30, -20, 20, -5, 5, 0); // animatorSet.playTogether(animatorTranslateX, animatorTranslateY, animatorScaleX, animatorScaleY); // animatorSet.setInterpolator(new AnticipateInterpolator()); // animatorSet.setDuration(1000); // animatorSet.start(); } public static void animateToolbarDroppingDown(View containerToolbar) { containerToolbar.setRotationX(-90); containerToolbar.setAlpha(0.2F); containerToolbar.setPivotX(0.0F); containerToolbar.setPivotY(0.0F); Animator alpha = ObjectAnimator.ofFloat(containerToolbar, "alpha", 0.2F, 0.4F, 0.6F, 0.8F, 1.0F).setDuration(4000); Animator rotationX = ObjectAnimator.ofFloat(containerToolbar, "rotationX", -90, 60, -45, 45, -10, 30, 0, 20, 0, 5, 0).setDuration(8000); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.setInterpolator(new DecelerateInterpolator()); animatorSet.playTogether(alpha, rotationX); animatorSet.start(); } /** * Courtesy: Vladimir Topalovic * * @param holder * @param goesDown */ public static void animate1(RecyclerView.ViewHolder holder, boolean goesDown) { int holderHeight = holder.itemView.getHeight(); holder.itemView.setPivotY(goesDown == true ? 0 : holderHeight); AnimatorSet animatorSet = new AnimatorSet(); ObjectAnimator animatorTranslateY = ObjectAnimator.ofFloat(holder.itemView, "translationY", goesDown == true ? 300 : -300, 0); ObjectAnimator scaleY = ObjectAnimator.ofFloat(holder.itemView, "scaleY", 1f, 0.4f, 1f); ObjectAnimator scaleX = ObjectAnimator.ofFloat(holder.itemView, "scaleX", 1f, 1.3f, 1f); animatorTranslateY.setInterpolator(new AccelerateInterpolator()); scaleY.setInterpolator(new OvershootInterpolator()); scaleX.setInterpolator(new OvershootInterpolator()); animatorSet.play(animatorTranslateY).before(scaleY).before(scaleX); animatorSet.setDuration(700); animatorSet.start(); } /** * Courtesy: Vladimir Topalovic * * @param holder * @param goesDown */ public static void animateSunblind(RecyclerView.ViewHolder holder, boolean goesDown) { int holderHeight = holder.itemView.getHeight(); holder.itemView.setPivotY(goesDown == true ? 0 : holderHeight); holder.itemView.setPivotX(holder.itemView.getHeight()); AnimatorSet animatorSet = new AnimatorSet(); ObjectAnimator animatorTranslateY = ObjectAnimator.ofFloat(holder.itemView, "translationY", goesDown == true ? 300 : -300, 0); ObjectAnimator animatorRotation = ObjectAnimator.ofFloat(holder.itemView, "rotationX", goesDown == true ? -90f : 90, 0f); ObjectAnimator animatorScaleX = ObjectAnimator.ofFloat(holder.itemView, "scaleX", 0.5f, 1f); animatorSet.playTogether(animatorTranslateY, animatorRotation, animatorScaleX); animatorSet.setInterpolator(new DecelerateInterpolator(1.1f)); animatorSet.setDuration(1000); animatorSet.start(); } /** * Courtesy: Vladimir Topalovic * * @param holder * @param goesDown */ public static void animateScatter(RecyclerView.ViewHolder holder, boolean goesDown) { counter = ++counter % 4; int holderHeight = holder.itemView.getHeight(); int holderWidth = holder.itemView.getWidth(); View holderItemView = holder.itemView; holderItemView.setPivotY(goesDown == true ? 0 : holderHeight); holderItemView.setPivotX(holderWidth / 2); AnimatorSet animatorSet = new AnimatorSet(); ObjectAnimator animatorTranslateY = ObjectAnimator.ofFloat(holderItemView, "translationY", goesDown == true ? 300 : -300, 0); ObjectAnimator animatorTranslateX = ObjectAnimator.ofFloat(holderItemView, "translationX", counter == 1 || counter == 3 ? holderWidth : -holderWidth, 0); ObjectAnimator animatorScaleX = ObjectAnimator.ofFloat(holderItemView, "scaleX", counter == 1 || counter == 2 ? 0 : 2, 1f); ObjectAnimator animatorScaleY = ObjectAnimator.ofFloat(holderItemView, "scaleY", counter == 1 || counter == 2 ? 0 : 2, 1f); ObjectAnimator animatorAlpha = ObjectAnimator.ofFloat(holderItemView, "alpha", 0f, 1f); animatorAlpha.setInterpolator(new AccelerateInterpolator(1.5f)); animatorSet.playTogether(animatorAlpha, animatorScaleX, animatorScaleY, animatorTranslateX, animatorTranslateY); animatorSet.setDuration(800).setInterpolator(new DecelerateInterpolator(1.1f)); animatorSet.start(); } // ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(holder.itemView, "translationY", (positive == true ? 200.0F : -200.F), 0F); // objectAnimator.setInterpolator(new DecelerateInterpolator()); // objectAnimator.setDuration(1000); // objectAnimator.start(); // YoYo.with(Techniques.StandUp).duration(800).playOn(holder.itemView); // AnimatorSet animatorSet = new AnimatorSet(); // Animator scaleVertical = ObjectAnimator.ofFloat(holder.itemView,"scaleY",1.0F,0.8F,1.2F,1.4F,1.6F,1.4F,1.2F,0.8F,1.0F).setDuration(2000); // Animator rotateY = ObjectAnimator.ofFloat(holder.itemView,"rotationY",0,5,10,15,20,25,30,25,20,15,10,5,0).setDuration(2000); // //ObjectAnimator.ofFloat(holder.itemView,"scaleY",1.0F,0.8F,1.2F,1.4F,1.6F,1.4F,1.2F,0.8F,1.0F).setDuration(2000) // //ObjectAnimator.ofFloat(holder.itemView,"rotationY",0,5,10,15,20,25,30,25,20,15,10,5,0).setDuration(2000); // // animatorSet.playTogether(rotateY, scaleVertical); // animatorSet.start(); // } خب این کلاس از کتابخونه های مختلفی استفاده کرده که نیازه توی گریدل این هارو کامپایل کنیم ( به قول بچه ها سینکشون کنیم ) این 3 تا خط کد رو توی فایل dependencies قرارشون بدین و Sync کنید. compile 'com.nineoldandroids:library:2.4.0' compile 'com.daimajia.easing:library:1.0.1@aar' compile 'com.daimajia.androidanimations:library:1.1.3@aar' در ادامه نحوه استفاده از این کلاس » - خب ابتدا توی کلاس آداپتر به صورت عمومی یا پابلیک یک متغییر Integer تعریف می کنیم private int mPreviousPosition = 0; - کار بعدی که فقط نوشتن یک شرط ساده با یک خط کد کارمون انجام میشه و این شرط رو باید در متد onBindViewHolder بنویسیم. if (position > mPreviousPosition) { AnimationUtils.animate1(holder,true); } else { AnimationUtils.animate1(holder, false); } mPreviousPosition = position; اون position هم مربوط به تابع onBindViewHolder میشه و ما تعریف نکردیم! خب این کلاس چندین Animation داره که بنده به عنوان مثال animate1 رو نوشتم.دلیل اینکه دوبار این کد نوشته شده این هستش هر دو جهت یعنی بالا و پایین باهم آیتم ها دارای انیمیشن باشن. نمونه » خب آموزش تا همینجا به اتمام میرسه ان شاءالله که مورد استفاده باشه.
  20. به نام خدا سلام امیدوارم حالتون خوب و خوش باشه چند مدتی بود که سورس کدش توی لپ تاپم خاک می خورد و منم توی حسرت یک سفارش :دی خب دست به کار شدیم گفتیم دمه امتحانات یکم دوستان رو خوشحال کنیم و ثوابی بهمون برسه. این عکس رو قطعا دیدید : سورس کدی که بنده قراره براتون بزارم یک همچین چیزی هستش.( یعنی خودشه :دی ) توضیح کوتاهی هم بدم تا دوستان مستفیذ بشن :دی توی ساخت این تقویم از آرایه های دو بعدی و ViewPager استفاده شده. دارای 3 تا تابع اصلی : ساخت لیبل های نشان دهنده روزهای هفته ( شنبه ، یکشنبه و .....) ساخت لیبل های نشان دهنده روز های ماه قرار دادن روز های هر ماه در لیبل های مربوط به ماه مورد نظر در کل قبلنا حوصلمون زیاد بود و سورس می نوشتیم ولی الان فقط زدیم توی خط ReUse :دی.دیگه به بزرگی خودتون ببخشید :دی. کپی برداری از این سورس بدون ذکر منبع هم حرامن در حرام هستش سر پل صراط از تخطی کننده سواری گرفته میشه :دی خب رمز فایل هم طبق معمول answercenter.ir *** پست آپدیت شد *** ( دلیل » مشکل داشتن فایل پیوستی ) منتظر سورپرایز های دیگه از AnswerCenter باشید. Taghvim Qamari(AnswerCenter.IR).rar
  21. به نام خدا سلام با کتابخانه TTS میتونید بهش متن بدید و متن رو واستون بخونه برای انجام این کار اول فایل پیوسست شده رو دانلود کنید و توی مسیر نصب بیسیک یک پوشه Libraries وجود داره و اون 2تا فایلو توی این پوشه قرار بدید و از قسمت Lib توی محیط بیسیک به پروژه اضافه کنید خب کد خاصی نداره جهت خواندن قسمت Globals: Sub Globals Dim tts1 As TTS Private EditText1 As EditText End Sub و این کد رو توی یک دکمه بنویسید: Sub Button1_Click tts1.Speak(EditText1.Text,False) End Sub رمز فایل : basic4android.org موفق باشید TTS.rar
  22. به نام آنکه جانم بخشید و جهان امیدوارم حالتون خوب و خوش باشه و تا الان رفته باشید و رای به کاندیدای مورد نظرتون رو داده باشید :دی در این روز عید ( روز جمعه ) که در خدمت شما هستیم قصد دارم یک سورس کدی رو با کمی توضیحات در اختیار شما عزیزان قرار بدم و اگر قسمت بشه کتابخونه اینرو بسازیم که خوب اگر هم نشد کتابخونه ساز های محترم زحمتشو بکش :دی توی این آموزش یاد می گیرید که چطور چنتا عکس رو بین چنا متن قرار بدید و لذت ببرید که خیلی از دوستان فوق العاده دغدغه داشتن روی این مورد ببنید روش های زیادی واسه این کار موجوده و واقعا فکر می کنم با هر چنتاش که توی مخیله بنده بود به احتمال 99% میشد همچین حالتی رو ایجاد کرد. خب بنده این مورد رو توی جاوا و محیط اکلیپس دیدم و از اونجا Translate کردم به B4A عزیز خب مثلا یه روشی که مد نظر بنده بود و یکم کار داشت این بود که به وسیله Regexp یا همون Regex که در بیسیک هستش انجام بشه. Regex = Regular Expression اگه اشتباه ننوشته باشم خلاصه همیچین کلمه ای هستش که می تونیم باهاش الگوهای خاصی رو در رشته تشخیص داد یک مدل پرکاربرد Regex ها تشخیص صحیح بودن فرمت وارد کردن ایمیل توسط کاربر که میاد در نظر میگیرع که قبل از @ تمامی حروف a-z اعداد 0 تا 9 و کاراکتر ها دیکه و بعد از @ ختما یک . ( Dot ) وجود داشته باشه و یک الگویی رو ارائه میده و باهاش میشه رشته هارو از روی این الگو تحلیل کنیم کلی گفتم که به وسیله رجیکس ها هم می تونید یک الکو از متنتون داشته باشید و بتونید این مورد عکس ها و متن ها در بین هم پیاده کنید و که فقط یافتن الگوی مورد نیازمون کمی سخته ( برای کسانی که زیاد با رجیکس ها کار نکردن و قواعدشو نمیدونم از جمله خود بنده ) حالا در این سورس از روش بالا استفاده نشده و یک روش ساده تر و خوبی استفاده شده. خب بزارید قسمت قسمت سورس رو توضیح میدم : - این سورس 2 تابع داره که یکی برای ایجاد لیبل برای هر متن و یکی برای ایجاد ImageView برای هر عکس در بین متن ها. - یک تشخیص متن ساده و همین. از Globals شروع می کنیم : Sub Globals Private sv As ScrollView Dim offsetY As Int = 1%y End Sub برای اینکه بتونیم تمامی متون و عکس هارو ببینیم نیاز داریم تا از اسکرول ویو استفاده کنیم یک متغییر offsetY هم تعریف کردیم این متغییر کارش اینه که میاد top تمامی المان هارو مشخص می کنه یعنی ویوهارو زیر هم مرتب میچینه میریم جلوتر میبینیم نقش این متغییر رو خب میریم سراغ دوتا تابع مهم برنامه که خودمون دستی نوشتبم و ار پیش ساخته نیست تابع اول ایجاد لیبل برای هر متن : Sub setLabel(value As String) Private lbl As Label lbl.Initialize("") lbl.TextColor = Colors.Black lbl.TextSize = 18 lbl.Text = value lbl.Gravity = Gravity.RIGHT sv.Panel.AddView(lbl,1%x,offsetY,98%x,5%y) Dim stu As StringUtils lbl.Height = stu.MeasureMultilineTextHeight(lbl,lbl.Text) offsetY = stu.MeasureMultilineTextHeight(lbl,lbl.Text) + lbl.Top + 1%y End Sub توضیحات » خب یک لیبل رو میسازیم و یک خونه از حافظه رو بهش نسبت میدیم ( Initialize ) و یکسری کد مثل تعیین رنگ متن و اندازه متن و حالت چینش متن و در ادامه به اسکرول ویو اضافش می کنیم از کتابخونه StringUtils استفاده کردیم تا بتونیم اندازه لیبل رو به اندازه متنمون کنیم و متنمون ناقص نباشه خدایی نکرده .و در نهایت گفتیم بیا موقعیت دقیق لیبل که میشه top لیبل به علاوه height اون رو به علاوه یک مارجین یک درصدی تا به عکس پایینی زیادی نچسبه و نزدیک نباشه. تابع دوم ایجاد ImageView برای هر عکس : Sub setImage(value As String) If(value.EndsWith(".jpg") OR value.EndsWith(".png")) Then Private img As ImageView img.Initialize("") img.Gravity = Gravity.FILL sv.Panel.AddView(img,33%x,offsetY,33%x,33%y) Dim b As BitmapDrawable b.Initialize(LoadBitmapSample(File.DirAssets,value,img.Width,img.Height)) img.Bitmap = b.Bitmap offsetY = img.Top + img.Height +1%y End If End Sub توضیحات » ما اینجا توی این تابع اسم عکس رو از متنمون میگیریم یا کلا بگم اسم عکس ورودی ما هستش فقط،در ادامه ما اسم عکس رو به صورت اتوماتیک و میکیریم و شما کافیه پاتون رو روی گاز بفشارید خب شرط اif چی میگه ؟ میگه که آقا اسم عکسی رو که دادی چک می کنه jpg هست یا png و این شرط میخواد ببینه اسمی رو که به تابع دادیم واقعا عکسه یا نه ؟ میتونستیم بدون شرط بنویسیم ولی خب صدرصد دچار کرش میشدیم توی برنامه و در ادامه یک ایمیج ویو میسازیم و حالت قرارگیری عکس و بعد اضافه کردن به اسکرول ویو و بعد موقعیت دقیقش رو در صفخه میگیریم و میریزیم داخل offsetY. از اینجا به بعد که قراره به طور عملی ازش استفاده کنیم یکم کد مد داره فقط خودتون رو گیج نکنید الکی و طوری رفتار نکنید که طوری شده کد مربوط به Activity_Create و یا هرجایی که دوست دارید،واسه بنده داخل این رویداد هستش و شما دوست دارید می تونید جای دیگه استفاده کنید: Sub Activity_Create(FirstTime As Boolean) sv.Initialize(0) sv.Color = Colors.White Activity.AddView(sv,0,0,100%x,100%y) Private text As String = File.ReadString(File.DirAssets,"matn.txt") Dim part(3) As Int part = Array As Int(0,0,0) For i = 0 To text.Length - 1 If text.CharAt(i) = "{" Then part(1) = i If text.SubString2(part(0),part(1)) <> "" Then setLabel(text.SubString2(part(0),part(1))) End If End If If text.CharAt(i) = "}" Then part(2) = i setImage(text.SubString2(part(1) + 1,part(2))) part(0) = part(2) + 1 End If Next sv.Panel.Height = offsetY + 3%y End Sub قبل از توضیح کد ها باید به عرضتون برسونم که بنده متنی رو به عنوان تست در فایل txt قرار دادم و متن رو اینجا قرار میدم Salam In Amozesh Tavasote Anjoman AnswerCenter Hastesh. khub baraye inke betonid yekam behtar beshe bayad roye in mozo kar konid.{1359453934-parsnaz-ir.jpg}toye in amozesh mikhayim chanta matn va ax ro kenare ham gharar bedim!!!!da hamin miyan shayad nokat ezafi digei ro yad gereftid ke mofid o jaye dige ghabel estefade bashe vasaton{20.jpg} khub berim soraghe ax sevomi ke mikhayim gharar bedim dustan...................................................................................................................{497601.jpg} hala inam matn akhar vA baad in matn axi nist dige va yek matn haminjori mizarim hal konid ta vaghtimmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmllalallalallajjkhgfggdhmnkl,msmndks,mdsbnmd,. {empty} خب ما اینجا اسم عکسامون رو در بین متنهامون قرار دادم،مثلا ما 4 تیکه متن داریم و 3 تیکه اول هر کدوم یک متن و اینجا بعد هر متن به وسیله { } اومدم اسم عکس مربوط به همون متن رو داخلش نوشتم ( در ضمن بعد از تحلیل متن این { } و اسم عکس حذف میشه و فقط عکس نمایش داده میشه) شما می تونید به جای { } از علائم دیگه ای مثل < > ,[ ] , & & , % % و غیره استفاده کنید حالا در ادامه چطور ما اسم عکسمون رو در میاریم از داخل متن اصلی » ما برای اینکه کل متن رو تحلیل کنیم باید از حلقه فور استفادع کنیم و تک تک کاراکتر هارو چک کنیم کاراکترهای مورد مقایسه ما } و { هستن که میگیم به محض رسیدن بع این دو کاراکتر بیا متن موجود بین این دو کاراکتر رو دذ بیار که میشه اسم عکسمون و اینکار رو با SubString2 بدست میاریم.این ساب استرینگ 2 به این شکله که دوتا ورودی میگیره یکی نقطه شروع و نقطه پایان جداسازی متن،و ما تنها کاری که اینجا باید بکنیم هر کاراکتر که مبربم جلو و رسیدیم به { و } بیاییم موقعیتشو ذخیره کنیم و اسم عکس رو بدست بیاریم و بدیم به تابع کذایی. حالا همین روند برای بدست اوردن متن قبل از } هستش که میشه همون لیبل قبل از عکس. شما بجای اون آرایه هم می تونید 3 تا متغییر از نوع int جداگونه تعریف کنید و تفاوتی در کار نیست خداییش خیلی توضیح داره دستی نوشتن هم سخته سورس رو هم براتون قرار میدم تست کنید و هرجای سورس واستون گنگه بگید توضیح میدم فلج شدم آقا آموزش از ماس کلا واس ماس *** سورس کد جدید اضافه شد***** » توی این سورس از دیتابیس استفاده شده.یک مثال با دیتابیس زدیم تا برای دوستان ملموس تر باشه. رمز فایل : answercenter.ir Detect String(AnswerCenter.IR).rar سورس جدید » Detect String_Updated(AnswerCenter.IR).rar
  23. مجید آرتا

    سورس دیوار

    لینک سورس قرار داده شد. ظاهرا حواسشون نبوده پاک کرده بودن.