آموزش ساخت پنل متحرک

موزش ساخت پنل متحرک(میتونید با لمس و کشیدن به بالا و پایین حرکتش بدین)

یک باتن تعریف کنید و نوی کلیک باتن یک پنل تعریف کنید و ادد کنید به اکتیویتی (طوری که بعد کلیک پنل ادد بشه به اکتیویتی)

بعدش هم اینو بزارید و حالشو ببرید:

 

Sub Activity_Touch (Action As Int, X As Float, Y As Float)
If Action = Activity.ACTION_MOVE Then
pnazar.Top = y
End If
If Action = Activity.ACTION_UP Then
If y > 15%y Then
Cod.View_anim(500,pnazar,"SlideOutDown")
Else
pnazar.Top = 0
End If
End If
End Sub

ما پنل با نام pnazar ساختیم که توی کد های بالا هم هست
و این قسمت کد هم برای خشکل شدم کار هست

 

Cod.View_anim(500,pnazar,"SlideOutDown")

 

از کتابخونه انیمیشن ویو هست AnimationView

 

فرستاده شده : مجید گودرزی

حذف سفیدی یا سیاهی اول آپ

برای حذف اون صفحه سفید یا سیاهی که اول برنامه بهتون نشون میده در صورتی که از متریال استفاده نمی کنید کافیه کدهای زیر رو به منیفستتون اضافه کنید:

 

SetApplicationAttribute(android:theme, "@style/LightTheme")
CreateResource(values-v14, theme.xml,
<resources>
  <style
  name="LightTheme" parent="@android:style/Theme.Holo.Light">
   <item name="android:windowDisablePreview">true</item>
  </style>
</resources>
)

 

فرستاده شده : Mahdi_designer

حل کردن صفحه سفید اول اپ در بیسیک فور اندروید B4A

با سلام وسپاس 

 

خدمت کاربران عزیز وب سایت یاهو ۹۸ YAHOO

Continue reading “حل کردن صفحه سفید اول اپ در بیسیک فور اندروید B4A”

تشخیص زبان گوشی در بیسیک فور اندروید

با استفاده از کد زیر زبان گوشی کاربر را میتوانید در برنامه تشخیص بدهید .

 

ابتدا کتابخانه Reflection را فعال کنید و کد زیر را در اکتیویتی مورد نظرتان قرار دهید :

 

Sub PhoneLanguage As String
 Dim r As Reflector
 r.Target = r.RunStaticMethod("java.util.Locale", "getDefault", Null, Null)
 Return r.RunMethod("getDisplayName")
End Sub

 

برای مثال اگر بخواهید زبان فعلی گوشی کاربر را در یک لیبل نمایش دهید باید متن لیبل را بر روی PhoneLanguage قرار دهید :

 

label1.Text = PhoneLanguage

موفق باشید  🙂

قابلیتهای جدید B4A ورژن ۷٫X در بیسیک فور اندروید

نسخه جدید بیسیک فور اندروید اون هم با استفاده از نسخه ۸ جاوا و قابلیت های کاربردی فراوان ارائه شده است.

قابلیت های افزوده شده در این ورژن بیسیک قالبا راه حل مشکل بسیاری از سوالات دوستان می باشد..

بر همین اساس بر آن شدیم تا توضیح جامعی البته بتدریج درباره این قابلیت ها بیان کنیم.

Sleep

Sleep قابلیت ساده و کاربردی در برنامه نویسی با ورژن جدید بیسیک خواهد بود.

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

مثال اول

اسپلش رو اکثر بچه ها طراحی کردن. خب در روش مرسوم با استفاده از تایمر زمان ورود به اکتیویتی دوم مشخص میشد. ولی حالا خیلی سریع و ساده همانند کد زیر ساخته می شود

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout1")
	Sleep(3000)
	StartActivity("Menu")
	Activity.Finish
End Sub

در کد بالا بعد از سه ثانیه یا همون ۳۰۰۰ میلی ثانیه از زمان نمایش اسپلش اکتیویتی دوم نمایش داده میشود.

مثال دوم

اجرای رویداد بعد از زمان خاصی همیشه از سوالات دوستان بوده. مثلا با کلیک شدن یک دکمه افکت صوتی اجرا و با پایان اون دستورات مربوط به کلیک شدن اجرا بشوند.افکت های مختلف و زیبایی مثلا اجرای انیمیشن ها. و افکت های تصویری و صوتی فراوانی میشه براحتی به برنامه خودتان بسادگی اضافه کنید.

takeoff-gif.54879

کد زیر کد رویداد این کلیک ها می باشد.

Sub btn_Action
   Dim b As Button = Sender
   For i = 10 To 0 Step - 1
     b.Text = i
     Sleep(100)
   Next
   b.Text = "Takeoff!"
End Sub

نکته: همانگونه که در مثال های بالا مشاهده نمودید استفاده از Sleep در مواردی که یک یا چند مکث با تعداد مشخص و یا تعداد کم داشته باشید. کاربرد دارد و در غیر اینصورت استفاده از تایمر همانند قدیم مناسبتر می باشد.

 

قابلیت Wait For:


در این قابلیت ما می تونیم تمامی رویداد هارو در کنار کدی که می نویسیم داشته باشیم.یعنی دیگه نیازی نیست شما به صورت جداگانه برید رویداد مثلا JobDone  رو تعریف کنید.به وسیله WaitFor  هر جای ادیتور و در بلاک های مختلف می تونید رویداد هاتون رو صدا بزنید و کنترل کنید.

مزایای Wait For:

– نظم بهتر به کد نویسی

– جلوگیری از تداخل در رویداد ها ( بر فرض هندل راحت دو تا Job بدون اینکه برای هیچ کدوم تداخلی بوجود بیاد )

خب با مثال میریم جلو تا واستون قابل درک باشه.

مثال اولش رو واسه SQL  میزنیم، تا ببینیم به چ شکل عمل می کنه»

 – اضافه کردن رکورد به دیتابیس و خروجی که رویدادش به ما بر میگردونه:

For i = 1 To 1000
   sql.AddNonQueryToBatch("INSERT INTO table1 VALUES (?)", Array(Rnd(0, 100000)))
Next
Dim SenderFilter As Object = sql.ExecNonQueryBatch("SQL")
Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
Log("NonQuery: " & Success)

نکته: ما از توابعی استفاده می کنیم که بعد از اجرای اونها رویدادی رخ بده ( توابعی که رویداد هایی برای آن ها تعریف شده )

حالا اینجا ما تابع AddNonQueryToBatch  رو داریم که می تونیم اطلاعات رو درج کنیم.اطلاعات رو به وسیله این تابع وارد و با اجرای تابع ExecNonQueryBatch اطلاعات درج در دیتابیس می شوند.برای اینکه از وضعیت درج اطلاعات با خبر شویم، رویدادی رو اختصاص دادند.این رویداد یک متغییر از نوع Boolean  داره که مشخص می کنه اطلاعات با موفقیت به دیتابیس وارد شده اند یا خیر.

به راحتی تونستیم به جای اینکه رویداد SQL_NonQueryComplete رو جدا تعریف کنیم، دقیقا بعد از کدی که واسش تعریف شده نوشتیم.دقیقا توی جاوا به همین شکل می تونید عمل کنید. می تونید رویداد رو هرجای کد تعریف کنید.

مثال از گرفتن اطلاعات از دیتابیس »

Dim SenderFilter As Object = sql.ExecQueryAsync("SQL", "SELECT * FROM table1", Null)
	Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
	If Success Then
		Do While rs.NextRow
			Log(rs.GetInt2(0))
		Loop
		rs.Close
	Else
		Log(LastException)
	End If

خب فک نکنم پیچیدگی یا ابهامی توی این کد باشه.کوئری رو به تابع میدید و بعدش میایید توی رویدادش اطلاعات رو دریافت می کنید.در صورتی که مشکلی نباشه.اینجا هندل کردن خطاها خیلی بهتر شده.یعنی کد اجرا میشه و متغییر Success بهمون این اجازه رو میده تا خطایی در برناممون رخ نده و کنترلی داشته باشه.در مورد ResultSet  هم بگم که جای نگرانی نداره و چیز جدیدی نیست، همون Cursor  هستش.مشتق شده از Cursor  هستش.( جزئی از شی گرایی هستش که هر شیی از یک شیی دیگه مشتق بشه تمامی وِِِیژگی ها و قابلیت های والدش رو به ارث میبره).

 

قابلیت Wait For:

مثالی از استفادش در OkHttpUtils2  »

Dim j As HttpJob
j.Initialize("", Me)
j.Download("https://www.google.com") 
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
   Log(j.GetString)
End If
j.Release

ساده ترین مثال ممکن  لینک رو میدی بهش، رویداد رو در کنارش اضافه می کنی و نتیجه رو لاگ می کنید سخته واقعا ؟؟!!

 

مثال بعدی »

ub DownloadQuote
   Dim j As HttpJob
   j.Initialize("", Me) 'name is empty as it is no longer needed
   j.Download("http://quotesondesign.com/wp-json/posts?filter[orderby]=rand")
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     'The result is a json string. We parse it and log the fields.
     Dim jp As JSONParser
     jp.Initialize(j.GetString)
     Dim quotes As List = jp.NextArray
     For Each quot As Map In quotes
       Log("Title: " & quot.Get("title"))
       Log("Content: " & quot.Get("content"))
     Next
   End If
   j.Release
End Sub

خب اینم میاد یه سری پست رو به صورت جیسون میگیره و پردازش می کنه.عمل دانلود انجام میشه اگه موفقیت امیز بود مقادیرش رو میگیره و میریزه داخل شی جیسون.دیگه ادامش چیز جدیدی نداره.

استفاده از کد بالا هم فقط کافیه تابع DownloadQuote  رو یه جایی صدا بزنید.

 

مثال بعدی »

Sub DownloadTwoLinks
   Dim j As HttpJob
   j.Initialize("", Me) 'name is empty as it is no longer needed
   j.Download("https://www.google.com")
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     Log(j.GetString)
   End If
   j.Release
   'second request
   Dim j As HttpJob 'redim and initialize
   j.Initialize("", Me)
   j.Download("https://www.duckduckgo.com")
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     Log(j.GetString)
   End If
   j.Release
End Sub

خب اینجا هم دو تا لینک رو میدیم بهش تا دانلود کنه واسمون.هر جای کد واستون نا مفهوم بود، کد رو خودتون تست کنید و ببینید به چ شکل عمل می کنه.می تونید با Log  گذاشتن نحوه عملکردش رو ببینید.

 

مثال بعدی »


Sub Activity_Create(FirstTime As Boolean)
   DownloadMany(Array("http://www.google.com", "http://duckduckgo.com", "http://bing.com"))
End Sub

Sub DownloadMany (links As List)
   For Each link As String In links
     Dim j As HttpJob
     j.Initialize("", Me) 'name is empty as it is no longer needed
     j.Download(link)
     Wait For (j) JobDone(j As HttpJob)
     If j.Success Then
       Log("Current link: " & link)
       Log(j.GetString)
     End If
     j.Release
   Next
End Su

دانلود محتوای سایت ها.خیلی شیک و معمولی.

 

مثال بعدی »

Sub DownloadImage(Link As String, iv As ImageView)
   Dim j As HttpJob
   j.Initialize("", Me)
   j.Download(Link)
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     iv.Bitmap = j.GetBitmap
   End If
   j.Release
End Sub

 

دانلود عکس و قرار دادنش توی ایمیج ویو، نحوه استفادش:

 

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("1")
   DownloadImage("https://b4x-4c17.kxcdn.com/android/forum/data/avatars/m/0/1.jpg?1469350209", ImageView1)
   DownloadImage("https://b4x-4c17.kxcdn.com/images3/code.png", ImageView2)
End Sub

 

این نحوه ی استفاده از قابلیت Wait For  هستش تا واسه ی شما جا بیوفته.

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

پیروز باشید .

 

مدرس : آرتا و مهدی نژاد

مخفی کردن آیکون برنامه در بیسیک فور اندروید

در این قسمت یک کد بسیار کاربردی را قرار داده ایم که با استفاده از آن میتوانید آیکون برنامه خودتون را مخفی کنید به طوری که در لیست برنامه ها نمایش داده نشه ! برای استفاده از این کد کتابخانه Reflection را فعال کنید و کد زیر را توی اکتیویتی مورد نظرتون قرار بدین :

 

Sub HideApp(Enable As Boolean)
Dim r As Reflector
Dim cn As Object = r.CreateObject2("android.content.ComponentName", _
Array As Object(Application.PackageName, Application.PackageName&".main"), _
Array As String("java.lang.String", "java.lang.String"))
r.Target = r.GetContext
r.Target = r.RunMethod("getPackageManager")
Dim e As Int
If Enable = True Then
e = 2
Else
e = 1
End If
r.Target = r.RunMethod4("setComponentEnabledSetting", Array As Object(cn, e, 0), _
Array As String("android.content.ComponentName", "java.lang.int", "java.lang.int"))
End Sub

 

حالا برای مخفی کردن آیکون کافیه که کد زیر را در بخش مورد نظرتون قرار بدین ( زمانی که میخواهید آیکون مخفی بشه ) :

 

HideApp(True)
/pre>

و برای اینکه برنامه را مجددا از حالت مخفی خارج کنید کافیه که از کد زیر استفاده کنید :

 

HideApp(False)
/pre>

در ضمن بهتره که این کد ها را در اکتیویتی Main استفاده کنید …


	

بررسی روشن بودن و خاموش بودن wifi در بیسیک فور اندروید

با سلام و سپاس

 

اگر سوالی بود در نظرات درج کنید تا پاسخگو باشیم.

 

موفق باشید.

 

کد زیر رو در مینفیست خودتون قرار بدید:

 

AddReceiverText(SendNotification,
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>)

و کد زیر هم خودش ساب هست که وصل بودن رو بررسی می کنه و برمی گردونه

Sub Service_Start (StartingIntent As Intent)
         If StartingIntent.Action = "android.net.wifi.STATE_CHANGE" Then
            If Not(StartingIntent.HasExtra("bssid")) Then Return
            Dim jo As JavaObject = StartingIntent
            Dim NetInfo As Object = jo.RunMethodJO("getParcelableExtra",Array("networkInfo")).RunMethod("getDetailedState",Null)
            Dim State As JavaObject : State.InitializeStatic("android.net.NetworkInfo.DetailedState")
            If (NetInfo <> State.GetField("DISCONNECTED") And NetInfo <> State.GetField("CONNECTED")) Then Return           
            LogColor("SentNotification:Service_Start: Connection event: "&NetInfo,Colors.Red)
       end if

اجرا کردا سرویسی از آپی به آپ دیگر در بیسیک فور اندروید

با  سلام و درود فروان

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

 

منتهی باید اون سرویس قابلیت exported ش برابر با true باشه که بتونید اجراش کنید.

 

حتی اگه میخواین سرویس های اپ خودتون هم قابلیت اجرا توسط اپ های دیگه داشته باشه رو باید توی مانیفست برا سرویس یه properties براش تعریف کنید با عنوان android:exported و مقدارشو true بدید.

 

Sub StartAnotherAppService(PackageName As String,Servicename As String)

Dim int1 As Intent
int1.Initialize("","")
int1.SetComponent(PackageName & "/." & Servicename)
StartService(int1)

End Sub

 

گرداورنده : آقاخانی 

ایجاد فاصله بین دو متن در بیسیک فور اندروید

با سلام و سپاس

 

با این تکه کد شما میتونید بین دو متن در فاصله ایجاد کنید .

 

ابتدا تیک کتابخانه  reflection بزنید و بعد ساب زیر رو اضافه کنید :

 

sub setLineSpace (lbl as label,meghdar as float)

  Dim r As Reflector
  r.Target = lbl
  r.RunMethod3("setLineSpacing",1, "java.lang.float", meghdar, "java.lang.float")

end sub

 




setLineSpace(lbl1,1.3)

 

جای اون ۱٫۳ میتونی از مقادیر دیگه استفاده کنید بنا به استفاده خودتون

تغییر فونت متن تب های DSTabLayout در AHviewPager و دیزاین ساپورت

با سپاس 

 

با این تکه که میتوانید فونت های  متن تب های DSTabLayout در AHviewPager و دیزاین ساپورت رو تغییر بدهید .

 

کلیت کار به این صورته که میایم با یک حلقه فور تمام لیبل های parent ای که DSTabLayout بهش اد شده رو میگیریم و فونت شون رو تغییر میدیم.

معمولاً parent موردنظر خود اکتیویتی هست :

 

For Each v As View In Activity.GetAllViewsRecursive
If v Is Label Then
Dim lb As Label=v
lb.Typeface=Typeface.LoadFromAssets("font.ttf")
End If
Next

 

 

گرداورنده : نیکروان 

انتخاب یک عکس از گالری و قرار دادن در ایمیج ویو بیسیک فور اندروید

درود دوستان

کتابخانه phone رو تیک بزنید

ی دکمه و ی ایمیج ویو به لی اوت اضافه کنید

داخل رویداد کلیک دکمه کد زیر رو قرار بدید

 

Sub Button1_Click
	Dim selectedimage As ContentChooser
	selectedimage.Initialize("imgChooser")
	selectedimage.show("image/*", "Choose image")
End Sub

 

و ساب زیر رو هم به ته اکتویتی تون اضافه کنید :

 

Sub imgChooser_Result(Success As Boolean, Dir As String, FileName As String)
	If Success Then
		ImageView1.Bitmap = LoadBitmap(Dir, FileName)
		ImageView1.Gravity = Gravity.FILL
	Else
		ToastMessageShow("Nessuna Immagine Selezionata", True)
	End If
End Sub

 

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

گوش دادن به تغییر تاریخ گوشی(مینی تقویم)

با کد پایین متوجه میشید که چه زمانی تاریخ گوشی تعویض میشه.

 

(حالا تاریخ ساعت ۱۲ شب تغییر کنه یا خود کاربر هر زمان تغییر بده) این اینتنت از بروداکست به شما خبر میده.

 

یکی از استفاده هاش اینه که اگر تقویمی درست کرده باشین و تاریخ رو توی نوتیفیکیشن قرار میدادید متوجه میشین که با تغییر تاریخ نوتیفیکیشن شما تغییر تاریخ نمیده ولی با کد پایین اینکار میشه و نمونه سورس در همین رابطه(مینی تقویم) هم گذاشتم.

 

Sub Service_Start (StartingIntent As Intent)
	Dim PNBroadcast As PNBroadcastReceiver
	PNBroadcast.Initialize("PNBroadcast")
	PNBroadcast.AddAction("android.intent.action.TIME_SET")
	PNBroadcast.RegisterReceiver
End Sub

Sub PNBroadcast_OnReceive(Action As String,keys() As String,Data As Object)
ToastMessageShow("تاریخ تغییر کرد",False)
End Sub

 

منبع : داداشم سلمان فردان 

سورس کد گرفتن مشخصات از کاربر در اینترنت ( json )

با سلام و خیر مقدم شما کاربران عزیز 

 

سورسی که امروز براتون مهیا کردم api  یکی از معتبرترین سایت های گرفتن مشخصات و مختصات و آی پی کاربران در برنامه شما میباشد .

 

سایت مورد نظرhttp://ip-api.com

 

این سایت و این سورس خیلی کار آمد هست .

 

 

به این صورت که شما اطلاعات رو به چندین حالت میتونید بگیرید :

 

  • json
  • batch
  • csv
  • line
  • php
  • xml

 

من یک نمونه از دریافت به صورت جیسون رو براتون میزارم که در این سورس یا قطعه کد ما اومدیم همه رو لاگ کردیم .

 

امید واردم مفید واقع گردد .

 

Sub Activity_Create(FirstTime As Boolean)

	Dim http As HttpJob
	http.Initialize("http",Me)
	http.Download("http://ip-api.com/json")

End Sub



Sub jobdone(job As HttpJob)

	Dim parser As JSONParser
	parser.Initialize(job.GetString)
	Dim root As Map = parser.NextObject
	Dim zip As String
	
	Log( root.Get("zip"))
	
	Dim country As String
	
	Log( root.Get("country"))
	
	Dim city As String
	
	Log( root.Get("city"))
	
	Dim org As String
	
	Log( root.Get("org"))
	
	Dim timezone As String
	
	Log( root.Get("timezone"))
	
	Dim isp As String
	
	Log(	 root.Get("isp"))
	
	Dim query As String
	
	Log( root.Get("query"))
	
	Dim regionName As String
	
	Log( root.Get("regionName"))
	
	Dim lon As Double
	
	Log(	 root.Get("lon"))
	
	Dim As As String
	
	Log( root.Get("as"))
	
	Dim countryCode As String
	
	Log( root.Get("countryCode"))
	
	Dim region As String
	
	Log(	 root.Get("region"))
	
	Dim lat As Double
	
	Log( root.Get("lat"))
	
	Dim status As String
	
	Log( root.Get("status"))

End Sub

 

تکه کدبسیار ضروری برای نوشتن برنامه هایی مثل قرآن کریم با معنی

با سلام و سپاس خدمت دوستان عزیز سایت یاهو ۹۸ 

 

یکی از دوستان کاربرای گل سایت درخواست داده بود که در دیتابیس ۳ ستون داره :

 

  • id 
  • onvan
  • sharh

 

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

 

بنده کد رو به شکل زیر نوشتم و برای دوستان دیگری که ( خیلی ها مشل داشتن ) احتیاج دارن به این کد ، در سایت گذاشتم که استفاده کنند .

 

امیدوارم مفید واقع بشه.

 

 

تکه کد باز کردن مستقیم هر نوع تلگرامی

سلام به کاربرام گل سایت یاهو ۹۸

 

قبلا ما یه تکه کدی داشتیم که مستقیم میومد هر تلگرامی که نصب بود رو باز میکرد و به کانال یا آیدی یا گروهی که داده بودیم میرفت .

 

که جدبدا دیدیم موبوگرام اومده و تبلیغات رو از آپ های دیگر مسدود کرده چون ما تو تکه کدمون گفتیم هر تلگرامی رو

 

در این روش ما میایم شرط میزارم برای پکیج نیم برنامه چون در حال حاضر فقط موبوگرام اینگونه هست و بعد میایم میگیم اگر نبود هر تلگرامی رو مستقیم باز کن به صورت زیر

 

Dim far As Intent
Dim pm As PackageManager
far=pm.GetApplicationIntent("com.hanista.mobogram")
If far.IsInitialized Then
'کد اولی
Dim i As Intent
i.Initialize(i.ACTION_VIEW, "http://telegram.me/yahoo98")
Dim jo As JavaObject = i
jo.RunMethod("setPackage", Array As Object("com.hanista.mobogram"))
StartActivity(ii)

Else

'کد دومی
Dim i2 As Intent
i2.initialize (i2.action_view,"tg://resolve?domain=yahoo98")
StartActivity (i22)

End If

 

ان شا ء الله که مفید واقع شده باشه .