امیرحسین قاسمی
-
تعداد ارسال ها
532 -
تاریخ عضویت
-
آخرین بازدید
-
روز های برد
122
نوع محتوا
نمایه ها
فروشگاه
تالارهای گفتگو
بخش دریافت
پست ها ارسال شده توسط امیرحسین قاسمی
-
-
سلام و عرض ادب خدمت همه دوستان عزیز
توی اندروید امکان ساخت وای فای جعلی وجود داره؟
-
سلام
من به این شکل بخشی از متن یک لیبل رو رنگی و همچنین قابل کلیک میکنم:
#If java import android.graphics.Color; import android.text.SpannableStringBuilder; import android.text.Spannable; import android.text.style.ClickableSpan; import android.text.style.ForegroundColorSpan; import android.view.View; import android.widget.TextView; import android.widget.Toast; import android.text.method.LinkMovementMethod; public static void makeTextViewClickable(TextView textView, int color, String metaChar) { SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(textView.getText()); String text = textView.getText().toString(); int startIndex = text.indexOf(metaChar) + 1; int endIndex = text.indexOf(metaChar, startIndex); String extractedText = text.substring(startIndex, endIndex); int start = textView.getText().toString().indexOf(extractedText); int end = start + extractedText.length(); ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(widget.getContext(), "کلیک شد", Toast.LENGTH_SHORT).show(); } }; spannableStringBuilder.setSpan(clickableSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableStringBuilder.setSpan(new ForegroundColorSpan(color), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); int index = spannableStringBuilder.toString().indexOf("$"); while (index >= 0) { spannableStringBuilder.replace(index, index + 1, ""); index = spannableStringBuilder.toString().indexOf("$", index); } textView.setText(spannableStringBuilder); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setHighlightColor(Color.TRANSPARENT); } #End If
از تابع بالا به این شکل استفاده میکنم:
Dim jo As JavaObject jo.InitializeContext jo.RunMethod("makeTextViewClickable",Array(Label10,Colors.Red,"$"))
همه چی به درستی کار میکنه اما پایین متن قابل کلیک شده یه خط ایجاد میشه:
من چطوری میتونم این زیرخط رو حذف کنم؟
- 1
-
۱۲ ساعت قبل، محمدرضا شاهپیری گفته است:
روش زیر رو استفاده کنید. تا حد خیلی زیادی مشکل رو حل میکنه.
اول فایل زیپ رو دانلود و تو مسیر پروژه اکسترکت کنید
و توی Region Project Attributes کد زیر رو اضافه کنید
#AdditionalRes: ..\res
حالا کدهای زیر رو اضافه کنید به اکتیویتی
#If java import android.util.TypedValue; import android.widget.TextView; import java.lang.reflect.Field; private int getResId(String variableName) { Field field; int resId = 0; try { field = R.dimen.class.getField(variableName); try { field.setAccessible(true); resId = field.getInt(null); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return resId; } public void setTextSize(TextView txt , int textSize){ try { int resourceID =getResId("_"+textSize+"ssp"); txt.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(resourceID)); }catch (Exception e) { e.printStackTrace(); } } public float getDpSize(int textSize) { try { int resourceID = getResId("_" + textSize + "sdp"); return getResources().getDimension(resourceID); } catch (Exception e) { e.printStackTrace(); } return 0; } #End If
به شکل زیر استفاده کنید
Dim jo As JavaObject:jo.InitializeContext jo.RunMethod("setTextSize",Array(EditText1,15)) Dim size100Dp As Int=jo.RunMethod("getDpSize",Array(100)) Button2.Width=size100Dp Button2.Height=size100Dp
ببخشید کدوم فایل zip؟
-
۳۵ دقیقه قبل، محمدرضا شاهپیری گفته است:
سلام منظورتون اینه موقه تایپ و اینتر زدن ارتفاع زیاد بشه؟
لطفا تصویر زیر رو ببینید:
اندازه متن از اندازه EditText بیشتره و این باعث شده که نصف متن داخل EditText نمایش داده نشه!
الان توی دستگاهی با صفحه نمایش بزرگتر (مثلا تبلت ها) ممکنه مشکلی وجود نداشته باشه چون به مراتب EditText هم بزرگتر میشه و متن کامل نمایش داده میشه اما توی گوشی ها و صفحه نمایش های کوچیک چنین اتفاقی رخ میده.
برای لیبل راه حل وجود داره که توی همه دستگاه ها متن داخلش فیت بشه اما برای ادیت تکست چیزی پیدا نکردم!
-
۳۴ دقیقه قبل، DexterFstone گفته است:
شما بجای لیبل ادیت تکست بنویسید باید جواب بده
همه اینارو قبلا تست کردم این روش همیشه جواب نمیده و مشکل داره
-
۵۷ دقیقه قبل، DexterFstone گفته است:
برای اندازه ویوها من dip میدم و تمامی دستگاه ها درست نمایش میده اگر از % استفاده میکنید ب مشکل میخورید
ول برای چیزی ک شما میخواین فکنم StringUtil متد مد نظر داره MeasureMultilineTextHeight
Dim Label1 As Label Label1.Initialize("") Label1.Text = "this is a long sentence, and we need to " _ & "know the height required in order To show it completely." Label1.TextSize = 20 Activity.AddView(Label1, 10dip, 10dip, 200dip, 30dip) Dim su As StringUtils Label1.Height = su.MeasureMultilineTextHeight(Label1, Label1.Text)
موفق باشید
ممنونم از راهنماییتون،
اما این کد شما برای لیبل هست نه ادیت تکست!!
-
سلام،
برای اینکه سایز متن داخل ادیت تکست با ارتفاع ادیت تکست هماهنگ بشه به طوری که بیرون نزنه چه راه استانداردی هست؟
EditText1.TextSize=40
الان ممکنه توی تبلت ها متن داخل ادیت تکست فیت باشه اما توی گوشی ها از بالا و پایین بیرون بزنه!
-
سلام به همه رفقای انسرسنتری
خب ما اومدیم تهِ یه سالِ دیگه! سالی که پر بود از بالا و پایین، از خنده و اشک، از موفقیت و شکست، از تجربههای جدید و درسهای آموزنده.
با نزدیک شدن به جشن باستانی نوروز و آغاز سال نو، فرصتی دیدم تا به شما عزیزان پیشاپیش سال نو را تبریک بگویم و برایتان سالی پربرکت، شاد و پر از سلامتی آرزو کنم
امیدوارم سال 1403 برای همه ما سالی سرشار از موفقیت، پیشرفت و شادکامی باشه. سالی که در آن شاهد رشد و شکوفایی روزافزون تک تک مردم دوست داشتنی ایران به خصوص دوستان گل انسرسنتر باشیم.
حالا وقتشه که یه نفس عمیق بکشیم، به سال گذشته نگاه کنیم و از تجربههامون درس بگیریم.
بیاین توی این تاپیک، خاطرات، تجربیات و اتفاقاتِ سالِ 1402 رو با هم به اشتراک بذاریم.
بگیم که این سال چطور گذشت، چه چالشهایی داشتیم، چه موفقیتهایی کسب کردیم، چه درسهایی از این سال گرفتیم و برای سال 1403 چه برنامههایی داریم!
مطمئنم که خوندنِ خاطراتِ شما، برای بقیه رفقای انسرسنتری هم جذاب و آموزنده خواهد بود.
- 1
- 1
-
18 ساعت قبل، محمدرضا شاهپیری گفته است:
شما متد onResourceReady رو کلا برای چی میخواین؟ با همون دستور .into(img) عکس توی imageview لود میشه
وقتی عکس لود شد باید اندازه ایمیج ویو تنظیم بشه
-
۴ ساعت قبل، محمدرضا شاهپیری گفته است:
باید دستور intoTarget رو بزنید نه into(img)
بسیار خب ممنونم از راهنماییتون. الان درست شد و glide_onResourceReady فراخوانی شد.
اما اگه چندتا ImageView داشتیم چیکار کنیم؟
For i= 0 To 9 Dim img As ImageView img.Initialize("o") Activity.AddView(img,40%x,i*10%y,10%x,10%y) glide.With("glide").asBitmap.load("https://www.w3schools.com/w3css/img_lights.jpg").intoTarget Next
وقتی ساب glide_onResourceReady صدا زده شد ما نمیدونیم که این تصویر (resource) برای کدوم ImageView هست!
-
۱۱ ساعت قبل، محمدرضا شاهپیری گفته است:
سلام و درود
از کتابخونه زیر استفاده کنید ببینید اکی هست یا نه
اینبار ساب glide_onResourceReady همون دفعه اولم صدا زده نشد:
Sub Globals Dim glide As PersianGlide Dim img As ImageView End Sub Sub Activity_Create(FirstTime As Boolean) img.Initialize("o") Activity.AddView(img,30%x,40%x,40%x,40%y) glide.With("glide").asBitmap.load("https://www.w3schools.com/w3css/img_lights.jpg").into(img) End Sub Sub glide_onResourceReady(resource As Object) Log("onResourceReady") End Sub
-
سلام
من به این شکل از Amir Glide برای لود تصویر استفاده میکنم:Dim kj As Amir_GlideRequestOptions Dim kr As Amir_GlideTransformation Dim Glide As Amir_Glide Glide.Load("https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/200px-Rotating_earth_%28large%29.gif").Apply(kj.Transform(kr.RoundedCorners(10,0dip)).Placeholder(bd)).Listener("mGlide",Null).Into(imageView) Sub mGlide_onResourceReady(Data As Object,Model As Object,DataSourceName As String,isFirstResource As Boolean) As Boolean Log("Resource Ready") End Sub
وقتی که برنامه رو برای اولین بار اجرا میکنم و تصویر لود میشه بدون هیچ مشکلی ساب mGlide_onResourceReady صدا زده میشه. اما اگه ایمیج ویو رو Remove کنم و همین عملیات رو مجدد انجام بدم ساب mGlide_onResourceReady صدا زده نمیشه و همچنین تصویر هم لود نمیشه! اما اگه اپلیکیشن رو باز و بسته کنم درست میشه!
من فکر میکنم مشکل از سیستم cache گلاید باشه. cache خودکار رو غیرفعال کردم برای بار دوم و سوم درست شد اما بار چهارم که ایمیج ویو رو Remove کردم و دوباره ساختم باز تصویر لود نشد! (البته من میخوام cache فعال باشه)
کسی دقیقا میدونه دلیل این مشکل چیه؟
-
در ۱۴۰۲/۱۰/۲۵ در ۰۰:۴۷، Majid.۲۰۱۹ گفته است:
هاای دمت گرم
نجاتمون دادی
میگم دادا این کارش چیه
سلام
وقتی برنامه کامپایل میشه کدها و کلاس های برنامه توی یه بسته ای به فرمت dex قرار میگیرن.
به زبان ساده وقتی که کدهای پروژه زیاد باشه توی یه فایل dex جا نمیشه و باعث به وجود اومدن همین ارور شما میشه.
حالا راه حل چیه؟
کلاس ها و کدهای پروژه باید توی دوتا فایل dex یا بیشتر بسته بندی بشن که با کد زیر به کامپایلر اجازه میدیم این کار رو انجام بده:
#MultiDex: True
- 1
-
۲۲ ساعت قبل، محمدرضا شاهپیری گفته است:
سلام و درود. کتابخانه به روز شد نسخه جدید رو دریافت کنید
سلام
تفاوت این نسخه با نسخه قبلی چی هست؟
من برای برنامه خودم چند روز قبل با نسخه قدیمی کتابخونه آپدیت دادم. ممکنه مشکلی پیش بیاد؟
-
آقای شاهپیری دستتون درد نکنه این مشکل رو دقیق تر بررسی کنین خیلی ممنون میشم.
-
به عنوان مثال این نظر رو ببینین که یکی از کاربران گذاشته:
-
12 ساعت قبل، محمدرضا شاهپیری گفته است:
سلام و درود
مشکل دقیقا چی هست؟ خطای خاصی بر میگرده؟
نیاز به اطلاعات دقیقتر هست
برای من مشکلی وجود نداره و من تا به حال خودم به چنین مشکلی برنخوردم. اما بعضی از کاربران توی نظرات برنامه میگن سکه خریدیم واریز نشد.
از لحاظ برنامه نویسی هم مشکلی نداره بعد خرید اگه اون تابع onIabPurchaseFinished صدا زده بشه باید سکه براشون واریز بشه ولی فکر کنم این تابع صدا زده نمیشه...
Private Sub myket_onIabPurchaseFinished(result As IabResult,purchase As Purchase) Try If purchase.IsInitialized Then If result.isSuccessful=True Then CallSubDelayed2(Me,"consumeAsync",purchase) Else MyToast.ToastMessage("پرداخت ناموفق بود",False) End If End If Catch MyToast.ToastMessage("خطایی رخ داد",False) End Try End Sub Sub consumeAsync(purchase As Purchase) Try adp.creat_map.Clear adp.creat_map.Put("ac",5) adp.creat_map.Put("acc",2) adp.creat_map.Put("orderId",purchase.orderId) adp.creat_map.Put("productId",purchase.Sku) adp.creat_map.Put("purchaseTime",purchase.purchaseTime) adp.host(Me,panelmain,panelmain,True,"hd1","puy_eshterak","update1/sign",adp.creat_map) myket.consumeAsync(purchase) Catch MyToast.ToastMessage("پرداخت ناموفق بود",False) End Try End Sub
-
چرا رسیدگی نمیشه؟
-
سلام
کتابخونه روی بیشتر گوشی ها کار میکنه اما بعضی از کاربران گزارش دادن که بعد از پرداخت محصولی (سکه) دریافت نمیکنن...
-
در ۱۴۰۱/۱۰/۱۱ در 22:35، Babak22 گفته است:
سلام.
ممنون از شما بابت زحمتی که کشیدید.
من وقتی این سورس کد رو اجرا می کنم در همون اول در قسمت
Private Sub myket_onIabSetupFinished(result As IabResult)
Log(result.isSuccessful)
Log(result.ErrorMsg)
End Subایراد Billing service unavailable on device. (response: 3:Billing Unavailable) میگیره
publicKey رو هم چک کردم درسته
این کد رو به مانیفست اضافه کردین؟
CreateResourceFromFile(Macro, MyketBilling.Manifest)
-
در ۱۴۰۱/۱۰/۱۱ در 13:01، Phoenix Phoenixinoo گفته است:
با سلام. دوتا محصول ایجاد کردم داخل بازار. بعد از پرداخت یکی از محصولات، هر دوی اونا باز میشه. در صورتی که کد ها کاملا متفاوت هستند و دو محصول متفاوت ایجاد شده
سلام
دوست عزیز مشکل توی کتابخونه نیست. وقتی خرید انجام میشه تابع EventName_purchaseSucceed صدا زده میشه. شما باید بعد پرداخت موفقیت آمیز بیای و شناسه رو چک کنی ببینی کاربر کدوم محصول رو خریده و فقط همون محصول رو بهش تحویل بدی!
If purchaseInfo.productId="MyProduct1" Then Log("باید محصول اول تحویل داده بشه") Else if purchaseInfo.productId="MyProduct2" Then Log("باید محصول دوم تحویل داده بشه") End If
- 1
-
14 ساعت قبل، اندروید اولترا گفته است:
پوزش بابت ارسال دو پیام پیاپی. در صورت نصب نبودن بازار به روی موبایل، برنامه کرش میکنه
موقع صدا زدن متد purchaseProduct از Try Catch استفاده کنین:
Try Dim MyStr As String="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" Dim Payload As String For i=0 To 8 Payload=Payload&MyStr.CharAt(Rnd(0,MyStr.Length-1)) Next Bazaar.purchaseProduct("MyProductID",Payload.Trim) Catch ToastMessageShow("بازار نصب نیست یا خطایی به وجود آمد",False) End Try
یه راه دیگه چک کردن نصب بودن بازار روی گوشی قبل از صدا زدن متد purchaseProduct هست:
Dim PM As PackageManager If PM.GetInstalledPackages.IndexOf("com.farsitel.bazaar")<>-1 Then Dim MyStr As String="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" Dim Payload As String For i=0 To 8 Payload=Payload&MyStr.CharAt(Rnd(0,MyStr.Length-1)) Next Bazaar.purchaseProduct("MyProductID",Payload.Trim) Else ToastMessageShow("بازار نصب نیست",False) End If
در روش دوم باید این دسترسی رو به مانیفست اضافه کنین تا توی اندرویدهای بالاتر به مشکل نخورین:
AddPermission(android.permission.QUERY_ALL_PACKAGES)
این یه دسترسی حساسی هست که موقع فرستادن اپلیکیشن به بازار برای انتشار باید دلیل استفاده از این دسترسی رو توضیح بدین و بگین صرفا جهت چک کردن نصب بودن بازار استفاده میشه تا از فورس کلوز جلوگیری کنه و از اون هیچ استفاده دیگه ای نمیشه.
-
ویرایش: احتمالا مشکل از خود مایکت بوده، امروز باز تست کردم درست کار کرد و مشکلی نداشت. اون یکی برنامه هاهم که میگفتم تست کردم دیروز درست کار میکردن احتمالا از نسخه قدیمی کتابخونه مایکت استفاده میکنن.
بنابراین دوستان باخیال راحت استفاده کنن.
-
آقای شاهپیری اینو درست نکردین؟
پیاده سازی تبلیغ همسان ادیوری در B4A
در پرسش و پاسخ (بیسیک4اندروید)
ارسال شده در
سلام،
توی مستندات B4A ادیوری نحوه پیاده سازی تبلیغ همسان توضیح داده نشده و کتابخونه رسمی ادیوری هم متدی برای اینکار نداره!
ولی توی مستندات اندروید استودیو اومده از طریق xml پیاده سازی کرده...