Android_SlidingMenu练习

使用Fragment+ViewPager实现如上效果。

public class MyAdapter extends BaseAdapter {

    private Context context;
    private List<Map<String,String>> list;

    public MyAdapter(Context context, List<Map<String, String>> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        if (convertView == null){
            vh = new ViewHolder();
            convertView = View.inflate(context,R.layout.list_item,null);
            vh.length_tv = (TextView) convertView.findViewById(R.id.length_tv);
            vh.address_tv = (TextView) convertView.findViewById(R.id.address_tv);
            convertView.setTag(vh);
        }else {
            vh = (ViewHolder) convertView.getTag();
        }

        vh.length_tv.setText("时长:");
        vh.length_tv.append(list.get(position).get("time"));
        vh.address_tv.setText("地址:");
        vh.address_tv.append(list.get(position).get("address"));

        return convertView;
    }
    class ViewHolder{
        TextView length_tv;
        TextView address_tv;
    }
}

public class MyFragmentAdapter extends FragmentPagerAdapter {

    List<Fragment> list;

    public MyFragmentAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list = list;
    }

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }

    @Override
    public int getCount() {
        return list.size();
    }
}

public class MyStaggeredAdapter extends RecyclerView.Adapter<MyStaggeredAdapter.ViewHolder> {

    private List<String> list;
    private Context context;

    public MyStaggeredAdapter(List<String> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.recycler_item, parent);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.tv.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        TextView tv;

        public ViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.recycler_tv);
        }
    }
}

public class MyFragment extends Fragment implements AdapterView.OnItemClickListener {

    private List<Map<String,String>> list;

    public MyFragment(List<Map<String, String>> list) {
        this.list = list;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_item, null);
        ListView listView = (ListView) view.findViewById(R.id.listView);
        listView.setAdapter(new MyAdapter(getActivity(),list));

        listView.setOnItemClickListener(this);

        return view;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String address = list.get(position).get("address");

        Intent intent = new Intent(getActivity(), SecondActivity.class);
        intent.putExtra("address",address);
        startActivity(intent);
    }
}

public class MyFragment2 extends Fragment implements View.OnClickListener {

    private ImageView img;
    private VideoView videoView;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment2_item, null);
        Button btn_photo = (Button) view.findViewById(R.id.btn_photo);
        Button btn_video = (Button) view.findViewById(R.id.btn_video);

        img = (ImageView) view.findViewById(R.id.img);
        videoView = (VideoView) view.findViewById(R.id.video);

        btn_photo.setOnClickListener(this);
        btn_video.setOnClickListener(this);

        return view;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_photo:
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent,1);
                break;

            case R.id.btn_video:
                Intent intent2 = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                startActivityForResult(intent2,2);
                break;
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK){
            if (requestCode == 1){
                Bundle bundle = data.getExtras();
                Bitmap bitmap = (Bitmap) bundle.get("data");
                img.setImageBitmap(bitmap);

            }else if (requestCode == 2){
                Uri uri = data.getData();
                Cursor cursor = getContext().getContentResolver().query(uri, null, null, null, null);
                String path = cursor.getString(cursor.getColumnIndex("data"));
                videoView.setVideoURI(Uri.parse(path));
                videoView.setMediaController(new MediaController(getActivity()));
                videoView.start();
            }
        }
    }
}

public class MyFragment3 extends Fragment implements View.OnClickListener {

    VideoView videoView;
    boolean isRunning = false;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment3_item, null);
        Button btn_last = (Button) view.findViewById(R.id.btn_last);
        Button btn_play = (Button) view.findViewById(R.id.btn_play);
        Button btn_next = (Button) view.findViewById(R.id.btn_next);
        videoView = (VideoView) view.findViewById(R.id.video_fragment3);

        btn_last.setOnClickListener(this);
        btn_play.setOnClickListener(this);
        btn_next.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_last:
                if (videoView.isPlaying()) {
                    videoView.stopPlayback();
                }
                videoView.setVideoURI(Uri.parse("http://baobab.kaiyanapp.com/api/v1/playUrl?vid=12911&editionType=normal&source=qcloud"));
                videoView.setMediaController(new MediaController(getActivity()));
                videoView.start();
                break;
            case R.id.btn_play:
                if (!isRunning && !videoView.isPlaying()){
                    isRunning = true;
                    videoView.setVideoURI(Uri.parse("http://baobab.kaiyanapp.com/api/v1/playUrl?vid=60096&editionType=default&source=qcloud"));
                    videoView.setMediaController(new MediaController(getActivity()));
                    videoView.start();
                } else {
                    videoView.pause();
                    isRunning = false;
                }
                break;
            case R.id.btn_next:
                if (videoView.isPlaying()) {
                    videoView.stopPlayback();
                }
                videoView.setVideoURI(Uri.parse("http://baobab.kaiyanapp.com/api/v1/playUrl?vid=59402&editionType=default&source=qcloud"));
                videoView.setMediaController(new MediaController(getActivity()));
                videoView.start();
                break;

        }
    }
}

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {

    private Toolbar toolBar;
    private ViewPager viewPager;
    private RadioButton info_rb;
    private RadioButton link_rb;
    private RadioButton dynamaic_rb;
    private RadioGroup rg;
    private LinearLayout activity_main;
    private RadioButton[] rbArray;
    private LocationManager manager;
    private EditText gps_et;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SlidingMenu menu = new SlidingMenu(this);

        menu.setMode(SlidingMenu.LEFT_RIGHT);
        menu.setBehindOffset(200);
        //全屏幕都可以滑动
        //menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setMenu(R.layout.sliding_layout);
        menu.setSecondaryMenu(R.layout.sliding2_layout);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

        initView();
    }


    private void initView() {
        toolBar = (Toolbar) findViewById(R.id.toolBar);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        rg = (RadioGroup) findViewById(R.id.rg);
        rbArray = new RadioButton[rg.getChildCount()];

        for (int i = 0; i < rbArray.length; i++) {
            rbArray[i] = (RadioButton) rg.getChildAt(i);
        }
        rbArray[0].setChecked(true);
        activity_main = (LinearLayout) findViewById(R.id.activity_main);

        addViewPager();
        setRadioGroup();
        addGps();
        addStagged();
    }

    private void addStagged() {
        View view = LayoutInflater.from(this).inflate(R.layout.sliding2_layout, null);
        RecyclerView recycler = (RecyclerView) view.findViewById(R.id.recycler);

        StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
        recycler.setLayoutManager(manager);

        List<String> list = new ArrayList<>();

        for (int i = 0; i < 20 ; i++) {
            list.add("瀑布咯"+i);
        }

        MyStaggeredAdapter staggeredAdapter = new MyStaggeredAdapter(list, this);
        recycler.setAdapter(staggeredAdapter);
    }

    private void addGps() {
        View view = LayoutInflater.from(this).inflate(R.layout.sliding_layout, null);
        gps_et = (EditText) view.findViewById(R.id.gps_et);

        manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            Toast.makeText(this, "请开启GPS", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivityForResult(intent, 1);
        }

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 1, listener);
    }

    LocationListener listener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            updateData(location);
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {
            if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            Location location = manager.getLastKnownLocation(provider);
            updateData(location);
        }

        @Override
        public void onProviderDisabled(String provider) {
            updateData(null);
        }
    };

    private void updateData(Location location) {
        gps_et.setText("纬度:");
        gps_et.append(String.valueOf(location.getLongitude()));
        gps_et.append("\n经度:");
        gps_et.append(String.valueOf(location.getLatitude()));
        gps_et.append("\n海拔:");
        gps_et.append(String.valueOf(location.getAltitude()));
    }

    private void setRadioGroup() {
        viewPager.setOnPageChangeListener(this);
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                for (int i=0;i<rg.getChildCount();i++){
                    if(checkedId==rbArray[i].getId()){
                        viewPager.setCurrentItem(i);//设置选中radioButton对应的页面选中
                    }
                }
            }
        });

    }

    private void addViewPager() {
        List<Fragment> list = new ArrayList<>();
        MyFragment fragment = new MyFragment(getFragmentList());
        MyFragment2 fragment2 = new MyFragment2();
        MyFragment3 fragment3 = new MyFragment3();

        list.add(fragment);
        list.add(fragment2);
        list.add(fragment3);
        MyFragmentAdapter fragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(), list);
        viewPager.setAdapter(fragmentAdapter);
    }

    private List<Map<String,String>> getFragmentList(){
        List<Map<String,String>> list = new ArrayList<>();
        MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this);
        SQLiteDatabase database = helper.getWritableDatabase();

        Cursor cursor = database.query("test", null, null, null, null, null, null);

        MediaPlayer player = new MediaPlayer();

        if (cursor != null) {

            while (cursor.moveToNext()) {
                Map<String, String> map = new HashMap<>();
                String address = cursor.getString(1);
                try {
                    player.setDataSource(address+R.raw.aaaa);
                    player.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                int duration = player.getDuration();
                map.put("time", String.valueOf(duration));
                map.put("address", String.valueOf(address));
                list.add(map);
            }
        }
        return list;
    }

    //选项菜单

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.options_menu,menu);
        return true;
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        rbArray[position].isChecked();
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    private static final String DBName = "myDB.db";
    private static final int version = 1;
    public MySQLiteOpenHelper(Context context) {
        super(context, DBName, null, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists test(_id integer primary key autoincrement," +
                "address text)");
        addMusic(db);
    }

    private void addMusic(SQLiteDatabase db) {
        for (int i = 0; i < 10; i++) {
            ContentValues values = new ContentValues();
            values.put("address","android:resource://"+MainActivity.class.getPackage().getName()+"/");
            db.insert("test", null, values);
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button button = (Button) findViewById(R.id.back);
        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.hello);

        SurfaceHolder holder = surfaceView.getHolder();

        Intent intent = getIntent();

        String address = intent.getStringExtra("address");
        MediaPlayer mediaPlayer = new MediaPlayer();

        try {
            mediaPlayer.setDataSource("android:resource://"+getPackageName() +"/"+ R.raw.aaaa);
            mediaPlayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }

        mediaPlayer.start();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值