当前位置:  编程技术>移动开发
本页文章导读:
    ▪烦,surfaceview 回调怎么回事        烦,surfaceview 回调咋回事 访问SurfaceView的底层图形是通过SurfaceHolder接口来实现的,通过getHolder()方法可以得到这个SurfaceHolder对象。你应该实现surfaceCreated(SurfaceHolder)和surfaceDestroyed(SurfaceHolder).........
    ▪ 判断联系人Contacts的版本有关问题        判断联系人Contacts的版本问题 Intent intent = null;                         ClassLoader classLoader = DialerContactList.class.getClassLoader();                         try                         {      .........
    ▪ Enum恒量放入NSArray的方法       Enum常量放入NSArray的方法 ypedef enum {     UIViewAnimationCurveEaseInOut,     UIViewAnimationCurveEaseIn = 0,     UIViewAnimationCurveEaseOut,     UIViewAnimationCurveLinear } UIViewAnimationCurve; This result of this would be: UIVie.........

[1]烦,surfaceview 回调怎么回事
    来源: 互联网  发布时间: 2014-02-18
烦,surfaceview 回调咋回事

访问SurfaceView的底层图形是通过SurfaceHolder接口来实现的,通过getHolder()方法可以得到这个SurfaceHolder对象。你应该实现surfaceCreated(SurfaceHolder)和surfaceDestroyed(SurfaceHolder)方法来知道在这个Surface在窗口的显示和隐藏过程中是什么时候创建和销毁的。
SurfaceView可以在多线程中被访问。
注意:一个SurfaceView只在SurfaceHolder.Callback.surfaceCreated() 和 SurfaceHolder.Callback.surfaceDestroyed()调用之间是可用的,其他时间是得不到它的Canvas对象的(null)。

我的访问过程:
创建一个SurfaceView的子类,实现SurfaceHolder.Callback接口。
得到这个SurfaceView的SurfaceHolder对象holder。
holder.addCallback(callback),也就是实现SurfaceHolder.Callback接口的类对象。
在SurfaceHolder.Callback.surfaceCreated()调用过后holder.lockCanvas()对象就可以得到SurfaceView对象对应的Canvas对象canvas了。
用canvas对象画图。
画图结束后调用holder.unlockCanvasAndPost()就把图画在窗口中了。
SurfaceView可以多线程访问,在多线程中画图。


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class MySurfaceView extends SurfaceView implements
SurfaceHolder.Callback {


private Context mContext;
private SurfaceHolder mHolder;

public TouchScreenAdjusterSurfaceView(Context context,) {
super(context);

mContext = context;

mHolder = TouchScreenAdjusterSurfaceView.this.getHolder();
mHolder.addCallback(TouchScreenAdjusterSurfaceView.this);

this.setFocusableInTouchMode(true); // to make sure that we can get
// touch events and key events,and
// "setFocusable()" to make sure we
// can get key events
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder holder) {
//now you can get the Canvas and draw something here
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub

}


public void drawMyShape(PointPostion ps) {

mCanvas = mHolder.lockCanvas();

// draw anything you like

mHolder.unlockCanvasAndPost(mCanvas);
}

}


最近碰到以怪事,surfaceView.callback的surfaceCreated死活不能执行,不知道怎么搞,到处搜搜,把东西贴上来,慢慢研究,不知哪位高手能介绍下surfaceview回调函数的运行原理,什么时候加载,什么时候结束,郁闷,搞这个回调现在只能碰运气,烦死了
1 楼 CrackRen 2010-09-21  
你贴出来的代码有一点问题,构造函数和类不是同名,如果改成同名后编译通过的话,surfaceCreated是肯定会被执行的,如果还是没有执行的话,那你可以犯了一个错误.

就是在你定义的Activity类中调用了
setContentView(new TouchScreenAdjusterSurfaceView(this));
后有死循环,没有叫程序继续执行下去,这样系统只是设置完成,确无法执行.
如果做游戏的话,用线程吧

    
[2] 判断联系人Contacts的版本有关问题
    来源: 互联网  发布时间: 2014-02-18
判断联系人Contacts的版本问题

Intent intent = null;
                        ClassLoader classLoader = DialerContactList.class.getClassLoader();
                        try
                        {
                                classLoader.loadClass("android.provider.ContactsContract");
                                intent = new Intent(Intent.ACTION_PICK,Uri.parse("content://
com.android.contacts/data/phones"));
                        }
                        catch (ClassNotFoundException e)
                        {
                        }
                        if (intent == null)
                        {
                                intent = new Intent(Intent.ACTION_PICK,Phones.CONTENT_URI);
                        }
                        startActivityForResult(intent, ADD_CONTACT);


    
[3] Enum恒量放入NSArray的方法
    来源: 互联网  发布时间: 2014-02-18
Enum常量放入NSArray的方法

ypedef enum {
    UIViewAnimationCurveEaseInOut,
    UIViewAnimationCurveEaseIn = 0,
    UIViewAnimationCurveEaseOut,
    UIViewAnimationCurveLinear
} UIViewAnimationCurve;

This result of this would be: UIViewAnimationCurveEaseInOut is 0; UIViewAnimationCurveEaseIn is 0; UIViewAnimationCurveEaseOut is 1; and so on. However, for basic purposes you shouldn't need to do anything like that; it just gives you some useful info to toy with.

It should be noted based on the above, that an enum can't assume to be a unique value; different enum identifiers can be equal in value to each other.

Adding an enum item to a NSArray is as simple as adding an integer. The only difference would be that you use the enum identifer instead.

[myArray addObject:[NSNumber numberWithInt:UIViewAnimationCurveEaseInOut]];


    
最新技术文章:
▪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