8-11

//服务器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.Web.Services;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;

namespace WebService1
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
         /*
        [WebMethod]
        public string  PutImage1()
        {
           
            FileStream fin = new FileStream("C:\\Users\\samsung\\Desktop\\filename.txt", FileMode.Open, FileAccess.Read);
            StreamReader brin = new StreamReader(fin, Encoding.Default);
            string s = brin.ReadToEnd(); brin.Close();
            Console.WriteLine(s);

            byte[] ImgIn = Convert.FromBase64String(s);
            System.IO.MemoryStream ms =
               new System.IO.MemoryStream(ImgIn);
            System.Drawing.Bitmap b =
              (System.Drawing.Bitmap)Image.FromStream(ms);

            b.Save("E:\\yu\\WebService1\\WebService1\\images\\1.png",
                   System.Drawing.Imaging.ImageFormat.Png);
            return s;
        
           
        }
         */

        [WebMethod(Description = "上传图片")]
        public bool PutImage(string filename, string image)
        {
            //Bitmap small;
            byte[] ImgIn = Convert.FromBase64String(image);
            System.IO.MemoryStream ms =
               new System.IO.MemoryStream(ImgIn);
            System.Drawing.Bitmap b =
              (System.Drawing.Bitmap)Image.FromStream(ms);


            b.Save("E:\\project\\Linweijia\\ImagesUp\\" + filename,
                   System.Drawing.Imaging.ImageFormat.Png);

            //small = new System.Drawing.Bitmap("E:\\project\\Linweijia\\ImagesUp\\" + filename+".Png");  
            return true;


        }

        [WebMethod(Description = "下载图片")]
        public string GetImage()
        {
            MemoryStream m = new System.IO.MemoryStream();
            Bitmap bp = new System.Drawing.Bitmap("E:\\project\\Linweijia\\ImagesUp\\Hi.jpg");
            bp.Save(m, System.Drawing.Imaging.ImageFormat.Png);
            byte[] b = m.GetBuffer();
            string base64string = Convert.ToBase64String(b);
            return base64string;
        }

        [WebMethod(Description = "缩略图")]
        private void SmallPic(string strOldPic, string strNewPic, int intWidth, int intHeight) 
        { 
            System.Drawing.Bitmap objPic, objNewPic;
            try 
            { 
                objPic = new System.Drawing.Bitmap(strOldPic);
                objNewPic = new System.Drawing.Bitmap(objPic, intWidth, intHeight); 
                objNewPic.Save(strNewPic); 
            } 
            catch 
                (Exception exp) 
            { 
                throw exp;           
            } 
            finally 
            { 
                objPic = null; 
                objNewPic = null;
            }
        }

    }
}

 

GalleryAdapter.java

package com.example.test;

import java.io.File;

import java.io.FileFilter;

import java.util.HashMap;
import java.util.Vector;

 

import android.content.Context;

import android.content.res.TypedArray;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Environment;

import android.view.LayoutInflater;
import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

import android.widget.Gallery;

import android.widget.ImageView;

//public class GalleryAdapter extends BaseAdapter
public class GalleryAdapter extends BaseAdapter {
	
	private Context mContext;
	private int mCount;
	private LayoutInflater mInflater;
	private int mGalleryItemBackground;
	private HashMap<Integer,View> hm;
	public static MyFile myPics;
	private int pic_num;
	private TextView tt;
	
	public GalleryAdapter(Context c, TextView t2){
		mContext = c;
		mInflater = LayoutInflater.from(c);
		myPics = new MyFile();
		pic_num = myPics.pic_num;
		mCount = pic_num;
		hm = new HashMap<Integer,View>(mCount);		
		tt = t2;
	}
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return myPics.paths.length;
	}

	@Override
	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return arg0;
	}

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return arg0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		View i;
		ImageView imageView = null;
	//	TextView textView = null;
		CheckBox cb = null;
		i = hm.get(position);
		if (i==null){
			i = mInflater.inflate(R.layout.gallery_item, null);
			imageView = (ImageView) i.findViewById(R.id.item_gallery_image);
			cb = (CheckBox) i.findViewById(R.id.item_gallery_checkbox);
			imageView.setImageBitmap(str2bitmap(myPics.paths[position%myPics.paths.length],50,50));
			imageView.setAdjustViewBounds(true);
			cb.setOnCheckedChangeListener(new myCheckChangeListener(position));
			hm.put(position, i);
		}
		return i;
	}		
	
	public class myCheckChangeListener implements CheckBox.OnCheckedChangeListener{

    	private int mPosition;
		public myCheckChangeListener(int position) {
			// TODO Auto-generated constructor stub
			mPosition = position;
		}

		@Override
		public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
			// TODO Auto-generated method stub
			if (isChecked){
				myPics.select[mPosition] = true;
//				Toast.makeText(getBaseContext(), "你选择了第 "+Integer.toString(1+mPosition)+"张", Toast.LENGTH_SHORT).show();  
			}
			else{
				myPics.select[mPosition] = false;
//				Toast.makeText(getBaseContext(), "你取消选择了第 "+Integer.toString(1+mPosition)+"张", Toast.LENGTH_SHORT).show(); 
			}
			
			int cnt=0;
			for (int i=0; i<pic_num; i++){
				if (myPics.select[i])
					cnt++;
			}
			tt.setText(Integer.toString(cnt));
		}
    	
    }
	
	public static Bitmap str2bitmap(String path, int height, int width){
		Bitmap b = null;
		 BitmapFactory.Options options = new BitmapFactory.Options();  
		 options.inJustDecodeBounds = true;
		 b = BitmapFactory.decodeFile(path, options);  
		 options.inJustDecodeBounds = false; 
		 
		 int h = options.outHeight;
		 int w = options.outWidth;
		 int beWidth = w/width;
		 int beHeight = h/height;
		 int be = 1;

		 if (beWidth < beHeight){
			 be = beWidth;
		 }
		 else {
			 be = beHeight;
		 }
		 if (be <= 0)
			 be = 1;
		 options.inSampleSize = be;
		 b = BitmapFactory.decodeFile(path, options);
		 return b;
	}
	
	public static Bitmap str2bitmap(String path){
		Bitmap b = null;
		BitmapFactory.Options options = new BitmapFactory.Options();  	
		options.inJustDecodeBounds = false; 
		b = BitmapFactory.decodeFile(path, options);  
		return b;
	}
}


MainActivity.java

package com.example.test;

import java.io.BufferedWriter;  
import java.io.ByteArrayOutputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.util.HashMap;
  
import org.kobjects.base64.Base64;  
import org.ksoap2.SoapEnvelope;  
import org.ksoap2.serialization.SoapObject;  
import org.ksoap2.serialization.SoapSerializationEnvelope;  
import org.ksoap2.transport.HttpTransportSE;  
import android.app.Activity;    
import android.graphics.Bitmap;    
import android.graphics.BitmapFactory;    
import android.graphics.drawable.BitmapDrawable;    
import android.graphics.drawable.Drawable;    
import android.os.Bundle;    
import android.util.Log;    
import android.view.View;    
import android.view.View.OnClickListener;    
import android.view.animation.AnimationUtils;    
import android.widget.AdapterView;    
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;    
import android.widget.Gallery;    
import android.widget.ImageSwitcher;    
import android.widget.ImageView;    
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;    
import android.widget.AdapterView.OnItemClickListener;    
     
public class MainActivity extends Activity //implements OnItemSelectedListener   
{    
    Button bt;    
//    Button down;   
    static public TextView t2;
    private ImageSwitcher is;
    private boolean isExist[];
    private ProgressBar pb_upload;
   // private static final String NAMESPACE = "http://tempuri.org/";      
   // private static String URL = "http://localhost:20383/Service1.asmx";  
   // private static final String METHOD_NAME = "PutImage";  
   // private static String SOAP_ACTION = "http://tempuri.org/PutImage";  
    
       
    @Override    
    public void onCreate(Bundle savedInstanceState)    
    {    
    	super.onCreate(savedInstanceState);    
    	setContentView(R.layout.activity_main);

    	isExist = null;
    	
    	t2 = (TextView)findViewById(R.id.t2);
    	pb_upload = (ProgressBar)findViewById(R.id.progress_upload);
    	bt = (Button)findViewById(R.id.button1);    
    	
    	bt.setOnClickListener(new OnClickListener(){    

    		@Override    
    		public void onClick(View arg0) {    
    			// TODO Auto-generated method stub
    			MyFile a= GalleryAdapter.myPics;
    			if (isExist==null)
    				isExist = new boolean[a.pic_num];
    			for (int k=0; k<isExist.length; k++)
    				isExist[k]=false;
    			a.setChoosePicNum();
    			pb_upload.setProgress(0);
    			
    			new Thread(){   
    				@Override 
    				public void run() {   
    					MyFile a= GalleryAdapter.myPics;
    					int p_all = a.choose_pic_num;
    					int cnt=0;
    					for(int k=0; k<a.pic_num; k++){
    						
    						if (a.select[k])
    							cnt++;
    						pb_upload.setProgress((int)((double)cnt/p_all*100));
    						
    						if(a.select[k] && !isExist[k]){
    							testUpload(a.paths[k]);  
    							isExist[k]=true;
    						}
    						
    					}

    					
    				}   
    			}.start(); 
    			
//    			Toast.makeText(MainActivity.this, "上传成功",
//						Toast.LENGTH_SHORT).show();
			
    		} 
    		
    	});    

       //获得ImageSwitcher对象      
       is = (ImageSwitcher) findViewById(R.id.Switcher);               
       is.setFactory(new SwitcherFactory(MainActivity.this));//设置工厂,用来显示视图。      
       is.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in)); //设置切入动画 android.R.anim.slide_in_left      
       is.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));//设置切出动画 android.R.anim.slide_out_right      
          
       //获得Gallery对象      
       final Gallery g = (Gallery) findViewById(R.id.Gallery);    
       //添加ImageAdapter给Gallery对象      
       g.setAdapter(new GalleryAdapter(this,t2));    
       //设置Gallery的事件监听      
       g.setOnItemClickListener(new OnItemClickListener() {    
           public void onItemClick(AdapterView<?> parent, View v, int position, long id)    
           {    
              //设置ImageSwitcher图片来源      
           //   String imagePath = ((ImageView)v).getContentDescription().toString();    
           //   Drawable bd = new BitmapDrawable(GalleryAdapter.str2bitmap(imagePath));//ImageSwitcher图片像素缩小为原来的1/4      
           //   is.setImageDrawable(bd);    
           //    Toast.makeText(MainActivity.this,"你选择了"+(position+1)+" 号图片",Toast.LENGTH_SHORT).show();    
        	   
        	   BitmapDrawable bd = new BitmapDrawable(GalleryAdapter.str2bitmap(GalleryAdapter.myPics.paths[position%GalleryAdapter.myPics.pic_num],300,100));
        	   is.setImageDrawable(bd);
           }    
       }); 
//       g.setOnItemSelectedListener(this);
       g.setSelection(0);
       BitmapDrawable bd = new BitmapDrawable(GalleryAdapter.str2bitmap(GalleryAdapter.myPics.paths[0],300,100));
	   is.setImageDrawable(bd);
    }    
        
    
 //   public void testUpload(){ 
    public void testUpload(String path){ 
        try{     
           // String srcUrl = "/mnt/sdcard/"; //路径       
            //String fileName = "0.jpg";  //文件名       
          //  FileInputStream fis = new FileInputStream(srcUrl + fileName); 
        	String fileName = path.substring(path.lastIndexOf('/')+1,path.length());
        	FileInputStream fis = new FileInputStream(path);  
            ByteArrayOutputStream baos = new ByteArrayOutputStream();     
            byte[] buffer = new byte[1024];     
            int count = 0;     
            while((count = fis.read(buffer)) >= 0){     
                baos.write(buffer, 0, count);     
            }     
            String uploadBuffer = new String(Base64.encode(baos.toByteArray()));  //进行Base64编码    
              
            String methodName = "PutImage";     
            connectWebService(methodName,fileName, uploadBuffer);   //调用webservice       
            System.out.println(uploadBuffer);   
            Log.i("connectWebService", "start");     
            fis.close();     
        }catch(Exception e){     
            e.printStackTrace();     
        }     
    }     
    public void testDownload(){     
        String srcUrl = "/sdcard/"; //路径       
        String methodName = "GetImage";    
        String ImageBase64 = downWebService(methodName);  
        if(ImageBase64.equals("failed")) return;  
        else{  
            try {  
                byte[] buffer = Base64.decode(ImageBase64);  
                FileOutputStream writer = new FileOutputStream(new File("/sdcard/yu.png"));   
                //byte[] decoderBytes = decoder.decodeBuffer(pictureBuffer.toString());    
                writer.write(buffer);  
            } catch (IOException e) {  
                // TODO Auto-generated catch block   
                e.printStackTrace();  
            }   
              
        }  
          
    }  
    private String downWebService(String methodName) {     
        String namespace = "http://tempuri.org/";  // 命名空间,即服务器端得接口,注:后缀没加 .wsdl,     
        String SOAP_ACTION = "http://tempuri.org/"+methodName;                                                                     //服务器端我是用x-fire实现webservice接口的     
        String url = "http://10.0.2.2:20383/Service1.asmx";   //对应的url      
        //以下就是 调用过程了,不明白的话 请看相关webservice文档          
        SoapObject soapObject = new SoapObject(namespace, methodName);         
       // soapObject.addProperty("filename", fileName);  //参数1   图片名       
       // soapObject.addProperty("image", imageBuffer);   //参数2  图片字符串       
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(     
                SoapEnvelope.VER11);     
        HttpTransportSE httpTranstation = new HttpTransportSE(url);     
        envelope.dotNet = true;     
        envelope.bodyOut = soapObject;  
        envelope.setOutputSoapObject(soapObject);     
         
        try {     
            httpTranstation.call(SOAP_ACTION, envelope);     
            Object result = envelope.getResponse();     
            Log.i("connectWebService", result.toString());     
            return result.toString();     
        } catch (Exception e) {     
            e.printStackTrace();     
        }     
        return "failed";   
    }     
//使用 ksoap2 调用webservice        
    private boolean connectWebService(String methodName,String fileName, String imageBuffer) {     
        String namespace = "http://tempuri.org/";  // 命名空间,即服务器端得接口,注:后缀没加 .wsdl,     
        String SOAP_ACTION = "http://tempuri.org/"+methodName;                                                                     //服务器端我是用x-fire实现webservice接口的     
        String url = "http://10.0.2.2:20383/Service1.asmx";   //对应的url      
        //以下就是 调用过程了,不明白的话 请看相关webservice文档          
        SoapObject soapObject = new SoapObject(namespace, methodName);         
        soapObject.addProperty("filename", fileName);  //参数1   图片名       
        soapObject.addProperty("image", imageBuffer);   //参数2  图片字符串       
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(     
                SoapEnvelope.VER11);     
        HttpTransportSE httpTranstation = new HttpTransportSE(url);     
        envelope.dotNet = true;     
        envelope.bodyOut = soapObject;  
        envelope.setOutputSoapObject(soapObject);     
         
        try {     
            httpTranstation.call(SOAP_ACTION, envelope);     
            Object result = envelope.getResponse();     
            Log.i("connectWebService", result.toString());     
        } catch (Exception e) {     
            e.printStackTrace();     
        }     
        return false;     
    }
/*
    //onItemSelectedListener
    private int currentPos = -1;
    private HashMap<Integer,BitmapDrawable> hmbd = new HashMap<Integer,BitmapDrawable>(GalleryAdapter.myPics.pic_num);
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
			long arg3) {
		// TODO Auto-generated method stub
		if (currentPos != position){
			
			BitmapDrawable bd;
			bd = hmbd.get(position);
			if (bd == null){
				bd = new BitmapDrawable(GalleryAdapter.str2bitmap(GalleryAdapter.myPics.paths[position%GalleryAdapter.myPics.paths.length],300,100));
				hmbd.put(position, bd);
			}
			is.setImageDrawable(bd);
			currentPos = position;
		}
	}
        
    
	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		
	}  
	*/
}    


MyFile.java

package com.example.test;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.os.Environment;

public class MyFile {
	public String[] paths={"/mnt/sdcard/1.jpg"};
	private List<String> imagePathList;
	public int pic_num;
	public boolean select[];
	public int choose_pic_num;
	
	public MyFile(){
		imagePathList=getImagePathFromSD();
        paths = imagePathList.toArray(new String[imagePathList.size()]);
        pic_num = paths.length;
        select = new boolean[pic_num];
        for (int i=0; i<pic_num; i++)
        	select[i] = false;
	}
	public List<String> getImagePathFromSD(){
		List<String> it = new ArrayList<String>();

		String imagePath = Environment.getExternalStorageDirectory().toString();
		File mFile = new File(imagePath);
		File[] files = mFile.listFiles();

		for (int i=0; i<files.length; i++){
			File file = files[i];
			if (checkIsImageFile(file.getPath()))
				it.add(file.getPath());
		}
		return it;
	}
	public boolean checkIsImageFile(String fName){
		boolean isImageFormat;

		String end = fName.substring(fName.lastIndexOf(".")+1,fName.length()).toLowerCase();

		if (end.equals("jpg") || end.equals("gif") || end.equals("png")  
				|| end.equals("jpeg") || end.equals("bmp")) {
			isImageFormat = true;
		} else
			isImageFormat = false;
		return isImageFormat;
	}

	public void setChoosePicNum(){
		choose_pic_num=0;
		for (int i=0; i<pic_num; i++){
			if (select[i])
				choose_pic_num++;
		}
	}
}

SwitcherFactory.java

package com.example.test;

import android.content.Context;

import android.view.View;

import android.widget.ImageView;

import android.widget.ViewSwitcher.ViewFactory; 

//实现并设置工厂内部接口的makeView方法,用来显示视图。

public class SwitcherFactory implements ViewFactory {
    // 上下文对象
    private Context mContext; 
    public SwitcherFactory(Context context) {
       super();
       mContext = context;
    }

    @Override
    public View makeView() {
       ImageView iv = new ImageView(mContext);
       iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
       return iv;
    }

}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="名称:"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="XX" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="创建人:"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="XX" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp" >

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:text="time" />
        </LinearLayout>
    </LinearLayout>

    <TextView
        android:id="@+id/line"
        android:layout_width="fill_parent"
        android:layout_height="0.2dp"
        android:background="@color/green" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageSwitcher
            android:id="@+id/Switcher"
            android:layout_marginTop="5dp"
			android:scaleType="fitCenter"
            android:layout_width="fill_parent"
            android:layout_height="200dp" >
        </ImageSwitcher>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="vertical" >

        <Gallery
            android:id="@+id/Gallery"
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:scaleType="fitCenter"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1" 
            android:spacing = "10dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        >
   

        <TextView
            android:id="@+id/t1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"            
            android:layout_marginLeft="20dp"
            android:text="已选择:" 
            android:textSize="25dp"/>
        
        <TextView
            android:id="@+id/t2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25dp"
            android:text="0" />
        
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="100dp"
            android:text="上 传"
            android:textSize="25dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="40dp"
    	android:layout_marginLeft="40dp"
        android:layout_marginTop="10dp" >

        <ProgressBar
            android:id="@+id/progress_upload"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:max="100"
            android:progress="0" />
    </LinearLayout>

</LinearLayout>


gallery_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/item_gallery_image"
        android:layout_width="102dp"
        android:layout_height="102dp"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_launcher" />

    <CheckBox
        android:id="@+id/item_gallery_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="" />
</RelativeLayout>
        

image_box.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="102dp"
        android:layout_height="102dp"
        android:src="@drawable/ic_launcher" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="" />

</RelativeLayout>





 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值