1.Layout布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/drawer"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
></android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/radio1"
android:gravity="center"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:button="@null"
android:text="首页"
/>
<RadioButton
android:id="@+id/radio2"
android:gravity="center"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:button="@null"
android:text="视频"
/>
<RadioButton
android:id="@+id/radio3"
android:gravity="center"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:button="@null"
android:text="我的"
/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="255dp"
android:layout_gravity="start"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
app:srcCompat="@mipmap/ic_launcher" />
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
2.MainActivity
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawer;
private ListView listView;
private ImageView imageView;
private ViewPager pager;
private RadioGroup group;
private Uri uri;
private List<Fragment> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
drawer = findViewById(R.id.drawer);
listView = findViewById(R.id.listview);
imageView = findViewById(R.id.imageView);
pager = findViewById(R.id.pager);
group = findViewById(R.id.group);
list = new ArrayList<>();
list.add(new Fone());
list.add(new Ftwo());
list.add(new Fthree());
//getpager添加适配器
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
return list.size();
}
@Override
public Fragment getItem(int i) {
return list.get(i);
}
});
//ViewPager页面切换按钮随之改变
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
group.check(R.id.radio1);
break;
case 1:
group.check(R.id.radio2);
break;
case 2:
group.check(R.id.radio3);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
//点击按钮页面随之切换
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radio1:
pager.setCurrentItem(0);
break;
case R.id.radio2:
pager.setCurrentItem(1);
break;
case R.id.radio3:
pager.setCurrentItem(2);
break;
}
}
});
//侧滑
List<String> list = new ArrayList<>();
list.add("条目一");
list.add("条目二");
list.add("条目三");
listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list));
//点击条目切换到对应的pager页
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
pager.setCurrentItem(position);
drawer.closeDrawers();
}
});
//点击头像图片进行二次采样
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,1);
}
});
}
//得到文件路径
private String getUrl(Uri uri){
String[] pro = {MediaStore.Images.Media.DATA};
CursorLoader loader = new CursorLoader(this,uri,pro,null,null,null);
Cursor cursor = loader.loadInBackground();
int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(index);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == 1 && resultCode == RESULT_OK){
uri = data.getData();
String url = getUrl(uri);
NetUtil.twoImage(url, new NetUtil.CallBackImage() {
@Override
public void imageOk(Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
}
});
drawer.closeDrawers();
return;
}
}
}
3.NetUtil工具类
public class NetUtil {
//二次采样
public static interface CallBackImage{
void imageOk(Bitmap bitmap);
}
public static Bitmap twoImage(String filePath){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath,options);
//根据图片原始宽高,计算采样
options.inSampleSize = Math.max(options.outHeight/100,options.outWidth/100);
//设置真正加载图片
options.inJustDecodeBounds = false;
//第二次加载图片
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
return bitmap;
}
public static Bitmap twoImage(String filePath, final CallBackImage callBackImage){
new AsyncTask<String, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(String... strings) {
return twoImage(strings[0]);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
callBackImage.imageOk(bitmap);
}
}.execute(filePath);
return null;
}
//解析Json
public static void getJson(String path, final Class clazz, final CallBack callBack){
new AsyncTask<String, Void, Object>() {
@Override
protected Object doInBackground(String... strings) {
return getJson(strings[0],clazz);
}
@Override
protected void onPostExecute(Object o) {
callBack.success(o);
}
}.execute(path);
}
public static interface CallBack<T>{
void success(T o);
}
public static <T> T getJson(String path,Class clazz) {
String json = getJson(path);
Gson gson = new Gson();
T o = (T) gson.fromJson(json, clazz);
return o;
}
public static String getJson(String path){
String json = "";
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
if(responseCode == 200){
json = stream2string(urlConnection.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return json;
}
//流转换
public static String stream2string(InputStream is) throws IOException {
StringBuilder builder = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
for (String t = br.readLine();t != null;t = br.readLine()){
builder.append(t);
}
return builder.toString();
}
}
4.加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>