1. 程式人生 > >Android 仿摩拜貼紙的動畫

Android 仿摩拜貼紙的動畫

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) {

        }
    };
}