Android實現側滑-新增資料和toolbar等功能
阿新 • • 發佈:2018-11-04
首先是主程式碼塊
然後是三個佈局package alice.bw.com.day01zhoukao; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Gravity; import android.view.Menu; import android.view.View; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import java.util.ArrayList; import alice.bw.com.day01zhoukao.adapter.MyViewpgerAdaper; import alice.bw.com.day01zhoukao.fragment.A_Fragmen; import alice.bw.com.day01zhoukao.fragment.B_Fragment; import alice.bw.com.day01zhoukao.fragment.C_Fragment; public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { private Toolbar mToolbar; private DrawerLayout mDrawerLayout; private TextView drawer_layout_tv; private ViewPager vp; private ArrayList<Fragment> mFragments; private RadioGroup rg; private RadioButton[] rbArray ; private MyViewpgerAdaper mAdaprer; private FragmentManager fm ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mToolbar = (Toolbar) findViewById(R.id.toolbar); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawer_layout_tv = (TextView) findViewById(R.id.drawer_layout_tv); vp = (ViewPager) findViewById(R.id.vp); mFragments = new ArrayList<>(); mFragments.add(new A_Fragmen()); mFragments.add(new B_Fragment()); mFragments.add(new C_Fragment()); fm = getSupportFragmentManager(); mAdaprer = new MyViewpgerAdaper(fm,mFragments); vp.setAdapter(mAdaprer); vp.setCurrentItem(0); mToolbar.setNavigationIcon(R.mipmap.ic_launcher); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mDrawerLayout.openDrawer(Gravity.LEFT); } }); drawer_layout_tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp.setCurrentItem(1); } }); 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); rg.setOnCheckedChangeListener(this); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i <rbArray.length ; i++) { if(position == i){ vp.setCurrentItem(i); rbArray[i].setChecked(true); } } } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main,menu); return super.onCreateOptionsMenu(menu); } @Override public void onCheckedChanged(RadioGroup radioGroup, int id) { for (int i = 0; i <rbArray.length ; i++) { if(id == rbArray[i].getId()){ vp.setCurrentItem(i); } } } }
package alice.bw.com.day01zhoukao.fragment; import android.content.ContentResolver; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.io.IOException; import java.util.ArrayList; import alice.bw.com.day01zhoukao.R; import alice.bw.com.day01zhoukao.adapter.MyRecyclerViewAdapter; import alice.bw.com.day01zhoukao.cans.Cans; import alice.bw.com.day01zhoukao.domain.QQinfo; /** * A simple {@link Fragment} subclass. */ public class A_Fragmen extends Fragment { private RecyclerView recyclerView; private ArrayList<QQinfo> mList; private MyRecyclerViewAdapter mAdapter; private ContentResolver mResolver; private String path = "content://alice.bw.com.day01zhoukao/user"; public A_Fragmen() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_a, container, false); recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); mResolver = getActivity().getContentResolver(); mList = new ArrayList<>(); Uri uri = Uri.parse(path); Cursor cursor = mResolver.query(uri, null, null, null, null, null); int qq_numberIndex = cursor.getColumnIndex(Cans.QQ_NUMBER); int qq_nicknameIndex = cursor.getColumnIndex(Cans.QQ_NICKNAME); int qq_portraitIndex = cursor.getColumnIndex(Cans.QQ_PORTRAIT); int qq_chat_msgIndex = cursor.getColumnIndex(Cans.QQ_CHAT_MSG); int qq_timeIndex = cursor.getColumnIndex(Cans.QQ_TIME); while (cursor.moveToNext()){ String qq_number = cursor.getString(qq_numberIndex); String qq_nickname = cursor.getString(qq_nicknameIndex); String qq_portrait = cursor.getString(qq_portraitIndex); String qq_chat_msg = cursor.getString(qq_chat_msgIndex); String qq_time = cursor.getString(qq_timeIndex); Uri mImageCaptureUri = Uri.parse(qq_portrait) ; Bitmap qq_portraitBitmap = null; if (mImageCaptureUri != null) { try { qq_portraitBitmap = MediaStore.Images.Media.getBitmap(mResolver, mImageCaptureUri); } catch (IOException e) { e.printStackTrace(); } } QQinfo info = new QQinfo(qq_number,qq_nickname,qq_portraitBitmap,qq_chat_msg,qq_time); mList.add(info); } LinearLayoutManager manager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(manager); mAdapter = new MyRecyclerViewAdapter(getActivity(),mList); recyclerView.setAdapter(mAdapter); return view; } }
2
package alice.bw.com.day01zhoukao.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import alice.bw.com.day01zhoukao.R; /** * A simple {@link Fragment} subclass. */ public class B_Fragment extends Fragment { public B_Fragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_b, container, false); } }
3
package alice.bw.com.day01zhoukao.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import alice.bw.com.day01zhoukao.R;
/**
* A simple {@link Fragment} subclass.
*/
public class C_Fragment extends Fragment {
public C_Fragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_c, container, false);
}
}
介面卡
package alice.bw.com.day01zhoukao.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import alice.bw.com.day01zhoukao.R;
import alice.bw.com.day01zhoukao.domain.QQinfo;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 17:21
*/
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>{
private Context mContext;
private LayoutInflater mInflater;
private ArrayList<QQinfo> mList;
public MyRecyclerViewAdapter(Context context, ArrayList<QQinfo> list) {
mContext = context;
mList = list;
mInflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.item_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
QQinfo info = mList.get(position);
holder.img.setImageBitmap(info.getQq_portrait());
holder.tv.setText(info.getQq_nickname());
}
@Override
public int getItemCount() {
if(mList == null){
return 0;
}
return mList.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
ImageView img;
TextView tv;
public ViewHolder(View itemView) {
super(itemView);
img = (ImageView) itemView.findViewById(R.id.qq_img);
tv = (TextView) itemView.findViewById(R.id.tv);
}
}
}
2
package alice.bw.com.day01zhoukao.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 17:19
*/
public class MyViewpgerAdaper extends FragmentPagerAdapter {
private ArrayList<Fragment> mList;
public MyViewpgerAdaper(FragmentManager fm, ArrayList<Fragment> list) {
super(fm);
mList = list;
}
public MyViewpgerAdaper(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if(mList!=null){
return mList.get(position);
}
return null;
}
@Override
public int getCount() {
if(mList!=null){
return mList.size();
}
return 0;
}
}
CANS
package alice.bw.com.day01zhoukao.cans;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 16:36
*/
public class Cans {
//create table user(_id integer primary key autoincrement,qq_number text,qq_nickname text,qq_portrait text,qq_chat_msg text,qq_time text)
public static final String TABLE_NAME = "user";//表明
public static final String TABLE_ID = "_id";//主鍵
public static final String QQ_NUMBER = "qq_number";//qq號碼
public static final String QQ_NICKNAME = "qq_nickname";//qq暱稱
public static final String QQ_PORTRAIT = "qq_portrait";//qq頭像
public static final String QQ_CHAT_MSG = "qq_chat_msg";//qq聊天記錄
public static final String QQ_TIME = "qq_time";//qq聊天時間
}
db
package alice.bw.com.day01zhoukao.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import alice.bw.com.day01zhoukao.R;
import alice.bw.com.day01zhoukao.cans.Cans;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 16:24
*/
public class QQOpenHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
private static final String TABLE_NAME ="User";
public QQOpenHelper(Context context) {
super(context, TABLE_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//欄位 QQ號、QQ暱稱、QQ頭像在手機中的位置、聊天的內容資訊、聊天的時間
sqLiteDatabase.execSQL("create table user(_id integer primary key autoincrement,qq_number text,qq_nickname text,qq_portrait text,qq_chat_msg text,qq_time text)");
for (int i = 0; i <10 ; i++) {
//往第一張表中新增登入資訊
ContentValues contentValues=new ContentValues();
contentValues.put(Cans.QQ_NUMBER,"123456"+i);
contentValues.put(Cans.QQ_NICKNAME,"小--"+i);
contentValues.put(Cans.QQ_PORTRAIT,"android.resource://alice.bw.com.day01zhoukao/"+ R.mipmap.ic_launcher);
contentValues.put(Cans.QQ_CHAT_MSG,"聊天內容--"+i);
contentValues.put(Cans.QQ_TIME,"2017年11月6日");
sqLiteDatabase.insert(Cans.TABLE_NAME,null,contentValues);
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
domain
package alice.bw.com.day01zhoukao.domain;
import android.graphics.Bitmap;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 17:28
*/
public class QQinfo {
//qq_number text,qq_nickname text,qq_portrait text,qq_chat_msg text,qq_time text
private String qq_number;//號碼
private String qq_nickname;//暱稱
private Bitmap qq_portrait;//頭像
private String qq_chat_msg;//聊天記錄
private String qq_time;//時間
public QQinfo(String qq_number, String qq_nickname, Bitmap qq_portrait, String qq_chat_msg, String qq_time) {
this.qq_number = qq_number;
this.qq_nickname = qq_nickname;
this.qq_portrait = qq_portrait;
this.qq_chat_msg = qq_chat_msg;
this.qq_time = qq_time;
}
public QQinfo() {
}
public String getQq_number() {
return qq_number;
}
public void setQq_number(String qq_number) {
this.qq_number = qq_number;
}
public String getQq_nickname() {
return qq_nickname;
}
public void setQq_nickname(String qq_nickname) {
this.qq_nickname = qq_nickname;
}
public Bitmap getQq_portrait() {
return qq_portrait;
}
public void setQq_portrait(Bitmap qq_portrait) {
this.qq_portrait = qq_portrait;
}
public String getQq_chat_msg() {
return qq_chat_msg;
}
public void setQq_chat_msg(String qq_chat_msg) {
this.qq_chat_msg = qq_chat_msg;
}
public String getQq_time() {
return qq_time;
}
public void setQq_time(String qq_time) {
this.qq_time = qq_time;
}
@Override
public String toString() {
return "QQinfo{" +
"qq_number='" + qq_number + '\'' +
", qq_nickname='" + qq_nickname + '\'' +
", qq_portrait=" + qq_portrait +
", qq_chat_msg='" + qq_chat_msg + '\'' +
", qq_time='" + qq_time + '\'' +
'}';
}
}
provider
package alice.bw.com.day01zhoukao.provider;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.Nullable;
import alice.bw.com.day01zhoukao.cans.Cans;
import alice.bw.com.day01zhoukao.db.QQOpenHelper;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 16:54
*/
public class MyContentProvider extends ContentProvider {
private SQLiteDatabase db;
private String path = "content://alice.bw.com.day01zhoukao/user";
@Override
public boolean onCreate() {
QQOpenHelper helper = new QQOpenHelper(getContext());
db = helper.getReadableDatabase();
return false;
}
@Nullable
@Override
public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
Cursor c = db.query(Cans.TABLE_NAME,strings,s,strings1,null,null,s1);
return c;
}
@Nullable
@Override
public String getType(Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
long insert = db.insert(Cans.TABLE_NAME, null, contentValues);
Uri u = ContentUris.withAppendedId(Uri.parse(path),insert);
return u;
}
@Override
public int delete(Uri uri, String s, String[] strings) {
return 0;
}
@Override
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
return 0;
}
}
主體佈局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.MainActivity">
<LinearLayout
android:id="@+id/center"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="60dp"
/>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"></android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_00"
android:layout_width="0dp"
android:layout_height="match_parent"
android:drawableTop="@drawable/img"
android:text="訊息"
android:layout_weight="1"
android:textColor="@android:color/black"
android:gravity="center"
android:button="@null"/>
<RadioButton
android:id="@+id/rb_01"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:drawableTop="@drawable/img"
android:text="聯絡人"
android:textColor="@android:color/black"
android:gravity="center"
android:button="@null"/>
<RadioButton
android:id="@+id/rb_02"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:drawableTop="@drawable/img"
android:text="動態"
android:textColor="@android:color/black"
android:gravity="center"
android:button="@null"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:id="@+id/left_layout"
android:layout_gravity="left"
android:orientation="vertical"
android:layout_width="200dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/drawer_layout_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我是超級會員"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.fragment.A_Fragmen">
<!-- TODO: Update blank fragment layout -->
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
2
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.fragment.B_Fragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"/>
</FrameLayout>
3
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.fragment.C_Fragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"/>
</FrameLayout>
item_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/qq_img"
android:layout_width="100dp"
android:layout_height="100dp"/>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"/>
</LinearLayout>