Android_SlidingMenu练习

来源:互联网 发布:java控制显示行数 编辑:程序博客网 时间:2024/06/04 01:03

使用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();            }        });    }}