2016-06-24 8 views
0

私のアンドロイドアプリでは、タッチスクリーンメソッドを追加するときに、同じキーボードをonkeyメソッドで読みたいと思っています。アンドロイド5.1アプリでタッチスクリーンとキーボード(外付けキーボード)を同時に使用する方法は?

私の質問は:どのように私はそれらを同時に使用することができます。ここ

は私のメインクラスです:

public class SingleTouchActivity extends AppCompatActivity { 


EditText edit; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
// setContentView(R.layout.activity_single_touch); 

    setContentView(new SingleTouchEventView(this, null)); 
    edit= (EditText) findViewById(R.id.editText); 
    } 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_0){ 
    edit.setText("here we go"); 

    } 
    return super.onKeyDown(keyCode,event); 

} 

} 

と私はdrawメソッドをテストするタッチスクリーンのためのクラスを持っている:

public class SingleTouchEventView extends View { 

private Paint paint = new Paint(); 
private Path path = new Path(); 

public SingleTouchEventView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.setFocusable(true); 

    paint.setAntiAlias(true); 
    paint.setStrokeWidth(6f); 
    paint.setColor(Color.BLACK); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeJoin(Paint.Join.ROUND);  
} 

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawPath(path, paint); 
} 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float eventX = event.getX(); 
    float eventY = event.getY(); 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      path.moveTo(eventX, eventY); 
      return true; 
     case MotionEvent.ACTION_MOVE: 
      path.lineTo(eventX, eventY); 
      break; 
     case MotionEvent.ACTION_UP: 
      // nothing to do 
      break; 
     default: 
      return false; 
    } 
    // Schedules a repaint. 
    invalidate(); 
    return true; 
} 
} 

答えて

0

私はアプリのためのよりシンプルで解決策を発見しました。それが誰かを助けることを願っています。 `パブリッククラスMainActivityはAppCompatActivity {

View myView; 
    public boolean tmpflag = true; 


    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myView= findViewById(R.id.Rec); 
} 
@Override 
    public boolean dispatchTouchEvent(MotionEvent ev) { 
    int action = ev.getAction(); 

    if (action == MotionEvent.ACTION_DOWN) { 

     if (tmpflag) { 

      myView.setBackgroundColor(Color.RED); 
      tmpflag = false; 
     } else { 

      myView.setBackgroundColor(Color.BLUE); 
      tmpflag = true; 
     } 
     return true; 
    } 

    return super.dispatchTouchEvent(ev); 
    } 

    public boolean dispatchKeyEvent(KeyEvent event) { 

    int action = event.getAction(); 
    int keycode= event.getKeyCode(); 


    if (action == KeyEvent.ACTION_DOWN) { 
     if (keycode ==KeyEvent.KEYCODE_ENTER){ 


     if (tmpflag) { 

      myView.setBackgroundColor(Color.RED); 
      tmpflag = false; 
     } else { 

      myView.setBackgroundColor(Color.BLUE); 
      tmpflag = true; 
     } } 
     return true; 
    } 

    return super.dispatchKeyEvent(event); 
} 

} '

0

は、お使いのデバイスのサポート、マルチタッチをい?

はい場合は、これを試してみてください。(私は、この作品を願っ)

public class SingleTouchActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.activity_single_touch); 

     setContentView(new SingleTouchEventView(this, null)); 

     try { 
      ViewGroup vx = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content); 
      EditText et = new EditText(this); 
      et.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
      vx.addView(et); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 

    } 
} 
+0

はい、私のデバイスサポートマルチタッチを拡張します。私は解決策を見つけました。それを使うもっと簡単な方法があります。私はキーボードを使用するときにテキストを編集したくない。私はユーザーの入力(バーコード)を読むためにusbスキャナでキーボードを置き換えます。あなたに王様ありがとう! –

+0

あなたは@ Ismaela.Dのソリューションを見つけたと聞いてうれしいです:) –

関連する問題