android本地备忘录助手
生活随笔
收集整理的這篇文章主要介紹了
android本地备忘录助手
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/* * 該類為主界面,通過側(cè)滑,劃出側(cè)滑菜單,里面有制作人的信息,添加,查找,刪除功能。* 主界面為白色,每三個(gè)物品信息為一行的卡片式布局呈現(xiàn)給用戶,通過點(diǎn)擊圖片查看具體信息*/
public class MainActivity extends AppCompatActivity {private DrawerLayout drawerLayout;private List<Goods> goodsList =new ArrayList<>();private goodsAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);drawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);NavigationView navigationView=(NavigationView)findViewById(view);initGoods();RecyclerView recyclerView=(RecyclerView) findViewById(R.id.recycler_view);GridLayoutManager layoutManager=new GridLayoutManager(this,3);recyclerView.setLayoutManager(layoutManager);adapter=new goodsAdapter(goodsList);recyclerView.setAdapter(adapter);ActionBar actionBar=getSupportActionBar();if (actionBar!=null){actionBar.setDisplayHomeAsUpEnabled(true);}navigationView.setCheckedItem(R.id.nav_add); //默認(rèn)選中navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){@Overridepublic boolean onNavigationItemSelected( MenuItem item) { //側(cè)滑菜單里的選項(xiàng)switch (item.getItemId()) {case R.id.nav_add:Intent intent1=new Intent(MainActivity.this,AddActivity.class);startActivity(intent1);break;case R.id.nav_search:Intent intent=new Intent(MainActivity.this,SearchActivity.class);startActivity(intent);break;case R.id.nav_delete:Intent intent2=new Intent(MainActivity.this,deleteActivity.class);startActivity(intent2);break;case R.id.nav_manage:Toast.makeText(MainActivity.this,"目前還沒有更多功能",Toast.LENGTH_SHORT).show();break;default:break;}return true;}});}public boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.view,menu);return true;}private void initGoods(){List<Goods> goods= DataSupport.findAll(Goods.class); //讀取全部數(shù)據(jù)for (int i=0;goods.size()>i;i++){ //如果從數(shù)據(jù)庫讀取的數(shù)據(jù)小于總數(shù)據(jù),則繼續(xù)讀取Goods good=new Goods("","","","",true,"");good.setName(goods.get(i).getName());good.setImageId(goods.get(i).getImageId());goodsList.add(good);}}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.refresh:initGoods();Toast.makeText(this,"刷新成功",Toast.LENGTH_SHORT).show();break;default:break;}return true;}
}
?
/** 該活動(dòng)為登錄界面,使用Litepal數(shù)據(jù)庫存儲(chǔ),采用映射方法建表,用戶賬號(hào)密碼存儲(chǔ)在User1中* 記住密碼功能采用的是鍵值對(duì)存儲(chǔ)* isremember為記住密碼的邏輯判斷**/ public class LoginActivity extends AppCompatActivity {private EditText user;private EditText password;private Button login;private Button register;private CheckBox remember;private SharedPreferences pref;private SharedPreferences.Editor editor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);user=(EditText)findViewById(R.id.user);password=(EditText)findViewById(R.id.password);login=(Button)findViewById(R.id.denglu);register=(Button)findViewById(R.id.zhuce);remember=(CheckBox)findViewById(R.id.remember);LitePal.getDatabase(); //建表pref= PreferenceManager.getDefaultSharedPreferences(this);boolean isremember=pref.getBoolean("remember",false); //鍵值對(duì)存儲(chǔ)if (isremember){String user1=pref.getString("user","");String password1=pref.getString("password","");user.setText(user1);password.setText(password1);remember.setChecked(true);}login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String user1=user.getText().toString();String password1=password.getText().toString();List<User> users= DataSupport.where("user=?",user1).find(User.class); //登錄判斷if(users.size()<1){AlertDialog.Builder dialog=new AlertDialog.Builder(LoginActivity.this);dialog.setMessage("此用戶不存在");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else{ //成功登陸if(users.get(0).getPassword().equals(password1)){ //得到數(shù)據(jù)庫中第一個(gè)和user1相對(duì)應(yīng)的密碼和輸入的密碼進(jìn)行比較editor=pref.edit();if (remember.isChecked()){editor.putBoolean("remember",true);editor.putString("user",user1);editor.putString("password",password1);}else {editor.clear();}editor.apply();Intent intent=new Intent(LoginActivity.this,MainActivity.class);startActivity(intent);}else {AlertDialog.Builder dialog=new AlertDialog.Builder(LoginActivity.this);dialog.setMessage("密碼錯(cuò)誤");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}}}});register.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);startActivity(intent);finish();}});} } public class RegisterActivity extends AppCompatActivity {private EditText user;private EditText password;private EditText password1;private Button ok;private Button cancel; /** 該表為注冊(cè)界面,用于向數(shù)據(jù)庫里添加數(shù)據(jù)以及判斷是否有重復(fù)的數(shù)據(jù),如果有則不添加新的數(shù)據(jù)* users為數(shù)據(jù)庫符合條件的數(shù)值,user0為添加數(shù)據(jù)時(shí)創(chuàng)建的對(duì)象,user1為輸入的賬號(hào)* password0為輸入的密碼,password00為重復(fù)的密碼,用于進(jìn)一步確認(rèn)*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);user=(EditText)findViewById(R.id.user);password=(EditText)findViewById(R.id.password);password1=(EditText)findViewById(R.id.password1);ok=(Button)findViewById(R.id.ok);cancel=(Button)findViewById(R.id.cancel);ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String user1=user.getText().toString();String password0=password.getText().toString();String password00=password1.getText().toString();List<User> users= DataSupport.where("user=?",user1).find(User.class); //注冊(cè)判斷if (users.size()>0){ //判斷用戶名是否重復(fù)AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("此用戶名已存在");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else if (user1.equals("")){AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("賬號(hào)不能為空");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else if (!user1.equals("")){if (password0.equals("")){AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("密碼不能為空");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else if (password0.equals(password00)&&(!password0.equals(""))) { //判斷兩次密碼是否一次Toast.makeText(RegisterActivity.this,"注冊(cè)成功",Toast.LENGTH_SHORT).show();User user0=new User(); //將賬號(hào)密碼存到數(shù)據(jù)庫user0.setUser(user1);user0.setPassword(password0);user0.save();Intent intent=new Intent(RegisterActivity.this,LoginActivity.class);startActivity(intent);}else {AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("兩次密碼不一致");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}}}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(RegisterActivity.this,LoginActivity.class);startActivity(intent);}});} }增刪改查大同小異,就不一一貼了。下面這個(gè)是增加數(shù)據(jù)的活動(dòng)。
?
/** 該類為物品信息添加類,包括物品名字,件數(shù),存放地點(diǎn),存放時(shí)間,圖片,以及鬧鐘提醒* 通過調(diào)用系統(tǒng)相冊(cè)來獲取圖片*/public class AddActivity extends AppCompatActivity {private EditText name;private EditText number;private EditText site;private EditText time;private ImageView imageId;private CheckBox remind;private Button ok;private Button cancel;private Button add;public static final int CHOOSE_PHOTO=1;String image_path="";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add);name=(EditText)findViewById(R.id.name);number=(EditText)findViewById(R.id.number);site=(EditText)findViewById(R.id.site);time=(EditText)findViewById(R.id.time);remind=(CheckBox) findViewById(R.id.remind);imageId=(ImageView)findViewById(R.id.imageId);add=(Button)findViewById(R.id.add);ok=(Button)findViewById(R.id.ok1);cancel=(Button)findViewById(R.id.cancel1);add.setOnClickListener(new View.OnClickListener() {@Override //檢查是否有權(quán)限來打開相冊(cè)public void onClick(View v) {if (ContextCompat.checkSelfPermission(AddActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(AddActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},CHOOSE_PHOTO);}else {openAlbum();}}});ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) { //將輸入的數(shù)據(jù)添加到數(shù)據(jù)庫final String name1=name.getText().toString();String number1=number.getText().toString();String site1=site.getText().toString();String time1=time.getText().toString();boolean remind1=false;if (remind.isChecked()){remind1=true;}else {remind1=false;}Goods goods=new Goods(name1,number1,site1,time1,remind1,image_path);goods.save();Toast.makeText(AddActivity.this,"添加成功",Toast.LENGTH_SHORT).show();Intent intent2=new Intent(AddActivity.this,MainActivity.class);startActivity(intent2);}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(AddActivity.this,MainActivity.class);startActivity(intent);}});}private void openAlbum(){ //打開相冊(cè)函數(shù)Intent intent=new Intent("android.intent.action.GET_CONTENT");intent.setType("image/*");startActivityForResult(intent,CHOOSE_PHOTO);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode){case CHOOSE_PHOTO:if (resultCode==RESULT_OK){handleImage(data);}break;default:break;}}@Override //調(diào)取相冊(cè)時(shí)再進(jìn)行判斷權(quán)限public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode){case CHOOSE_PHOTO:if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){openAlbum();}else {Toast.makeText(this,"you denied the permission",Toast.LENGTH_SHORT).show();}break;default:break;}}private void handleImage(Intent data){ //傳參過程 解析URiString imagePath=null;Uri uri=data.getData();if (DocumentsContract.isDocumentUri(this,uri)) {String docId = DocumentsContract.getDocumentId(uri);if ("com.android.providers.media.documents".equals(uri.getAuthority())) {String id = docId.split(":")[1];String selection = MediaStore.Images.Media._ID + "=" + id;imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);} else if ("com.example.providers.downloads.documents".equals(uri.getAuthority())) {Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));imagePath = getImagePath(contentUri, null);}}else if ("content".equalsIgnoreCase(uri.getScheme())){imagePath=getImagePath(uri,null);}else if ("file".equalsIgnoreCase(uri.getScheme())){imagePath=uri.getPath();}displayImage(imagePath);image_path=imagePath; //將得到的圖片路徑已字符串的形式保存下來}private String getImagePath(Uri uri, String selection){ //獲得圖片的路徑String path=null;Cursor cursor=getContentResolver().query(uri,null,selection,null,null);if (cursor!=null){if (cursor.moveToFirst()){path=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));}cursor.close();}return path;}private void displayImage(String imagePath){ //顯示圖片if (imagePath!=null){Bitmap bitmap= BitmapFactory.decodeFile(imagePath);imageId.setImageBitmap(bitmap);}else {Toast.makeText(this,"得到圖像失敗",Toast.LENGTH_SHORT).show();}} } 這個(gè)和賬號(hào)密碼類差不多,就只貼這一個(gè)了。 import org.litepal.crud.DataSupport; /** 該類為數(shù)據(jù)庫User1中的Goods表對(duì)應(yīng)的映射關(guān)系* 物品信息的物品類*/ public class Goods extends DataSupport {private String name;private String imageId;private String number;private String site;private String time;private boolean remind;public Goods(String name, String number,String site,String time,boolean remind,String imageId){this.name=name;this.number=number;this.site=site;this.time=time;this.remind=remind;this.imageId=imageId;}public String getName(){return name;}public void setName(String name){this.name=name;}public String getImageId(){return imageId;}public void setImageId(String imageId){this.imageId=imageId;}public String getNumber(){return number;}public void setNumber(String number){this.number=number;}public String getSite(){return site;}public void setSite(String site){this.site=site;}public String getTime(){return time;}public void setTime(String time){this.time=time;}public boolean getRemind( ){return remind;}public void setRemind(boolean remind){this.remind=remind;}} /** 該類為物品的顯示類,當(dāng)點(diǎn)擊主界面的圖片時(shí),會(huì)跳到這個(gè)界面,從而使某個(gè)物品的詳細(xì)信息顯示給用戶*/ public class goodsActivity extends AppCompatActivity {public static final String GOODS_NAME="good_name";public static final String GOODS_IMAGE="good_image";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_goods);Intent intent=getIntent();String goodname=intent.getStringExtra(GOODS_NAME);String goodImage=intent.getStringExtra(GOODS_IMAGE);Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);CollapsingToolbarLayout collapsingToolbarLayout=(CollapsingToolbarLayout)findViewById(R.id.collapsing_toolbar);ImageView imageView=(ImageView)findViewById(R.id.good_image_view);TextView textView=(TextView)findViewById(R.id.good_content_text);ActionBar actionBar=getSupportActionBar();actionBar.setDisplayHomeAsUpEnabled(true);collapsingToolbarLayout.setTitle(goodname);Glide.with(this).load(goodImage).into(imageView);String goodContent=generateFruitContent(goodname);textView.setText(goodContent);}private String generateFruitContent(String goodname){StringBuilder goodContent=new StringBuilder();List<Goods> goods= DataSupport.where("name=?",goodname).find(Goods.class);if (goods.size()>0){goodContent.append("存放件數(shù):"+goods.get(0).getNumber()+"\n");goodContent.append("存放地點(diǎn):"+goods.get(0).getSite()+"\n");goodContent.append("存放時(shí)間:"+goods.get(0).getTime()+"\n");boolean is=goods.get(0).getRemind();if(is){goodContent.append("是否提醒:"+"提醒"+"\n");}else {goodContent.append("是否提醒:"+"不提醒");}}return goodContent.toString();}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case android.R.id.home:finish();break;case R.id.alarm_button:Intent intent=new Intent(goodsActivity.this,Alarm1Activity.class);startActivity(intent);break;}return super.onOptionsItemSelected(item);}public boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.view1,menu);return true;} } /* * 該類為適配器,使用卡片布局使他呈正方形顯示給用戶,以增加界面可觀性,使上半部分為圖片,最后一行為文字的形式顯示*/ public class goodsAdapter extends RecyclerView.Adapter<goodsAdapter.ViewHolder>{private Context context;private List<Goods> goodList;static class ViewHolder extends RecyclerView.ViewHolder{CardView cardView;ImageView imageView;TextView textView;public ViewHolder(View view){super(view);cardView=(CardView)view;imageView=(ImageView)view.findViewById(R.id.good_image);textView=(TextView)view.findViewById(R.id.good_name);}}public goodsAdapter(List<Goods> goodList){this.goodList =goodList;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {if (context==null){context=parent.getContext();}View view= LayoutInflater.from(context).inflate(R.layout.good_item,parent,false);final ViewHolder holder=new ViewHolder(view);holder.cardView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int position=holder.getAdapterPosition();Goods fruit= goodList.get(position);Intent intent=new Intent(context,goodsActivity.class);intent.putExtra(goodsActivity.GOODS_NAME,fruit.getName());intent.putExtra(goodsActivity.GOODS_IMAGE,fruit.getImageId());context.startActivity(intent);}});return holder;} //適配器呈現(xiàn)結(jié)果@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {Goods fruit= goodList.get(position);holder.textView.setText(fruit.getName());Glide.with(context).load(fruit.getImageId()).into(holder.imageView);}@Overridepublic int getItemCount() {return goodList.size();} }最后是關(guān)于litepal關(guān)系映射。
?
<?xml version="1.0" encoding="utf-8" ?><litepal><dbname value="User1" ></dbname><version value="4"></version><list> <mapping class="com.example.administrator.zhushou.User"></mapping> <mapping class="com.example.administrator.zhushou.Goods"></mapping></list> </litepal> 關(guān)于XML的視圖就不放下來了。最后是部分截圖:
?
總結(jié)
以上是生活随笔為你收集整理的android本地备忘录助手的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C#] ZEBRA ZPL指令打印Ba
- 下一篇: android 圆形菜单 3d效果,谷歌