رفتن به مطلب

ارسال‌های توصیه شده

این سورس را میخواهیم بسازیم:

https://aparat.com/v/osgpkrg

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

سورس

#Region  Project Attributes 
	#ApplicationLabel: Animation Wave
	#VersionCode: 1
	#VersionName: 1.00
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: true
	#IncludeTitle: false
	#Extends :  androidx.appcompat.app.AppCompatActivity
#End Region

	#MultiDex:true
    

Sub Process_Globals
	
End Sub

Sub Globals
	Dim WaveView As AXWaveView
	Dim LineWaveView As AXLineWaveView

	Dim chk,chk2 As CheckBox
	Private Panel1 As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.Color = 0xFF1C2229
	
	If File.Exists(File.DirInternal,"db.db")=False Then
		File.Copy(File.DirAssets,"db.db",File.DirInternal,"db.db")
	End If
	
	Dim Seekbar As ACSeekBar
	Seekbar.Initialize("Seekbar")
	Activity.AddView(Seekbar,16dip,16dip,100%x-32dip,32dip)
	
	WaveView.Initialize
	Dim Size As Int = 250dip
	Activity.AddView(WaveView,50%x - (Size/2), 50%y - (Size/2) , Size, Size)
	InitWaveView
	
	Dim MicImage As ImageView
	MicImage.Initialize("")
	Size = 64dip
	Activity.AddView(MicImage,50%x - (Size/2), 50%y - (Size/2) , Size, Size)
	Dim BD As BitmapDrawable
	BD.Initialize(LoadBitmap(File.DirAssets,"mic.png"))
	Dim AC As AppCompat
	AC.SetDrawableTint(BD,Colors.White)
	MicImage.Background = BD
	
	LineWaveView.Initialize
	Activity.AddView(LineWaveView,0,100%y-36dip,100%x,36dip)
	InitLineWaveView
	
	chk.Initialize("RedState")
	chk.TextColor = Colors.White
	chk.Checked = False
	Activity.AddView(chk , 16dip , Seekbar.Top + Seekbar.Height + 20dip , 140dip , 40dip)
	chk.Text = "Red State"

	chk2.Initialize("WaveEnabled")
	chk2.TextColor = Colors.White
	chk2.Checked = True
	Activity.AddView(chk2 , 16dip , chk.Top + chk.Height + 20dip , 140dip , 40dip)
	chk2.Text = "WaveEnabled"

	Panel1.Initialize("")
	Activity.AddView(Panel1,0,0,100%x,100%y)
	Panel1.Visible=False
End Sub

Private Sub activity_KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event
	If KeyCode=KeyCodes.KEYCODE_BACK Then
		If Panel1.Visible=True Then
			Panel1.Visible=False
		End If
		Return True
	End If
End Sub

Private Sub RedState_CheckedChange(Checked As Boolean)
	If chk2.Checked = False Then chk2.Checked = True
	WaveView.PrepareToRemove(Checked)
End Sub

Private Sub WaveEnabled_CheckedChange(Checked As Boolean)
	WaveView.PrepareToRemoveWaveEnabled = Not(Checked)
	Dim st As AXWeavingState = WaveView.CurrentState
	st.SupportWaves = Checked
	WaveView.Invalidate
End Sub

Private Sub InitWaveView
		Dim State1 As AXWeavingState
	State1.Initialize3(1,WaveView.CreateRadialShader(200,0xff2BCEFF,0xff0976E3))
	State1.Width = WaveView.Width + 20dip
	State1.Height = State1.Width
	WaveView.AddState(1,State1)
	
	Dim State2 As AXWeavingState
	State2.Initialize(2,WaveView.CreateRadialShader(200,0xff12B522,0xff00D6C1),"WaveState2")
	State2.Width = WaveView.Width + 20dip
	State2.Height = State2.Width
	WaveView.AddState(2,State2)
	
	WaveView.SetState(1)
	WaveView.CircleEnabled = True
	WaveView.Amplitude = -1
	
	Dim Reflection As Reflector
	Reflection.Target = WaveView
	Reflection.SetOnClickListener("Wave_Click")
	
	WaveView.PrepareToRemoveColor = Colors.Red
	WaveView.PrepareToRemoveSize = 250dip
	WaveView.PrepareToRemoveAngle = 45.0f
	WaveView.PrepareToRemoveShader = WaveView.CreateLinearShader(350dip,0xFFD54141, 0xFFF76E7E,Colors.Transparent)
	WaveView.PrepareToRemoveWaveEnabled = False
End Sub

Private Sub WaveState2_UpdateTargets (State As AXWeavingState)
	State.TargetX = 0.2f + 0.1f * Rnd(1,100) / 100
	State.TargetY = 0.7f + 0.1f * Rnd(1,100) / 100
End Sub

Private Sub Wave_Click (Tag As Object)
	Dim State As AXWeavingState = WaveView.CurrentState
	If State.State = 1 Then
		WaveView.SetState(2)
		LineWaveView.SetState(2)
		SetNavigationBarColor(0xff00D6C1)
		Else
		WaveView.SetState(1)
		LineWaveView.SetState(1)
		SetNavigationBarColor(0xff0976E3)
	End If
End Sub

Private Sub Seekbar_ValueChanged (Value As Int, UserChanged As Boolean)
	WaveView.Amplitude = Value * WaveView.MAX_AMPLITUDE / 100
	LineWaveView.Amplitude = Value * LineWaveView.MAX_AMPLITUDE / 100
End Sub


Private Sub InitLineWaveView
	Dim State1 As AXLineWeavingState
	State1.Initialize3(1,WaveView.CreateRadialShader(200,0xff0976E3,0xff0976E3))
	LineWaveView.AddState(1,State1)
	
	Dim State2 As AXLineWeavingState
	State2.Initialize3(2,WaveView.CreateRadialShader(200,0xff00D6C1,0xff00D6C1))
	LineWaveView.AddState(2,State2)
	
	LineWaveView.SetState(1)
	SetNavigationBarColor(0xff0976E3)
	LineWaveView.MaxAlpha = 120
	LineWaveView.MainWaveEnabled = False
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Public Sub SetNavigationBarColor (NewColor As Int)
	Dim sdk As Phone
	If sdk.SdkVersion >= 21 Then
		Dim j1 As JavaObject
		j1.InitializeContext
		j1.RunMethodJO("getWindow",Null) _
			.RunMethod("setNavigationBarColor",Array (NewColor))
	End If
End Sub

تهیه و تنظیم
مرتضی صباغی  
MR.B4A

لینک کانال ایتا: https://eitaa.com/basic4androidlan

لینک کانال تلگرام: https://t.me/programmingwithb4a

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

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

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...