2013-09-12 6 views
1

Я использую SandBoxView от Fredrik Bornander's из этого урока http://www.codeproject.com/Articles/319401/Simple-Gestures-on-Android
Он работает эффективно для изображения, но я хочу использовать несколько изображений.
Вот мой код в GestureActivity, но он по-прежнему работает только для одного изображения.
Может ли кто-нибудь мне помочь?Sandboxview с несколькими изображениями

общественный класс GesturesActivity расширяет активность {

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.d); 
    SandboxView s = new SandboxView(this, bitmap); 

    Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.a); 
    SandboxView s2 = new SandboxView(this, bitmap2); 


    RelativeLayout ly=new RelativeLayout(this); 
    ly.addView(s); 
    ly.addView(s2); 
    setContentView(ly); 
} 

ответ

0

Проблема заключается в том, что этот контроль не закладываются с любым LayoutParameters и он всегда будет принимать все доступное пространство, если это имеет место, так что вы получите два перекрытия SandboxView, и это означает, что только верхний получает события касания.

Чтобы устранить это (без лишних хлопот), измените расположение, чтобы убедиться, что доступное пространство разделено между двумя элементами управления;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.d); 
    SandboxView s = new SandboxView(this, bitmap); 

    Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.a); 
    SandboxView s2 = new SandboxView(this, bitmap2); 

    LinearLayout l = new LinearLayout(this); 
    l.setOrientation(LinearLayout.VERTICAL); 

    // Note the weight parameter of 1, making sure they split the space between them 
    LayoutParams lp1 = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 1); 
    LayoutParams lp2 = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 1); 
    l.addView(s, lp1); 
    l.addView(s2, lp2); 
    setContentView(l); 
} 

Это легче сделать, если добавить три конструкторами SandboxView от его базового класса View, что позволит управления, чтобы показать в дизайнере, и это намного легче играть с расположением в там (что, по общему признанию, я должен был сделать в первую очередь, когда писал статью).

Смежные вопросы