- 浏览: 5831533 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
目录结构:
package com.dc.app; import java.text.DecimalFormat; import java.util.Locale; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class App extends Activity { private static final String TAG="App"; /** Called when the activity is first created. */ private EditText height,weight; private Button submit,nextpage,locale,toList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // requestWindowFeature(Window.FEATURE_NO_TITLE); // this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN); // this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setContentView(R.layout.main); DisplayMetrics dm=new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth=dm.widthPixels; int screenHeight=dm.heightPixels; Toast.makeText(this, screenWidth+"*"+screenHeight, Toast.LENGTH_LONG).show();//320*480 height=(EditText)this.findViewById(R.id.height); weight=(EditText)this.findViewById(R.id.weight); submit=(Button)this.findViewById(R.id.submit); submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String s_h=height.getText().toString(); String s_w=weight.getText().toString(); if(s_h.equals("")||s_w.equals("")){ Toast.makeText(App.this, R.string.error, Toast.LENGTH_LONG).show(); return; } double h=Double.parseDouble(s_h)/100; double w=Double.parseDouble(s_w); double bmi=w/(h*h); Toast.makeText(App.this, getText(R.string.result).toString()+new DecimalFormat("0.00").format(bmi), Toast.LENGTH_LONG).show(); if(bmi>25){ showNotify("减肥通知", "您应该减肥啦!"); }else if(bmi<20){ showNotify("增肥计划", "您应该多吃点!"); }else{ showNotify("好身材", "您应该保持您的身材!"); } } }); nextpage=(Button)findViewById(R.id.nextpage); nextpage.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setClass(App.this, Report.class); Bundle bundle=new Bundle(); bundle.putString("key_height", height.getText().toString()); bundle.putString("key_weight", weight.getText().toString()); intent.putExtras(bundle);//附加物,为意图追加额外的数据 startActivity(intent); } }); locale=(Button)findViewById(R.id.locale); locale.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Resources res=getResources(); Configuration config=res.getConfiguration(); if(config.locale==Locale.SIMPLIFIED_CHINESE){ config.locale=Locale.ENGLISH; }else{ config.locale=Locale.SIMPLIFIED_CHINESE; } DisplayMetrics dm=res.getDisplayMetrics(); res.updateConfiguration(config, dm); } }); toList=(Button)findViewById(R.id.toList); toList.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(App.this, DummyNote.class); startActivity(intent); } }); } private void showNotify(String title,String content){ Notification notice=new Notification(); notice.icon=android.R.drawable.stat_sys_warning; notice.tickerText=getText(R.string.label); notice.when=10L; notice.defaults=Notification.DEFAULT_SOUND; notice.setLatestEventInfo(this, title,content, PendingIntent.getActivity(this, 0, null, 0)); NotificationManager manager=(NotificationManager)getSystemService(this.NOTIFICATION_SERVICE); manager.notify(0,notice); } @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub return super.onContextItemSelected(item); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); } private static final int DIALOG_ABOUT = 1; @Override protected Dialog onCreateDialog(int id) { // TODO Auto-generated method stub switch (id) { case DIALOG_ABOUT: Dialog loginDialog=new AlertDialog.Builder(this) .setTitle("BMI") .setMessage(R.string.label2) .setCancelable(true) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }) .setNegativeButton(R.string.homepage, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); Uri uri=Uri.parse(getString(R.string.uri)); Intent intent=new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } }) .create(); loginDialog.setCanceledOnTouchOutside(true); return loginDialog; default: break; } return super.onCreateDialog(id); } public static final int menu_id_about=1; public static final int menu_id_exit=2; @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, menu_id_about, 0, R.string.about).setShortcut('1', 'a');//设置快捷键 menu.add(0, menu_id_exit, 0, R.string.exit).setShortcut('2', 'e');//设置快捷键 return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case menu_id_about: showDialog(DIALOG_ABOUT); break; case menu_id_exit: save(); this.finish(); break; default: break; } return super.onOptionsItemSelected(item); } @Override public boolean onPrepareOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.findItem(menu_id_about).setVisible(true).setIcon(android.R.drawable.ic_menu_info_details); menu.findItem(menu_id_exit).setVisible(true).setIcon(android.R.drawable.ic_menu_close_clear_cancel); return super.onPrepareOptionsMenu(menu); } private void save(){ SharedPreferences setting=this.getPreferences(Activity.MODE_PRIVATE); setting.edit().putString("HEIGHT", height.getText().toString()) .putString("WEIGHT", weight.getText().toString()) .commit(); } private void read(){ SharedPreferences setting=this.getPreferences(Activity.MODE_PRIVATE); height.setText(setting.getString("HEIGHT", "")); weight.setText(setting.getString("WEIGHT", "")); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); save(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); read(); } }
package com.dc.helper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper { public static final String databaseName="bmi.db"; public static final String tableName="notes"; public static final int databaseVersion=1; public static final String field0="_id"; public static final String field1="note"; public static final String field2="created"; //创建或打开数据库 public DatabaseHelper(Context context) { super(context, databaseName, null, databaseVersion); // TODO Auto-generated constructor stub } //当数据库被创建时触发创建表 @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub String sql="create table "+tableName+"("+field0+" INTEGER PRIMARY KEY,"+field1+" TEXT,"+field2+" INTEGER);"; db.execSQL(sql); } //升级数据库时触发 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub String sql="DROP TABLE IF EXISTS "+tableName; db.execSQL(sql); onCreate(db); } }
package com.dc.adaper; import java.text.SimpleDateFormat; import java.util.Date; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.dc.helper.DatabaseHelper; public class DatabaseAdaper { Context content; DatabaseHelper helper; SQLiteDatabase db; public DatabaseAdaper(Context content){ this.content=content; open(); } public void open(){ helper=new DatabaseHelper(content);//创建或打开数据库 db=helper.getWritableDatabase();//真正创建 } public void close(){ db.close(); } public Cursor list(){ // return db.rawQuery("SELECT * FROM "+DatabaseHelper.tableName, null); return db.query(DatabaseHelper.tableName, new String[]{DatabaseHelper.field0,DatabaseHelper.field1,DatabaseHelper.field2}, null, null, null, null, null); } public long insert(String note){ Date now=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); ContentValues values=new ContentValues(); values.put(DatabaseHelper.field1, note); values.put(DatabaseHelper.field2, sdf.format(now)); return db.insert(DatabaseHelper.tableName, null, values); } public boolean delete(long id){ return db.delete(DatabaseHelper.tableName, DatabaseHelper.field0+"="+id, null)>0; } public Cursor get(long id){ Cursor cursor=db.query(DatabaseHelper.tableName, new String[]{DatabaseHelper.field0,DatabaseHelper.field1,DatabaseHelper.field2}, DatabaseHelper.field0+"="+id, null, null, null, null); if(cursor!=null){ cursor.moveToFirst(); } return cursor; } public boolean update(long id,String note){ ContentValues values=new ContentValues(); values.put(DatabaseHelper.field1, note); return db.update(DatabaseHelper.tableName, values, DatabaseHelper.field0+"="+id, null)>0; } }
发表评论
-
http://www.android-studio.org/
2018-08-06 09:25 0http://www.android-studio.org/ ... -
SlidingDrawer源码
2012-03-14 10:13 3814我把SlidingDrawer源码提了出来,希望对1.5的朋友 ... -
简单拖动效果(带Cache,需要完善)
2011-10-13 15:10 4235如何去实现一个具有幻象的拖拽效果? 所谓”幻象“就是当你按下去 ... -
Android Activity中启动另一应用程序的方法,无需得到类名
2011-08-02 14:46 17276在网上搜索了一会相关的实现代码,发现所有的文章都说是需要包名和 ... -
java-universal-tween-engine,一个动画系统库
2011-06-29 09:21 6752http://code.google.com/p/java-u ... -
网上发现的一个android UI包
2011-05-24 12:21 4137里面有些UI和效果 -
android中使用代码启动其他程序
2011-04-29 23:15 5318你要訪問其他的程序,那麼這個程序要先裝載到模擬器或真機上面,因 ... -
listView背景问题以及限制editText字数以及如果想通知别人已经不能在写
2011-04-29 22:44 32171.在listView设置好背景之后 你如果点击空白出 你会发 ... -
Android键盘和触摸事件处理
2011-04-29 22:32 7012activity和VIEW都能接收触摸和按键,如果响应事件只需 ... -
Android的绘制文本对象FontMetrics的介绍及绘制文本
2011-04-29 22:29 11504一。Android绘制文本对象FontMetrics介绍 ... -
Android View 拖动&插入
2011-04-29 22:20 3554View 拖动&插入 即: 支持 拖动图标 然后 ... -
使TextView文本可以水平和垂直滚动
2011-04-29 21:59 14441在做一个小的电子书程序,要求电子书具有放大缩小的功能,所以肯定 ... -
ArrayAdapter源码
2011-04-29 12:29 6311看看人家怎么写的。 /* * Copyright (C ... -
Android下获取开机时间
2011-04-02 21:51 6239找了一圈没发现能得到开机启动时间资料,于是乎突发奇想,得到了解 ... -
AutoCompleteTextView连接到数据库
2011-03-30 20:49 4740AutoCompleteTextView可以根据输入 ... -
改变屏幕Brightness(亮度)
2011-03-30 12:48 4610http://www.eoeandroid.com/forum ... -
android 拖拽图片&拖动浮动按钮到处跑
2011-02-24 20:55 31786来自老外: import android.app.Acti ... -
拖动一个控件在另一个控件(layout)上,并固定位置在几个位置显示
2011-02-24 20:51 5903实现效果: 鼠标拖动btn SSS,SSS在水平的layo ... -
Handler与Message类,实现n秒后无操作自动消失功能
2011-02-24 20:45 4652实现功能:某控件不操作10秒后,自动消失。如照相机变焦条出现后 ... -
带删除按钮的ListView
2011-02-24 10:33 6158不用说了,上图先: import java.util.A ...
相关推荐
本文将详细探讨如何使用SharedPreferences和SQLite数据库这两种常见的Android数据存储机制。 首先,我们来看SharedPreferences。SharedPreferences提供了一种轻量级的数据存储方式,适用于保存简单的键值对数据,如...
总结起来,这个练习集涵盖了Android应用中三种主要的数据持久化方法:SharedPreferences用于存储小量的关键数据,文件持久化适用于大块数据,而SQLite数据库则适合结构化数据的存储。通过实践这些例子,学习者能够...
《Android项目源码自测答题练习系统》是一个专为学习者设计的移动应用,它集成了单选题和多选题的在线测试功能,并能够自动评分。这个项目旨在帮助用户检验自己的知识掌握程度,尤其适合编程学习者进行自我评估和...
- 会话管理:登录成功后,可以使用SharedPreferences或Token来持久化登录状态,方便后续操作。 4. **Android Studio集成** - 创建新项目:在Android Studio中新建一个Android应用项目,选择适当的Activity模板。 ...
6. **SharedPreferences**:对于少量的设置或用户偏好,可以使用SharedPreferences存储,这是一个简单的键值对存储方式。 7. **Adapters与ViewHolder**:在RecyclerView中,Adapter将数据模型与视图绑定,...
在Android开发中,通常会用到EditText控件来接收用户输入,Button控件用于触发登录事件,而SharedPreferences或Firebase Authentication等技术则用于存储和验证用户信息。 2. **Tab应用**:该软件采用了Tab布局,这...
"AndroidPratice"项目,正如其标题所示,是一个专为Android学习者设计的练习平台,旨在通过实际操作帮助开发者提升技能。在这个"商店农场"的场景中,我们可以推测这是一个模拟商店管理或农场经营的游戏应用,或者是...
这些操作通常通过SQLiteOpenHelper的子类来完成,其中涉及到onCreate()和onUpgrade()方法来创建和更新数据库,以及自定义的SQL语句来执行具体的数据库操作。 接下来,Eclipse是Android开发的重要工具,它提供了一个...
此外,考虑到游戏进度的保存,可以利用SharedPreferences来存储临时游戏状态,或者使用文件系统来持久化更复杂的数据。 对于用户交互,Android提供了丰富的事件监听机制,如OnClickListener、OnTouchListener等。在...
- **知识点解释:** Android提供了多种数据存储方式,包括文件、SQLite数据库、SharedPreferences、ContentProvider以及网络存储,而Map是一种数据结构,不是Android提供的数据存储方式之一。 5. **在下列选项中,...
在Android平台上,构建一个简单的留言板应用是初学者学习Android开发的一个常见练习。这个教程将带你了解如何实现这样一个功能,让用户能够发布留言并查看其他用户的留言。我们将主要涉及以下几个核心知识点: 1. *...
3. **数据库操作**:记事数据通常存储在SQLite数据库中,因此会涉及到SQLiteOpenHelper子类的创建,以及SQL查询语句的编写,用于存储和检索记事。 4. **布局文件**:XML布局文件定义了应用的用户界面。在这个项目中...
源码中可能包含一个`SQLiteOpenHelper`子类,用于创建数据库和表,以及`ContentProvider`用于数据访问。 6. **数据库操作**:源码会包含用于添加、查询和更新账目记录的SQL语句。可能有一个`Account`模型类,对应...
- **SharedPreferences**: 适用于存储简单的键值对数据,常用于存储用户偏好设置。 4. **用户界面(User Interface, UI)** - **Material Design**: Google推荐的设计指南,提供了一套统一的视觉元素和交互原则。 ...
Android 记事本源码是一个经典的移动开发实践项目,主要用于学习和练习Android应用程序的开发。这个项目的核心功能包括笔记的创建(增)、删除、修改(改)以及查询(查)。源码的注释详尽,便于初学者理解各个代码...
首先,安卓中的数据持久化主要有以下几种方式:SQLite数据库、SharedPreferences、文件存储以及ContentProvider。其中,SQLite是最常用的一种,它是一个轻量级的关系型数据库,适用于存储结构化的数据。 **1. ...
在"DataPersistenceNavigationDemo-01_02"中,可能包含创建SQLite数据库和表的示例,以及如何使用ContentProvider、SQLiteOpenHelper等类进行数据的CRUD(创建、读取、更新、删除)操作。 2. **Shared Preferences*...
"VocabularyTesterMobile"正是这样一款专为移动平台设计的语言学习应用,它允许用户在移动设备上进行词汇练习和学习,涵盖了多种语言。本文将深入探讨这款应用背后的开发技术,特别是其主要编程语言——Java的相关...