当前位置:  编程技术>移动开发
本页文章导读:
    ▪手机挥动检测        手机晃动检测 参考 http://blog.csdn.net/zhengzhiren/article/details/5930451   package zhengzhiren.android.hardware; import java.util.ArrayList; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEv.........
    ▪ 网格格局 TableLayout        网格布局 TableLayout   <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="f.........
    ▪ 创设可拉伸图片       创建可拉伸图片 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,.........

[1]手机挥动检测
    来源: 互联网  发布时间: 2014-02-18
手机晃动检测

参考 http://blog.csdn.net/zhengzhiren/article/details/5930451

 

package zhengzhiren.android.hardware;
import java.util.ArrayList;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.FloatMath;
/**
 * 用于检测手机摇晃
 * 
 * @author 郑智仁
 * @see <a href="http://blog.csdn.net/zhengzhiren" mce_href="http://blog.csdn.net/zhengzhiren">Blog</a>
 */
public class ShakeDetector implements SensorEventListener {
	/**
	 * 检测的时间间隔
	 */
	static final int UPDATE_INTERVAL = 100;
	/**
	 * 上一次检测的时间
	 */
	long mLastUpdateTime;
	/**
	 * 上一次检测时,加速度在x、y、z方向上的分量,用于和当前加速度比较求差。
	 */
	float mLastX, mLastY, mLastZ;
	Context mContext;
	SensorManager mSensorManager;
	ArrayList<OnShakeListener> mListeners;
	/**
	 * 摇晃检测阈值,决定了对摇晃的敏感程度,越小越敏感。
	 */
	public int shakeThreshold = 5000;
	public ShakeDetector(Context context) {
		mContext = context;
		mSensorManager = (SensorManager) context
				.getSystemService(Context.SENSOR_SERVICE);
		mListeners = new ArrayList<OnShakeListener>();
	}
	/**
	 * 当摇晃事件发生时,接收通知
	 */
	public interface OnShakeListener {
		/**
		 * 当手机摇晃时被调用
		 */
		void onShake();
	}
	/**
	 * 注册OnShakeListener,当摇晃时接收通知
	 * 
	 * @param listener
	 */
	public void registerOnShakeListener(OnShakeListener listener) {
		if (mListeners.contains(listener))
			return;
		mListeners.add(listener);
	}
	/**
	 * 移除已经注册的OnShakeListener
	 * 
	 * @param listener
	 */
	public void unregisterOnShakeListener(OnShakeListener listener) {
		mListeners.remove(listener);
	}
	/**
	 * 启动摇晃检测
	 */
	public void start() {
		if (mSensorManager == null) {
			throw new UnsupportedOperationException();
		}
		Sensor sensor = mSensorManager
				.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		if (sensor == null) {
			throw new UnsupportedOperationException();
		}
		boolean success = mSensorManager.registerListener(this, sensor,
				SensorManager.SENSOR_DELAY_GAME);
		if (!success) {
			throw new UnsupportedOperationException();
		}
	}
	/**
	 * 停止摇晃检测
	 */
	public void stop() {
		if (mSensorManager != null)
			mSensorManager.unregisterListener(this);
	}
	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub
	}
	@Override
	public void onSensorChanged(SensorEvent event) {
		long currentTime = System.currentTimeMillis();
		long diffTime = currentTime - mLastUpdateTime;
		if (diffTime < UPDATE_INTERVAL)
			return;
		mLastUpdateTime = currentTime;
		float x = event.values[0];
		float y = event.values[1];
		float z = event.values[2];
		float deltaX = x - mLastX;
		float deltaY = y - mLastY;
		float deltaZ = z - mLastZ;
		mLastX = x;
		mLastY = y;
		mLastZ = z;
		float delta = FloatMath.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ
				* deltaZ)
				/ diffTime * 10000;
		if (delta > shakeThreshold) { // 当加速度的差值大于指定的阈值,认为这是一个摇晃
			this.notifyListeners();
		}
	}
	/**
	 * 当摇晃事件发生时,通知所有的listener
	 */
	private void notifyListeners() {
		for (OnShakeListener listener : mListeners) {
			listener.onShake();
		}
	}
}
 

 


    
[2] 网格格局 TableLayout
    来源: 互联网  发布时间: 2014-02-18
网格布局 TableLayout



 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<TableLayout 
android:id="@+id/TableLayout01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:collapseColumns="2"
android:stretchColumns="1"
>
	
	<TableRow 
	android:id="@+id/TableRow01" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content">
		<TextView 
		android:text="用户名称" 
		android:id="@+id/TextView01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></TextView>
		
		<EditText 
		android:text="admin" 
		android:id="@+id/EditText01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></EditText>
	</TableRow>
	
	<TableRow 
	android:id="@+id/TableRow01" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content">
		<TextView 
		android:text="用户密码" 
		android:id="@+id/TextView01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></TextView>
		
		<EditText 
		android:text="123" 
		android:id="@+id/EditText01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"
		android:password="true"
		
		></EditText>
	</TableRow>
	
	
	<TableRow 
	android:id="@+id/TableRow01" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content">
		<Button 
		android:text="注册" 
		android:id="@+id/register" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></Button>
		
		<Button 
		android:text="取消" 
		android:id="@+id/cancel" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></Button>
	</TableRow>

</TableLayout>
</LinearLayout>

 


    
[3] 创设可拉伸图片
    来源: 互联网  发布时间: 2014-02-18
创建可拉伸图片

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是不拉伸区域和左边框的宽度,第二个参数是不拉伸区域和上边框的宽度。

第一次用这个函数的时候一直搞不懂为什么只要两个参数就行,至少应该指定左上角和右下角,总共四个参数啊。后来读读文档才明白,只需要两个参数就行了。

参数的意义是,如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。注意:只是对一个像素进行复制到一定宽度。

附:两个聊天用的汽泡,与参数值。
 15,13
21,13

 

UIImage *stetchLeftTrack = [[UIImage imageNamed:@"orangeslide.png"]

stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

1 楼 liuxco 2011-10-14  
疑问:如果采用动画过度拉伸一个UIImage,四个角得情况是怎样?
情况1:四个角遵照stretchableImageWithLeftCapWidth方法的标准,保持不变中间拉伸。
情况2:四个角采取普通UIImage拉伸方式,直到拉伸到stretchableImageWithLeftCapWidth方法设定的大小,然后切换到四角不变的状态。(这样就会产生视觉跳跃)

引申问题:ios的动画过程是怎样的处理机制?

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3