마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 갤러리 두줄나열 질문입니다..꼭 대답해주세요!!ㅠㅠ

0 추천

제가 말하는 갤러리라는것이 안드로이드 갤러리 바둑판모양이아니라

한줄로 슬라이드하면서 보는 그런 갤러리를 말하는 겁니다

 

제가 만들고 싶은 앱은

gravity:top주고 갤러리를 위에 1줄

gravity_bottom주고 갤러리를 아래에 1줄 나열하고

각각 이미지를 선택하면 ImageView로 가운데에 두개의 이미지가 합쳐진 마크가 나오게 하는 것입니다

지금 어떤상황이냐면

그래비티를주어도 갤러리가 가운데에뜨고 그것마저도 갤러리1은 안나오고 갤러리2만 나오는 것입니다...

그리고 이미지뷰도 가운데고뭐고 갤러리 바로 오른쪽에 나타납니다ㅠㅠ

 

xml과 java소스를 보여드릴게여 무엇이 잘못되었는지 알려주시면 감사하겠습니다...

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:gravity="center"
 android:background="@drawable/pic01">

 <LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="top" >

  <Gallery
   android:id="@+id/gallery1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:gravity="top" />

  <ImageView
   android:id="@+id/image1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

 </LinearLayout>


 <LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="bottom" >
 
  <Gallery
   android:id="@+id/gallery2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

  <ImageView
   android:id="@+id/image2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

 </LinearLayout>

</LinearLayout>

 

 

package com.mycompany.myapp;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;

public class a extends Activity
{
 Integer[] images = {R.drawable.pic1, R.drawable.pic2, R.drawable.pic6 };
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a);
  
  Gallery gallery = (Gallery) findViewById(R.id.gallery1);
  
  gallery.setAdapter(new ImageAdapter(this));
  
  gallery.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView parent, View v, int position, long id) {
    ImageView imageView = (ImageView) findViewById(R.id.image1);
    
    imageView.setScaleType(ImageView.ScaleType.FIT_START);
    
    imageView.setImageResource(images[position]);
    
   }
  });
    }
 public class ImageAdapter extends BaseAdapter {
  private Context context;
  
  public ImageAdapter(Context c) {
   context = c;
  }
  
  public int getCount() {
   return images.length;
   
  }
  
  public Integer getItem(int position) {
   return images[position];
   
  }
  
  public long getItemId(int position) {
   return position;
   
  }
  
  public View getView(int position, View convertView, ViewGroup parent) {
   ImageView imageView = new ImageView(context);
   imageView.setImageResource(getItem(position));
   imageView.setAdjustViewBounds(true);
   
   imageView.setLayoutParams(new Gallery.LayoutParams(100, 80));
   
   return imageView;
   
 }
 
 }
 
 }
 
public class a extends Activity // 걍 복붙햇는데 이렇게해도 둘다되는건지 궁금하네여
{
 Integer[] images = {R.drawable.pic3, R.drawable.pic4, R.drawable.pic5 };
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a);

  Gallery gallery = (Gallery) findViewById(R.id.gallery2);

  gallery.setAdapter(new ImageAdapter(this));

  gallery.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView parent, View v, int position, long id) {
     ImageView imageView = (ImageView) findViewById(R.id.image2);

     imageView.setScaleType(ImageView.ScaleType.FIT_END);

     imageView.setImageResource(images[position]);

    }
   });
    }
 public class ImageAdapter extends BaseAdapter {
  private Context context;

  public ImageAdapter(Context c) {
   context = c;
  }

  public int getCount() {
   return images.length;

  }

  public Integer getItem(int position) {
   return images[position];

  }

  public long getItemId(int position) {
   return position;

  }

  public View getView(int position, View convertView, ViewGroup parent) {
   ImageView imageView = new ImageView(context);
   imageView.setImageResource(getItem(position));
   imageView.setAdjustViewBounds(true);

   imageView.setLayoutParams(new Gallery.LayoutParams(100, 80));

   return imageView;

  }

 }

}

 

 

 

 

현호 (120 포인트) 님이 2014년 6월 21일 질문

1개의 답변

0 추천
원하시는 방식은 안드로이드 자체 기능으로 해결하실수 있는 부분이 아닙니다.

외부 라이브러리가 있는지는 모르겠으나 별도의 모듈을 개발하시거나 외부 라이브러리를 활용해셔야 합니다.

두 이미지를 입력받아 하나의 겹쳐진 이미지를 만드시는것은 자체 api로 해결 할 수 없습니다.
쭈쭈총각 (17,750 포인트) 님이 2014년 6월 23일 답변
아... 질문을 다시 읽어보니... 배경 그림을 먼저 선택하고 그위에 마크 이미지를 선택해서 두개 합쳐진 그림을 뛰우는 방식인거죠?
그러한 방법이라면 배경 비트맵을 만들어 그 위에 마크 비트맵을 그려주고 최초 배경 비트맵을 캔버스에 draw 해주시고 그 배경을 저장해주시면 됩니다.
...