Android 仿摩拜貼紙的動畫
阿新 • • 發佈:2019-02-19
public class MainActivity extends AppCompatActivity { private MobikeView mobike_view; private SensorManager sensorManager; private Sensor sensor; //將圖片新增進陣列 private int[] images = {R.mipmap.share_fb,R.mipmap.share_kongjian, R.mipmap.share_pyq,R.mipmap.share_qq, R.mipmap.share_tw,R.mipmap.share_wechat, R.mipmap.share_weibo, R.mipmap.share_weibo}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //使左上角圖示可點選,對應id為android.R.id.home getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle("仿摩拜單車的貼紙動畫"); initView();//對控制元件的初始化 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } private void initView() { mobike_view = (MobikeView) findViewById(R.id.mobike_view); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); layoutParams.gravity = Gravity.CENTER; for (int i = 0; i < images.length; i++) { ImageView imageView = new ImageView(this); imageView.setImageResource(images[i]); imageView.setTag(R.id.mobike_view_circle_tag,true); mobike_view.addView(imageView,layoutParams); } } //回到裝置主介面 @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId()==android.R.id.home){ finish(); } return super.onOptionsItemSelected(item); } @Override protected void onStart() { super.onStart(); mobike_view.getmMobike().onStart(); } @Override protected void onStop() { super.onStop(); mobike_view.getmMobike().onStop(); } @Override protected void onResume() { super.onResume(); sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_UI); } @Override protected void onPause() { super.onPause(); sensorManager.unregisterListener(listener); } private SensorEventListener listener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent sensorEvent) { //Sensor.TYPE_ACCELEROMETER:三軸加速度感應器 返回三個座標軸的加速度 單位m/s2 if (sensorEvent.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ float x = sensorEvent.values[0]; float y = sensorEvent.values[1]*2.0f; mobike_view.getmMobike().onSensorChanged(-x,y); } } @Override public void onAccuracyChanged(Sensor sensor, int i) { } }; }