sqlite的时间默认值设定

博客分类:
android
SQLiteSQL
不能使用getdate()函数

应该用datetime(CURRENT_TIMESTAMP,'localtime')来代替

另外在sql语中有时间比较条件的时候,也应该这样先使用转换datetime('2010-1-15 12:00:00'),然后再比较

android中判断数据库表是否已经创建

博客分类:
android
Android
create table IF NOT EXISTS tablename (id integer primary key autoincrement);

android中使用Thumbnails批量加载sdcard中的缩略图片

博客分类:
android
AndroidThumbnails批量加载缩略图
研究了一上午,终于可以读取缩略图了。

这样得到的是卡中所有图片的缩略图,另外可以使用异步加载,提高速度

代码如下:

Java代码
String[] projection = { MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DISPLAY_NAME };
Uri uri = MediaStore.Images.Thumbnails.getContentUri("external");
Cursor c = Thumbnails.queryMiniThumbnails(getContentResolver(), uri,
Thumbnails.MINI_KIND, null);
String[] projection = { MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DISPLAY_NAME };
Uri uri = MediaStore.Images.Thumbnails.getContentUri("external");
Cursor c = Thumbnails.queryMiniThumbnails(getContentResolver(), uri,
Thumbnails.MINI_KIND, null);
第二行的代码意思为取得sdcard的路径Uri

Java代码
Uri uri = MediaStore.Images.Thumbnails.getContentUri("external");
Uri uri = MediaStore.Images.Thumbnails.getContentUri("external");
化为缩略图再加载

博客分类:
android
stream = new FileInputStream(new File(path+"test.jpg"));
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeStream(stream , null, opts);
iv.setImageBitmap(bitmap);

Animation中多段动画的连续播放
博客分类:
android
AndroidXML
举简单的例子

有两段动画,第一个是从左向右平移,第二个是从上往下平移

现在需要在第一个平移结束之后立即开始第二段动画(并不是使用startAnimation方法两次来实现)

动画的xml代码如下

Xml代码
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0" android:toXDelta="200"
android:fillAfter="true"
android:duration="@android:integer/config_longAnimTime" />

<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="0" android:toYDelta="300"
<SPAN style="COLOR: #ff0000"> android:startOffset="@android:integer/config_longAnimTime" </SPAN>

android:duration="@android:integer/config_longAnimTime" />
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0" android:toXDelta="200"
android:fillAfter="true"
android:duration="@android:integer/config_longAnimTime" />

<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="0" android:toYDelta="300"
android:startOffset="@android:integer/config_longAnimTime"

android:duration="@android:integer/config_longAnimTime" />
代码中红的一段意思为这一段动画的开始时间设置为第一段动画的android:duration,意思即第二段动画在第一段动画结束之时立即开始,一般来说android:duration手动设置为整数,即使有多段动画需要连续播放的话,也可以根据每一段动画的播放时间来累加,从而计算出第一个动画的开始运行时间

android中使用线程(比如修改textview的text)

博客分类:
android
AndroidUIthread
线程的实现类如下

Java代码
class UpdateStatus extends Thread {
@Override
public void run() {
super.run();
while (true) {
if (i == GlobalValues.AUIO_LENGTH || MODE != TIME) {
MODE = 0;
updateStatus.stop();
updateStatus = null;
break;
}
Message m = new Message();
m.what = VoiceForm.TIME;
VoiceForm.this.handler.sendMessage(m);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}

}
class UpdateStatus extends Thread {
@Override
public void run() {
super.run();
while (true) {
if (i == GlobalValues.AUIO_LENGTH || MODE != TIME) {
MODE = 0;
updateStatus.stop();
updateStatus = null;
break;
}
Message m = new Message();
m.what = VoiceForm.TIME;
VoiceForm.this.handler.sendMessage(m);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}

}
在android的oncreate()方法中添加如下代码

Java代码
handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case VoiceForm.TIME:
i++;
myTextView1.setText("正在录音:" + i + "秒");
break;
}
super.handleMessage(msg);
}
};
handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case VoiceForm.TIME:
i++;
myTextView1.setText("正在录音:" + i + "秒");
break;
}
super.handleMessage(msg);
}
};
然后在需要用到线程的地方,启动线程就行了

这样做是因为android只能在它自己开的主线程中进行ui操作,用户开启的线程通过Message对象告知handler进行如何操作,相当于用户开启的线程只是起到一个通知作用,在handler的实现类中通过switch与case可实现用户的多种操作

使用Chronometer 间断计时

博客分类:
android
Android
比较重要的方法

setBase(long time);

start();

getBase();

其中,对setBase加入参数如下:

setBase(SystemClock.elapsedRealtime());

这样可以实现从0开始计时,并且可以停止与继续计时的效果(android默认是打开含有Chronometer 的activity时,Chronometer 就开始计时,不管你有有没有通过按钮调用它的start()方法)

其它的SystemClock方法如下

SystemClock.elapsedRealtime();//基础时间
SystemClock.uptimeMillis();

SystemClock.currentThreadTimeMillis();//当前线程开启的时间长度

Android中VideoView播放当前工程中视频文件的方法

博客分类:
android
Android
前两天跟老板一起研究了很久播放本地工程中的文件,怎么也试不出来

最后还是老板发现了一个东西

在VideoView设置uri的时候,加上"android:resource//你的应用包名"+视频文件在R文件中的ID名称

例如:

Java代码
videoView = (VideoView) this.findViewById(R.id.VideoView01);
MediaController controller = new MediaController(this);
this.videoView.setMediaController(controller);
//下面android:resource://是固定的,org.dengzh是我的包名,R.raw.movie_1是id名称
videoView.setVideoURI(Uri.parse("android.resource://org.dengzh/"+R.raw.movie_1));
videoView = (VideoView) this.findViewById(R.id.VideoView01);
MediaController controller = new MediaController(this);
this.videoView.setMediaController(controller);
//下面android:resource://是固定的,org.dengzh是我的包名,R.raw.movie_1是id名称
videoView.setVideoURI(Uri.parse("android.resource://org.dengzh/"+R.raw.movie_1));
这样的话,就可以播放本地的视频了

Android横竖屏切换方法

博客分类:
android
Android游戏XML活动Blog
Java代码
关于Android横竖屏切换的解决方法

转载自:http://rayleung.iteye.com/blog/426972


在开发游戏的时候,有些游戏是只能横屏玩的,所以手机竖立放置的时候,要保持游戏画面依然横屏。要做到这个要求其实很简单,在 AndroidManifest.xml里面配置一下就可以了。加入这一行 android:screenOrientation="landscape"。

例如(landscape是横向,portrait是纵向):
Java代码

1. <?xml version="1.0" encoding="utf-8"?>
2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3. package="com.ray.linkit"
4. android:versionCode="1"
5. android:versionName="1.0">
6. <application android:icon="@drawable/icon" android:label="@string/app_name">
7. <activity android:name=".Main"
8. android:label="@string/app_name"
9. android:screenOrientation="portrait">
10. <intent-filter>
11. <action android:name="android.intent.action.MAIN" />
12. <category android:name="android.intent.category.LAUNCHER" />
13. </intent-filter>
14. </activity>
15. <activity android:name=".GamePlay"
16. android:screenOrientation="portrait"></activity>
17. <activity android:name=".OptionView"
18. android:screenOrientation="portrait"></activity>
19. </application>
20. <uses-sdk android:minSdkVersion="3" />
21. </manifest>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ray.linkit"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GamePlay"
android:screenOrientation="portrait"></activity>
<activity android:name=".OptionView"
android:screenOrientation="portrait"></activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>

另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次 Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,你可以把以下方法放在你的OnCreate中来检查当前的方向,然后可以让你的SetContentView来载入不同的Layout xml.

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {

Log.i("info", "landscape");

}

else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {

Log.i("info", "portrait");

}

关于屏幕切换的时候
首先需要在androidmanifest.xml中加入配置
android:configChanges="orientation|keyboardHidden|navigation
这样在程序中. Activity就不会重复的调用onCreate()
甚至不会调用onPause.onResume.
只会调用一个onConfigurationChanged(Configuration newConfig)
这是在XML加入配置选项的前提下.

如果在就加入选项的前提下.如上所说. Activity会重新激活onCreate方法

根据你自己的需求来选择配置改变时的处理机制这样比较好一点。
关于Android横竖屏切换的解决方法

转载自:http://rayleung.iteye.com/blog/426972


在开发游戏的时候,有些游戏是只能横屏玩的,所以手机竖立放置的时候,要保持游戏画面依然横屏。要做到这个要求其实很简单,在 AndroidManifest.xml里面配置一下就可以了。加入这一行 android:screenOrientation="landscape"。

例如(landscape是横向,portrait是纵向):
Java代码

1. <?xml version="1.0" encoding="utf-8"?>
2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3. package="com.ray.linkit"
4. android:versionCode="1"
5. android:versionName="1.0">
6. <application android:icon="@drawable/icon" android:label="@string/app_name">
7. <activity android:name=".Main"
8. android:label="@string/app_name"
9. android:screenOrientation="portrait">
10. <intent-filter>
11. <action android:name="android.intent.action.MAIN" />
12. <category android:name="android.intent.category.LAUNCHER" />
13. </intent-filter>
14. </activity>
15. <activity android:name=".GamePlay"
16. android:screenOrientation="portrait"></activity>
17. <activity android:name=".OptionView"
18. android:screenOrientation="portrait"></activity>
19. </application>
20. <uses-sdk android:minSdkVersion="3" />
21. </manifest>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ray.linkit"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GamePlay"
android:screenOrientation="portrait"></activity>
<activity android:name=".OptionView"
android:screenOrientation="portrait"></activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>

另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次 Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,你可以把以下方法放在你的OnCreate中来检查当前的方向,然后可以让你的SetContentView来载入不同的Layout xml.

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {

Log.i("info", "landscape");

}

else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {

Log.i("info", "portrait");

}

关于屏幕切换的时候
首先需要在androidmanifest.xml中加入配置
android:configChanges="orientation|keyboardHidden|navigation
这样在程序中. Activity就不会重复的调用onCreate()
甚至不会调用onPause.onResume.
只会调用一个onConfigurationChanged(Configuration newConfig)
这是在XML加入配置选项的前提下.

如果在就加入选项的前提下.如上所说. Activity会重新激活onCreate方法

根据你自己的需求来选择配置改变时的处理机制这样比较好一点。
设置ImageButton按下后的效果
博客分类:
android
UP
Java代码
ImageButton imgb = (ImageButton) findViewById(R.id.ImageButton01);
imgb.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
TextView txt = (TextView) findViewById(R.id.TextView01);
txt.setText("图片按钮被单击了");
v.setBackgroundResource(R.drawable.img_10_10);
}
});

imgb.setOnTouchListener(new Button.OnTouchListener() {

//按下时进行图片颜色的过滤处理
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.getBackground().setColorFilter(
new ColorMatrixColorFilter(BT_SELECTED));
v.setBackgroundDrawable(v.getBackground());
} else if (event.getAction() == MotionEvent.ACTION_UP) {
v.getBackground().setColorFilter(
new ColorMatrixColorFilter(BT_NOT_SELECTED));
v.setBackgroundDrawable(v.getBackground());
}
return false;
}

});

}

/**
* 按下这个按钮进行的颜色过滤
*/
public final static float[] BT_SELECTED = new float[] { 2, 0, 0, 0, 2, 0,
2, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0 };

/**
* 按钮恢复原状的颜色过滤
*/
public final static float[] BT_NOT_SELECTED = new float[] { 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 };
ImageButton imgb = (ImageButton) findViewById(R.id.ImageButton01);
imgb.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
TextView txt = (TextView) findViewById(R.id.TextView01);
txt.setText("图片按钮被单击了");
v.setBackgroundResource(R.drawable.img_10_10);
}
});

imgb.setOnTouchListener(new Button.OnTouchListener() {

//按下时进行图片颜色的过滤处理
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.getBackground().setColorFilter(
new ColorMatrixColorFilter(BT_SELECTED));
v.setBackgroundDrawable(v.getBackground());
} else if (event.getAction() == MotionEvent.ACTION_UP) {
v.getBackground().setColorFilter(
new ColorMatrixColorFilter(BT_NOT_SELECTED));
v.setBackgroundDrawable(v.getBackground());
}
return false;
}

});

}

/**
* 按下这个按钮进行的颜色过滤
*/
public final static float[] BT_SELECTED = new float[] { 2, 0, 0, 0, 2, 0,
2, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0 };

/**
* 按钮恢复原状的颜色过滤
*/
public final static float[] BT_NOT_SELECTED = new float[] { 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 };

Android中去除标题,全屏,获得屏幕方向及键盘状态

博客分类:
android
Android游戏
Android全屏设置代码

如果你在开发游戏或一个主题风格很特别的应用可能需要全屏显示,在Android中全屏窗口的代码很简单,主要分为两个步骤和一个注意点:

requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //设置全屏

注意的是这些调用要放在SetContentView前面,否则无法生效或结果有出入。

获取Android屏幕方向及键盘状态

很多开发Android的网友可能需要判断当前的屏幕方向或键盘状态,下面的代码可以判断出横屏landscape和常规的portrait纵握方式,如果使用的是G1这样有QWERTY键盘硬件的,还可以判断屏幕方向以及键盘的拉出状态。

Configuration config = getResources().getConfiguration();
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE){
//横屏,比如 480x320
}else if(config.orientation == Configuration.ORIENTATION_PORTRAIT){
//竖屏 ,标准模式 320x480
}else if(config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_NO){
//横屏,Android123提示物理键盘滑出了
}else if(config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES){
//竖屏,键盘隐藏了
}

更多相关文章

  1. (Android) Eclipse "launching delegate" 停在 27%的解决方法
  2. Cocos2dx android 部分代码的理解
  3. Android设置透明、半透明等效果
  4. Android(安卓)中的dm-verity原理分析
  5. Android的DialogFragment的基本使用方法
  6. 在android中添加欢迎页
  7. Android之SDK、NDK、JNI和so文件
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android基础复习
  2. android4.4 安装微信7.0.6版本底部显示黑
  3. 大量正规厂商进驻Android Market,请国人务
  4. android 图片占用进程的内存算法
  5. Android 修炼之路
  6. Android Zip文件解压缩代码
  7. Android之布局属性重点
  8. 用Android Studio 运行ndk 程序
  9. Android Gradle 插件
  10. Android的webview做web应用研究