1、让整个应用都是全屏的而且不要TitleBar,在Mainfest的<application >里添加:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
2、创建动画效果,学习地点:
http://www.htcplayer.com/thread-2852-1-1.html
实例:AlphaAnimation(渐入渐出)
//透明度渐变动画(取值范围是:0.0~1.0)f是因为要将0.0的double类型转换为float
AlphaAnimation animation = new AlphaAnimation(0.1f, 1.0f);
//这是动画的持续时间5秒
animation.setDuration(5000);
//将组件和动画关联
loadImage.setAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
//动画启动的监听
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
Toast.makeText(LoadActivity.this, "动画开始", Toast.LENGTH_LONG).show();
}
//动画宋福执行的监听
public void onAnimationRepeat(Animation animation) {
}
//动画结束的监听执行
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
Toast.makeText(LoadActivity.this, "动画结束", Toast.LENGTH_LONG).show();
}
});
3、关于一直很喜欢的浮现的框:Toast.makeText(LoadActivity.this, "动画开始", Toast.LENGTH_LONG).show();
4、关于网络状态管理的监听和处理
//获得一个网络状态管理器
ConnectivityManager connectivityManager = (ConnectivityManager)LoadActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager == null){
//如果没有网络
Toast.makeText(LoadActivity.this, "没有网络", Toast.LENGTH_LONG).show();
}else{
//如果有网络,获取所有网络
NetworkInfo[] info = connectivityManager.getAllNetworkInfo();
if(info != null){
for(NetworkInfo network : info){
if(network.getState() == NetworkInfo.State.CONNECTED){
Toast.makeText(LoadActivity.this, "没有网络", Toast.LENGTH_SHORT).show();
}
}
}
}
注:只有上面是不够的,因为还需要在mainfest里添加应用的网络权限
<!-- 获得网络状态权限 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 获得访问网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
5、对于方法外部成为方法
只是在本类里生成方法:选中所选代码,右击—>Refactor
—>Extract Method
在新建的工具类里盛放方法:比如外接Activity可以用Context,如果方法内有匿名类,那么可以把Context作为final的静态的:
public static boolean isNetworkAvailable(Context context) {
//获得一个网络状态管理器
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获得一个网络状态管理器
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
6、网络不通畅的时候,打开网络设置页面
TextView msg = new TextView(context);
msg.setText("当前没有可以使用的网络,请设置网络!");
new AlertDialog.Builder(context).setIcon(R.drawable.ic_launcher).setTitle("网络状态提示").setView(msg).setPositiveButton("確定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//跳转至设置界面
context.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
//因为设置了之后要返回软件页面,所以有下面的finish,而且context说明是Activity
context.finish();
}
}).create().show();
7、对于数据库的开发,用到了继承SQLiteOpenHelper数据库工具类。此时添加DBInfo.java是因为程序的灵活性和可扩展性。把添加表删除表等等数据库的操作集合静态定义在一起,这样可以直接调用。
public void onCreate(SQLiteDatabase db) {
db.execSQL(DBInfo.Table.CREATE_USER_TABLE);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//当版本一旦变更,就会用这个方法
//删除表,然后重新建立表
db.execSQL(DBInfo.Table.DROP_USER_TABLE);
onCreate(db);
}
8、在有关用户的增删改查
首先现在UserDao.java里把各个方法先定好,后实现功能。注意User.java的project的定义。在UserDao里用了
public UserDao(Context context){
dbHelper = new DBHelper(context);
}
来获取DBHelper然后用getWritableDatabase()方法得到SQLiteDtaabase进行数据库的操作。
9、增加用户的功能实现:
涉及到了ContentValues的用法,还有图片的转换存储,以及SQLiteDatabase的insert(**)方法。下面是:
ContentValues的键值添加方法:
values.put(DBInfo.Table.USER_ID, user.getUser_id());
values.put(DBInfo.Table.USER_NAME, user.getUser_name());
values.put(DBInfo.Table.TOKEN, user.getToken());
values.put(DBInfo.Table.TOKEN_SECRET, user.getToken_secret());
values.put(DBInfo.Table.DESCRIPTION, user.getDescription());
图片类型转换,然后添加到ContentValues里:
//将图片类型的数据进行存储的时候,需要进行转换,才能存储到BLOB类型中,不能直接put。
//values.put(DBInfo.Table.USER_HEAD, user.getUser_head());
ByteArrayOutputStream os = new ByteArrayOutputStream();
//为了实现数据存储,需要将数据类型进行转换
BitmapDrawable newHead = (BitmapDrawable)user.getUser_head();
//将数据进行压缩成PNG编码数据,存储质量100%,放到OS里面
newHead.getBitmap().compress(CompressFormat.PNG, 100, os);
//存储图片类型数据
values.put(DBInfo.Table.USER_HEAD, os.toByteArray());
数据库的添加操作:
long rowId = db.insert(DBInfo.Table.USER_TABLE, DBInfo.Table.USER_NAME,values );
10、在应用开始的时候要查询数据库里是不是已经有了用户的信息,所以下面要完成查询功能。