我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在

大图显示页面,中包含了一个图片画廊,同时当前大图为刚刚我们点击的那张图片。现在我们看看在Android中如何实现类似的效果:

首先,我们需要有一个控件来显示缩略图,这里没有什么比GridView更加合适了。

配置文件如下:

我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在
 
大图显示页面,中包含了一个图片画廊,同时当前大图为刚刚我们点击的那张图片。现在我们看看在Android中如何实现类似的效果:

首先,我们需要有一个控件来显示缩略图,这里没有什么比GridView更加合适了。

配置文件如下:

view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?> 
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
03.    android:orientation="vertical" 
04.    android:layout_width="fill_parent" 
05.    android:layout_height="fill_parent" 
06.    > 
07.    <GridView 
08.        android:id="@+id/view_photos"  
09.        android:layout_width="fill_parent"  
10.        android:layout_height="fill_parent"  
11.        android:layout_marginTop="10dp"  
12.        android:columnWidth="100dp"  
13.        android:numColumns="auto_fit"  
14.        android:horizontalSpacing="5dp"  
15.        android:verticalSpacing="5dp"  
16.        android:listSelector="@drawable/frame_select" /> 
17.</LinearLayout>

对于GridView中每一项是一张缩略图,我们需要继承BaseAdapter,实现自己的一个GridImageAdapter,代码:

view plaincopy to clipboardprint?
01.package com.liner.manager; 
02.import java.util.List; 
03.import com.liner.manager.adapter.GridImageAdapter; 
04.import android.app.Activity; 
05.import android.graphics.Bitmap; 
06.import android.os.Bundle; 
07.import android.view.View; 
08.import android.widget.AdapterView; 
09.import android.widget.Gallery; 
10.import android.widget.ImageButton; 
11.import android.widget.AdapterView.OnItemClickListener; 
12.public class GalleryActivity extends Activity{ 
13.     
14.    private ImageButton currentImage; 
15.    private Gallery gallery; 
16.     
17.    private int[] thumbIds; 
18.    private int currentPos; 
19.     
20.    private Bitmap currentBitmap; 
21.     
22.    private List<Bitmap> bitmapCache; 
23.     
24.    public void onCreate(Bundle savedInstanceState){ 
25.        super.onCreate(savedInstanceState); 
26.        setContentView(R.layout.gallery); 
27.         
28.        currentImage = (ImageButton)this.findViewById(R.id.image_current); 
29.        gallery = (Gallery)this.findViewById(R.id.image_gallery); 
30.        gallery.setOnItemClickListener(galleryItemClickListener); 
31.        init(); 
32.    } 
33.     
34.    private OnItemClickListener galleryItemClickListener = new OnItemClickListener() { 
35.        @Override 
36.        public void onItemClick(AdapterView<?> p, View v, int position, 
37.                long id) { 
38.            // 点击事件 
39.            showCurrentImage(position); 
40.        } 
41.    }; 
42.     
43.    private void init(){ 
44.        thumbIds = this.getIntent().getIntArrayExtra("thumbIds"); 
45.        currentPos = this.getIntent().getIntExtra("currentPos",0); 
46.        //galleryIds = this.getThumbnailIds(currentPos); //当前的gallery里的图片信息 
47.        bitmapCache = BitmapUtils.queryThumbnailListByIds(this, thumbIds); 
48.        GridImageAdapter adapter = new GridImageAdapter(this.getApplication(), bitmapCache); 
49.        gallery.setAdapter(adapter); 
50.        gallery.setSelection(currentPos); 
51.         
52.        showCurrentImage(currentPos); 
53.         
54.    } 
55.     
56.    private void showCurrentImage(int position){ 
57.         
58.        if(currentBitmap != null){ 
59.            currentBitmap.recycle(); 
60.        } 
61.         
62.        currentBitmap = BitmapUtils.queryImageByThumbnailId(GalleryActivity.this, thumbIds[position]); 
63.        if(currentBitmap != null){ 
64.            currentImage.setImageBitmap(currentBitmap); 
65.        }else{ 
66.            //什么都不做 
67.        } 
68.         
69.        //releaseBitmaps();      
70.    } 
71.     
72.    /**
73.     * 将Gallery当前可见的显示之前的3张,后3张缓存起来,其余的释放掉,这样是为了放置内存不够用
74.     * 之所以前三张后三张,是为了Gallery可以滑动的更加顺畅
75.     */ 
76.    private void releaseBitmaps(){ 
77.        int start = gallery.getFirstVisiblePosition()-3; //缓存的起始位置 
78.        int end = gallery.getLastVisiblePosition()+3; //缓存的结束位置 
79.         
80.        Bitmap delBitmap; 
81.        for(int i=0; i<start; i++){ 
82.            delBitmap = bitmapCache.get(i); 
83.            if(delBitmap != null){ 
84.                bitmapCache.remove(i); 
85.                delBitmap.recycle(); 
86.            } 
87.        } 
88.        for(int i=end+1; i<bitmapCache.size(); i++){ 
89.            delBitmap = bitmapCache.get(i); 
90.            if(delBitmap != null){ 
91.                bitmapCache.remove(i); 
92.                delBitmap.recycle(); 
93.            } 
94.        } 
95.    } 
96.     
97.    /**
98.     * 获取当前位置的前三个Id和后三个Id
99.     * @param position
100.     * @return
101.     */ 
102.    private Integer[] getThumbnailIds(int position){ 
103.        Integer[] ids = new Integer[]{0,0,0,0,0,0,0}; 
104.        int currPos = 0; 
105.        //关于这里的处理,比较复杂 
106.        for(int i=3; i>0; i--){ 
107.            if(position - i >= 0){ 
108.                currPos = 3-i; 
109.                ids[currPos] = thumbIds[position-i]; 
110.            } 
111.        } 
112.        ids[++currPos] = thumbIds[position]; //当前Id 
113.        //currGallerySelection = currPos; 
114.        //这样右边剩下的位置数就是7-currPos-1 
115.        for(int i=1; i<=6-currPos;i++){ 
116.            if(position+i < thumbIds.length){ 
117.                ids[currPos+i] = thumbIds[position+i]; 
118.            } 
119.        } 
120.         
121.        return ids; 
122.    }    
123.}

然后,我们就可以在Activity中通过查询MediaStore的多媒体图片库来查询所有的图片的缩略图,缩略图所在的位置是:
 
MediaStore.Images.Thumbnails。Activity代码如下:

view plaincopy to clipboardprint?
01.package com.liner.manager; 
02.import java.util.ArrayList; 
03.import java.util.List; 
04.import com.liner.manager.adapter.GridImageAdapter; 
05.import android.app.Activity; 
06.import android.content.Intent; 
07.import android.database.Cursor; 
08.import android.graphics.Bitmap; 
09.import android.graphics.BitmapFactory; 
10.import android.net.Uri; 
11.import android.os.Bundle; 
12.import android.provider.MediaStore; 
13.import android.view.View; 
14.import android.widget.Adapter; 
15.import android.widget.AdapterView; 
16.import android.widget.GridView; 
17.import android.widget.Toast; 
18.public class MainActivity extends Activity {   
19.    private GridView photoView; 
20.    private GridImageAdapter imageAdapter; 
21.     
22.    private Cursor cursor;  
23.    private int[] thumbIds; 
24.     
25.    @Override 
26.    public void onCreate(Bundle savedInstanceState) { 
27.        super.onCreate(savedInstanceState); 
28.        setContentView(R.layout.main); 
29.         
30.        photoView = (GridView)this.findViewById(R.id.view_photos); 
31.        photoView.setOnItemClickListener(photoClickListener); 
32.         
33.        //showImages(); 
34.        showThumbnails(); 
35.    } 
36.     
37.     
38.    private void showThumbnails(){ 
39.         
40.        cursor = BitmapUtils.queryThumbnails(this); 
41.        if(cursor.moveToFirst()){ 
42.            List<Bitmap> bitmaps = new ArrayList<Bitmap>(); 
43.            thumbIds = new int[cursor.getCount()]; 
44.            for(int i=0; i<cursor.getCount();i++){ 
45.                cursor.moveToPosition(i); 
46.                String currPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA)); 
47.                thumbIds[i] = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID)); 
48.                Bitmap b = BitmapUtils.decodeBitmap(currPath,100,100); 
49.                bitmaps.add(b); 
50.            } 
51.            imageAdapter = new GridImageAdapter(this.getApplication(), bitmaps); 
52.            photoView.setAdapter(imageAdapter); 
53.        } 
54.    } 
55.     
56.    private AdapterView.OnItemClickListener photoClickListener = new AdapterView.OnItemClickListener() { 
57.        @Override 
58.        public void onItemClick(AdapterView<?> p, View v, int position, 
59.                long id) { 
60.            //点击某张缩略图时,转到图片显示界面          
61.            Intent intent = new Intent(); 
62.            intent.setClass(MainActivity.this, GalleryActivity.class); 
63.            intent.putExtra("thumbIds", thumbIds); 
64.            intent.putExtra("currentPos", position); 
65.            startActivity(intent); 
66.        } 
67.    }; 
68.     
69.}

注意到,我们记录了,所有缩略图对应的id号,和当前的用户选择的位置,然后通过Intent传递到第二个展示界面。第二个界面的布局文件如下:我们用了一个Gallery和一个ImageButton来实现

view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?> 
02.<LinearLayout 
03.  xmlns:android="http://schemas.android.com/apk/res/android" 
04.  android:layout_width="fill_parent" 
05.  android:layout_height="fill_parent" 
06.  android:orientation="vertical"> 
07.    <Gallery 
08.        android:id="@+id/image_gallery"  
09.        android:layout_width="fill_parent"  
10.        android:layout_height="100dp"  
11.        /> 
12.    <ImageButton 
13.        android:id="@+id/image_current"  
14.        android:layout_width="fill_parent"  
15.        android:layout_height="fill_parent"  
16.        android:padding="10dp"  
17.        android:layout_marginTop="10dp"  
18.        /> 
19.</LinearLayout>

然后,对应的Activity如下:

view plaincopy to clipboardprint?
01.package com.liner.manager; 
02.import java.util.List; 
03.import com.liner.manager.adapter.GridImageAdapter; 
04.import android.app.Activity; 
05.import android.graphics.Bitmap; 
06.import android.os.Bundle; 
07.import android.view.View; 
08.import android.widget.AdapterView; 
09.import android.widget.Gallery; 
10.import android.widget.ImageButton; 
11.import android.widget.AdapterView.OnItemClickListener; 
12.public class GalleryActivity extends Activity{ 
13.     
14.    private ImageButton currentImage; 
15.    private Gallery gallery; 
16.     
17.    private int[] thumbIds; 
18.    private int currentPos; 
19.     
20.    private Bitmap currentBitmap; 
21.     
22.    private List<Bitmap> bitmapCache; 
23.     
24.    public void onCreate(Bundle savedInstanceState){ 
25.        super.onCreate(savedInstanceState); 
26.        setContentView(R.layout.gallery); 
27.         
28.        currentImage = (ImageButton)this.findViewById(R.id.image_current); 
29.        gallery = (Gallery)this.findViewById(R.id.image_gallery); 
30.        gallery.setOnItemClickListener(galleryItemClickListener); 
31.        init(); 
32.    } 
33.     
34.    private OnItemClickListener galleryItemClickListener = new OnItemClickListener() { 
35.        @Override 
36.        public void onItemClick(AdapterView<?> p, View v, int position, 
37.                long id) { 
38.            // 点击事件 
39.            showCurrentImage(position); 
40.        } 
41.    }; 
42.     
43.    private void init(){ 
44.        thumbIds = this.getIntent().getIntArrayExtra("thumbIds"); 
45.        currentPos = this.getIntent().getIntExtra("currentPos",0); 
46.        //galleryIds = this.getThumbnailIds(currentPos); //当前的gallery里的图片信息 
47.        bitmapCache = BitmapUtils.queryThumbnailListByIds(this, thumbIds); 
48.        GridImageAdapter adapter = new GridImageAdapter(this.getApplication(), bitmapCache); 
49.        gallery.setAdapter(adapter); 
50.        gallery.setSelection(currentPos); 
51.         
52.        showCurrentImage(currentPos); 
53.         
54.    } 
55.     
56.    private void showCurrentImage(int position){ 
57.         
58.        if(currentBitmap != null){ 
59.            currentBitmap.recycle(); 
60.        } 
61.         
62.        currentBitmap = BitmapUtils.queryImageByThumbnailId(GalleryActivity.this, thumbIds[position]); 
63.        if(currentBitmap != null){ 
64.            currentImage.setImageBitmap(currentBitmap); 
65.        }else{ 
66.            //什么都不做 
67.        } 
68.         
69.        //releaseBitmaps();      
70.    } 
71.     
72.}

可以看到,当用户点击Gallery中某一项时,触发onItemClick事件,在其中,我们通过根据该缩略图对应的Image_ID来从MediaStore.Images.Media中查询该缩略图对应的大图。并在ImageButton中显示。

这里当图片很多时,可能会出现内存溢出,为了避免这种情况,可以更加Gallery的特点,使用缓存。保存当前可见的缩略图的前三个到后三个。其余的全部recycle。当用户点击Gallery的时候,在判断当前的位置,如果大于或小于某个值时,则重新更新缓存。这样保证内存中的缩略图的个数总是6+Gallery.getLastVisiblePosition-Gallery.getFirstVisiblePosition个。其实这就是浮动缓存窗口,一个固定大小窗口在整个坐标(全部缩略图)上游动。这里没有实现,以后待续。

同时,你可能已经注意到,程序中使用到了一个BitmapUtils类,这个类是封装了一系列对查询图片,并将其解析为Bitmap的类。

代码如下:

view plaincopy to clipboardprint?
01.package com.liner.manager; 
02.import java.util.ArrayList; 
03.import java.util.List; 
04.import android.app.Activity; 
05.import android.database.Cursor; 
06.import android.graphics.Bitmap; 
07.import android.graphics.BitmapFactory; 
08.import android.provider.MediaStore; 
09.import android.util.Log; 
10.public final class BitmapUtils { 
11.     
12.     
13.     
14.    public static Bitmap decodeBitmap(String path, int displayWidth, int displayHeight){ 
15.        BitmapFactory.Options op = new BitmapFactory.Options(); 
16.        op.inJustDecodeBounds = true; 
17.        Bitmap bmp = BitmapFactory.decodeFile(path, op); //获取尺寸信息 
18.        //获取比例大小 
19.        int wRatio = (int)Math.ceil(op.outWidth/(float)displayWidth); 
20.        int hRatio = (int)Math.ceil(op.outHeight/(float)displayHeight); 
21.        //如果超出指定大小,则缩小相应的比例 
22.        if(wRatio > 1 && hRatio > 1){ 
23.            if(wRatio > hRatio){ 
24.                op.inSampleSize = wRatio; 
25.            }else{ 
26.                op.inSampleSize = hRatio; 
27.            } 
28.        } 
29.        op.inJustDecodeBounds = false; 
30.        bmp = BitmapFactory.decodeFile(path, op); 
31.        return Bitmap.createScaledBitmap(bmp, displayWidth, displayHeight, true); 
32.    } 
33.     
34.    /**
35.     * 采用复杂计算来决定缩放
36.     * @param path
37.     * @param maxImageSize
38.     * @return
39.     */ 
40.    public static Bitmap decodeBitmap(String path, int maxImageSize){ 
41.        BitmapFactory.Options op = new BitmapFactory.Options(); 
42.        op.inJustDecodeBounds = true; 
43.        Bitmap bmp = BitmapFactory.decodeFile(path, op); //获取尺寸信息 
44.        int scale = 1; 
45.        if(op.outWidth > maxImageSize || op.outHeight > maxImageSize){ 
46.            scale = (int)Math.pow(2, (int)Math.round(Math.log(maxImageSize/(double)Math.max(op.outWidth, op.outHeight))/Math.log(0.5))); 
47.        } 
48.        op.inJustDecodeBounds = false; 
49.        op.inSampleSize = scale; 
50.        bmp = BitmapFactory.decodeFile(path, op); 
51.        return bmp;      
52.    } 
53.     
54.     
55.    public static Cursor queryThumbnails(Activity context){ 
56.        String[] columns = new String[]{ 
57.                MediaStore.Images.Thumbnails.DATA, 
58.                MediaStore.Images.Thumbnails._ID, 
59.                MediaStore.Images.Thumbnails.IMAGE_ID 
60.        }; 
61.        return context.managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, columns, null, null, MediaStore.Images.Thumbnails.DEFAULT_SORT_ORDER); 
62.    } 
63.     
64.    public static Cursor queryThumbnails(Activity context, String selection, String[] selectionArgs){ 
65.        String[] columns = new String[]{ 
66.                MediaStore.Images.Thumbnails.DATA, 
67.                MediaStore.Images.Thumbnails._ID, 
68.                MediaStore.Images.Thumbnails.IMAGE_ID 
69.        }; 
70.        return context.managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, columns, selection, selectionArgs, MediaStore.Images.Thumbnails.DEFAULT_SORT_ORDER);      
71.    } 
72.     
73.    public static Bitmap queryThumbnailById(Activity context, int thumbId){ 
74.        String selection = MediaStore.Images.Thumbnails._ID + " = ?"; 
75.        String[] selectionArgs = new String[]{ 
76.            thumbId+""   
77.        }; 
78.        Cursor cursor = BitmapUtils.queryThumbnails(context,selection,selectionArgs); 
79.         
80.        if(cursor.moveToFirst()){ 
81.            String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA)); 
82.            cursor.close(); 
83.            return BitmapUtils.decodeBitmap(path, 100, 100); 
84.        }else{ 
85.            cursor.close(); 
86.            return null; 
87.        } 
88.    } 
89.     
90.    public static Bitmap[] queryThumbnailsByIds(Activity context, Integer[] thumbIds){ 
91.        Bitmap[] bitmaps = new Bitmap[thumbIds.length]; 
92.        for(int i=0; i<bitmaps.length; i++){ 
93.            bitmaps[i] = BitmapUtils.queryThumbnailById(context, thumbIds[i]); 
94.        } 
95.         
96.        return bitmaps; 
97.    } 
98.     
99.    /**
100.     * 获取全部
101.     * @param context
102.     * @return
103.     */ 
104.    public static List<Bitmap> queryThumbnailList(Activity context){ 
105.        List<Bitmap> bitmaps = new ArrayList<Bitmap>(); 
106.        Cursor cursor = BitmapUtils.queryThumbnails(context); 
107.        for(int i=0; i<cursor.getCount(); i++){ 
108.            cursor.moveToPosition(i); 
109.            String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA)); 
110.            Bitmap b = BitmapUtils.decodeBitmap(path, 100, 100); 
111.            bitmaps.add(b); 
112.        } 
113.        cursor.close(); 
114.        return bitmaps; 
115.    } 
116.     
117.    public static List<Bitmap> queryThumbnailListByIds(Activity context, int[] thumbIds){ 
118.        List<Bitmap> bitmaps = new ArrayList<Bitmap>(); 
119.        for(int i=0; i<thumbIds.length; i++){ 
120.            Bitmap b = BitmapUtils.queryThumbnailById(context, thumbIds[i]); 
121.            bitmaps.add(b); 
122.        } 
123.         
124.        return bitmaps; 
125.    }    
126.     
127.    public static Cursor queryImages(Activity context){ 
128.        String[] columns = new String[]{ 
129.                MediaStore.Images.Media._ID, 
130.                MediaStore.Images.Media.DATA, 
131.                MediaStore.Images.Media.DISPLAY_NAME 
132.        }; 
133.        return context.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, MediaStore.Images.Media.DEFAULT_SORT_ORDER); 
134.    } 
135.     
136.    public static Cursor queryImages(Activity context, String selection, String[] selectionArgs){ 
137.        String[] columns = new String[]{ 
138.                MediaStore.Images.Media._ID, 
139.                MediaStore.Images.Media.DATA, 
140.                MediaStore.Images.Media.DISPLAY_NAME 
141.        }; 
142.        return context.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, selection, selectionArgs, MediaStore.Images.Media.DEFAULT_SORT_ORDER);        
143.    } 
144.     
145.    public static Bitmap queryImageById(Activity context, int imageId){ 
146.        String selection = MediaStore.Images.Media._ID + "=?"; 
147.        String[] selectionArgs = new String[]{ 
148.                imageId + "" 
149.        }; 
150.        Cursor cursor = BitmapUtils.queryImages(context, selection, selectionArgs); 
151.        if(cursor.moveToFirst()){ 
152.            String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); 
153.            cursor.close(); 
154.            //return BitmapUtils.decodeBitmap(path, 260, 260); 
155.            return BitmapUtils.decodeBitmap(path, 220); //看看和上面这种方式的差别,看了,差不多 
156.        }else{ 
157.            cursor.close(); 
158.            return null; 
159.        } 
160.    } 
161.     
162.    /**
163.     * 根据缩略图的Id获取对应的大图
164.     * @param context
165.     * @param thumbId
166.     * @return
167.     */ 
168.    public static Bitmap queryImageByThumbnailId(Activity context, Integer thumbId){ 
169.         
170.        String selection = MediaStore.Images.Thumbnails._ID + " = ?"; 
171.        String[] selectionArgs = new String[]{ 
172.            thumbId+""   
173.        }; 
174.        Cursor cursor = BitmapUtils.queryThumbnails(context, selection, selectionArgs); 
175.         
176.        if(cursor.moveToFirst()){ 
177.            int imageId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.IMAGE_ID)); 
178.            cursor.close(); 
179.            return BitmapUtils.queryImageById(context, imageId);             
180.        }else{ 
181.            cursor.close(); 
182.            return null; 
183.        } 
184.    } 
185.}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenjie19891104/archive/2011/04/20/6336439.aspx

实现仿百度图片查看功能(点击缩略图放大效果)相关推荐

  1. android 图片查看功能吗,Android仿百度图片查看功能

    我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在大图显示页面,中包含了一个图片画廊,同时当前大图为刚刚我们点击的那张图片.现 ...

  2. HTML5中swiper实现图片查看功能

    swiper实现图片查看功能 分享一个swiper实现的图片查看功能,支持图片点击放大.轮播.关闭等功能.先看一下效果图 以下是核心代码 function(){ var img_index = $(& ...

  3. 仿百度文库html5源码,JS实现仿百度文库评分功能

    百度文库分享平台大家都知道,今天小编通过一段实例代码给大家介绍基于js实现百度文库评分功能,先给大家展示效果图吧. 具体代码如下所示: 无标题文档 *{padding:0;margin:0;} #co ...

  4. Qt 仿QQ图片查看器

    最近项目中,由于需要查看图片.看了网上写的各种图片查看器.感觉都没有QQ图片查看器那种界面好看一点.并且放大了可以移动图片.为此,想着仿QQ图片查看器自己写了一个,如图: 主要实现的功能有: 鼠标滚轮 ...

  5. C#制作一个图片查看器,具有滚轮放大缩小,鼠标拖动,图像像素化,显示颜色RGB信息功能

    目录 前言 一.界面设计 二.关键技术 1.把图片拖入到窗体并显示 2.实现图像缩放的功能 3.实现图像的移动效果 4.实时显示当前鼠标处的RGB值 5. 右击功能的实现 6.效果展示 总结 前言 使 ...

  6. html+js仿百度搜索框,点击和回车跳转百度搜索

    html+js仿百度搜索框,点击和回车跳转百度搜索 代码 <!DOCTYPE html> <html lang="en"> <head>< ...

  7. 计算机打开查看方式默认是什么样,如何更改win10系统电脑图片的查看方式 怎么将电脑图片查看方式改成缩略图...

    如何更改win10系统电脑图片的查看方式 怎么将电脑图片查看方式改成缩略图 腾讯视频/爱奇艺/优酷/外卖 充值4折起 今天,小编给大家介绍更改win10系统电脑图片查看方式的方法,希望对大家有所帮助. ...

  8. jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)

    最近做了一个jquery图片查看的插件,目的是能精确查看图片的详情,插件支持图片旋转.放大.缩小.拖拽.缩略图显示,界面效果是按照window的qq查看图片功能写的,当然不尽相同. 具体功能: 多张图 ...

  9. 防仿百度图片背景色php,基于jQuery实现仿百度首页换肤背景图片切换代码_jquery...

    不多说了,先给大家展示效果图,本文支持源码下载哦,需要的朋友可以直接下载使用,代码很简单哦- html代码: css代码: *{margin:0;padding:0} a{color:#fff; ma ...

最新文章

  1. paxos整合mysql_微信开源PhxSQL:高可用、强一致的MySQL集群(转载)
  2. 怎么区分五类线、超五类线和六类线
  3. ospf 中传输网络和传输区域的概念?
  4. python下载代码-Python3----下载小说代码
  5. 重载和const形参
  6. Val编程-速度因子
  7. P6834-[Cnoi2020]梦原【数学期望,树状数组】
  8. iphone储存空间系统怎么清理_教你快速清理 iPhone 系统缓存垃圾,拒绝卡顿!
  9. RTX5 | 事件标志组02 - 置位事件标志组,并获取事件标志组的值
  10. 计算机机器语言与高级语言转化,机器语言与汇编语言之间是怎么转化的?
  11. Web前端Javascript笔记(6)正则表达式
  12. 震惊!!!CSS垂直居中竟然有这么多方法~
  13. python 数据类型 之 tuple 元组
  14. 每次开机都要选择Windwos10才能进系统的原因及解决方法-- 【亲测有效】
  15. i3 7100黑苹果_教你用2000多块装一台黑苹果主机 玩吃鸡剪视频毫无压力
  16. 浪潮华为,高端存储市场的双头之争
  17. Exploiting Visual Artifacts to Expose Deepfakes and Face Manipulations论文详记
  18. 三分钟看完北京城市(含京津冀)【总体规划2016-2050】
  19. Exception:org.eclipse.m2e.wtp.MarkedException: Unable to configure OHBC
  20. 【线段树】超市促销 rqnoj572

热门文章

  1. 计算机组成原理-入门篇-01冯·诺依曼体系结构
  2. 用git统计代码提交行数
  3. Leetcode动态规划部分典型题目分类及总结
  4. Outlook邮件创建的规则失效,可能的原因
  5. jquery ajax golang,原生和jQuery的ajax用法-Go语言中文社区
  6. greenDao框架浅入深出
  7. 2021「AI中国」评选
  8. 创建 Swift 自定义集合类
  9. [SWPUCTF 2022 新生赛]ez_rce、[NSSRound#4 SWPU]ez_rce、[UUCTF 2022 新生赛]ez_rce
  10. 【 C++ 】红黑树