私は Android を初めて使用し、Android プロジェクトにデフォルトの MainActivity クラス以外のクラスを作成しました。そのファイルを使用してプロジェクトを開始したいと考えています。マニフェストファイルに追加したものは次のとおりです。
<activity
android:name="com.example.surfaceview.SurfaceViewExample"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.SURFACEVIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
そして、私が作成したクラス:
public class SurfaceViewExample extends Activity implements OnTouchListener {
OurView v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
v=new OurView(this);
setContentView(v);
v.setOnTouchListener(this);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
v.pause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
v.resume();
}
public class OurView extends SurfaceView implements Runnable{
Thread t = null;
SurfaceHolder holder;
boolean isItOK=false;
public OurView(Context context) {
super(context);
holder=getHolder();
}
@Override
public void run() {
while(isItOK){
if(holder.getSurface().isValid()){
continue;
}
Canvas c = holder.lockCanvas();
c.drawARGB(255, 155, 155, 10);//canvas backgroundu boyama
holder.unlockCanvasAndPost(c);
}
}
public void pause(){ //pause the thread
isItOK=false;
while(true){
try{
t.join();
}catch(InterruptedException e){
e.printStackTrace();
}
break;
}
t=null;
}
public void resume(){ //resume the thread
isItOK=true;
t=new Thread(this); //this parameter means use this run method
//which is inside that class
t.start();
}
}
@Override
public boolean onTouch(View v, MotionEvent me) {
return false;
}
}
しかし、アプリケーションは起動しません。問題はインテント フィルター内の次の行にある可能性があると思います。
<action android:name="android.intent.action.SURFACEVIEW" />
誰でもこれで私を助けることができますか?
ありがとう