안녕하세요.
가입해놓고 좋은정보를 많이 얻어가다가,
처음으로 글남기네여^^
다름이 아니라 지금 제가 모듈을 구성중인데...
그 구조가 EditText를 추가하기가 너무 난해? 무지하여 질문드립니다.
우선 구조는 아래에 적어놨습니다.
궁금한점이..
XML의 기본세팅을 유지한채 실제 코드로 모든걸 처리하고있습니다.
헌데 위젯의 다른기능은 상관이없지만,
EditText로 입력을 받아야 하는 경우가 있어서요..
View를 상속받은 클래스내에서 처리를 하고싶은데...
어떻게해야할지 자료 리서칭을 해봐도 답이 나오질 않네요...
즉, 어떤화면이 뷰에서 그려지고 있을때 EditText를 사용자가 원하는 위치에 위치시키고 사용자 입력을 받고싶습니다.
(EditText를 보였다 입력이 완료되면 사라지게 해야하는데, 뷰클래스 하나로 이게 가능할지도 의문이네여...)
어떻게해야 될지 답변좀 부탁드립니다.
(EditText가 아니더라도 사용자 입력을 받아들일 수 있는 다른 방법이 있다면 그 방법도 답변좀 부탁드립니다^^)
AndroidManifest.xml의 구조는 아래와 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Lib.Android.Base"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".StartAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> </uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
</manifest>
그리고 메인 ACTIVITY의 내용은 아래와 같습니다.
package Lib.Android.Base;
import android.app.Activity;
import android.os.Bundle;
import android.util.*;
import android.view.*;
public class StartAndroid extends Activity {
/** Called when the activity is first created. */
public View AndroidView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.i("MODULE_LOG", "public void onCreate(Bundle savedInstanceState)");
//setContentView(R.layout.main);
//---------------------------------------------------------------------------------
// Is Android TitleWindow Support?
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndroidView = new AndroidView(this);
setContentView(AndroidView);
}
}
마지막으로 VIEW를 상속받은 클래스는 아래와 같습니다.
package Lib.Android.Base;
/*********************************************************************
Import Android SDK Class.
*********************************************************************/
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.media.*;
import android.widget.*;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.net.*;
/*********************************************************************
Import Android Library.
*********************************************************************/
import Lib.Android.Base.UserDefine;
import Lib.Android.Base.Util.*;
import Lib.Android.Base.Net.*;
public class AndroidView extends View implements Runnable, ProNetWorkEventListener, View.OnTouchListener
{
/*********************************************************************
Varications...
*********************************************************************/
public UserDefine DEF = new UserDefine();
public ProLib Lib = new ProLib();
public ProNetWorkMgr Net = new ProNetWorkMgr(this);
public PacketHeader SHeader = new PacketHeader();
public PacketHeader RHeader = new PacketHeader();
public Thread MainThread = null;
public Paint paint;
public Context context;
public int ScreenWidth;
public int ScreenHeight;
public int TouchX;
public int TouchY;
public int mx[] = new int[5];
public int mr[] = new int[5];
public int Rotate = 0;
public EditText Input;
/*********************************************************************
Android View Class Constructor.
* ********************************************************************/
public AndroidView(Context cxt)
{
super(cxt);
Log.i("MODULE_LOG", "public AndroidView(Context cxt)");
//---------------------------------------------------------------------------------
// Context Remember.
context = cxt.getApplicationContext();
//---------------------------------------------------------------------------------
// This screen is get the focusing.
setFocusable(true);
//---------------------------------------------------------------------------------
// Make the paint.
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLUE);
//---------------------------------------------------------------------------------
// Init Android Library.
Lib.Init_ProLib(context, paint);
Lib.LoadImage(0, R.drawable.logo, 45, 30, 30);
Lib.LoadImage(1, R.drawable.number);
//MainThread = new Thread(this);
//MainThread.start();
//Input = new EditText(cxt);
//Input.setMovementMethod(null);
//Input.setOnTouchListener(this);
}
public void run()
{
try
{
// Process User Code.
postInvalidate();
Thread.sleep(10);
}
catch(Exception e) { e.printStackTrace(); }
}
/*********************************************************************
User Input Interface.
*********************************************************************/
public boolean onTouch(View v, MotionEvent event)
{
return true;
}
/*********************************************************************
Screen Draw Override Function.
*********************************************************************/
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
//Log.i("MODULE_LOG", "protected void onDraw(Canvas canvas)");
DrawScreen(canvas);
}
public void DrawScreen(Canvas canvas)
{
// User Draw Code.
}