Я хочу сделать эффект параллакса в Android, я искал предложения и читал об акселерометре. Если кто-то что-то знает или имеет какие-либо идеи, пожалуйста, помогите мне. Это мой код, но он не выполняет ту работу, которую я хочу:
class ProfileFragment : Fragment() {
private var sharedViewModel: SharedViewModel? = null
private var sensorManager: SensorManager? = null
private var sensorGyr: Sensor? = null
private var height:Int? = null
private var width:Int? = null
private lateinit var viewModel: ProfileViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.profile_fragment, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(ProfileViewModel::class.java)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
initViewModelToActivity()
parallaxEffect()
}
fun initViewModelToActivity(){
activity?.let {
sharedViewModel = ViewModelProviders.of(it).get(SharedViewModel::class.java)
}
val handler = Handler()
handler.postDelayed({
sharedViewModel?.ColorBottomNavDefaul?.postValue("Perfil")
},100)
}
fun parallaxEffect(){
sensorManager = activity?.getSystemService(Context.SENSOR_SERVICE) as SensorManager?
sensorGyr = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
val displayMetrics = DisplayMetrics()
activity?.windowManager?.defaultDisplay?.getMetrics(displayMetrics)
height=displayMetrics.heightPixels
width=displayMetrics.widthPixels
if (sensorGyr == null)
Toast.makeText(context, "No tiene el sensor", Toast.LENGTH_SHORT).show()
val mEventListener = object : SensorEventListener {
override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
}
override fun onSensorChanged(event: SensorEvent) {
val anim1 = TranslateAnimation(0f, 16f, 0f,0f)
anim1.duration = 500
if(event.values[0] > 5) {
Log.d("Movement", "+5")
anim1.fillAfter = true
bg.startAnimation(anim1)
}
if(event.values[0] < -5) {
Log.d("Movement", "-5")
anim1.fillAfter = true
anim1.repeatCount = -1
anim1.repeatMode = Animation.REVERSE
bg.startAnimation(anim1)
}
}
}
sensorManager?.registerListener(mEventListener,sensorGyr, SensorManager.SENSOR_DELAY_FASTEST)
}
}