andorid---通過Viewpager實現圖片滑動以及縮放
本來通過重寫gallary和imageview來實現圖片滑動以及縮放,但是gallary存在一個問題,就是圖片之間好像在邊緣的地方出現了重疊,而且圖片縮放的時候,在大於邊界的情況出現了很複雜的邏輯,一時也沒搞懂,所以改用ViewPager來實現.方便又快捷。至於自定義的gallary出現了什麼問題暫時也沒時間去搞清楚,就先放一邊把。
ViewPager---首先引入一個別人寫好的庫(library.jar),本想新增到日誌的附件裡面,坑爹騰訊,還要黃鑽。
Image.java
package com.example.test; //包名自己改
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
public class Image {
privateString path;
privateBitmap bitmap;
privateDrawable drawable;
publicString getPath() {
returnpath;
}
publicvoid setPath(String path) {
this.path= path;
}
publicBitmap getBitmap() {
returnbitmap;
}
publicvoid setBitmap(Bitmap bitmap) {
this.bitmap= bitmap;
}
publicDrawable getDrawable() {
returndrawable;
}
publicvoid setDrawable(Drawable drawable) {
this.drawable= drawable;
}
}
MyPhotoView.java
package com.example.test;
import android.content.Context;
import android.graphics.Bitmap;
import uk.co.senab.photoview.PhotoView; //從引入的庫裡面呼叫
public class MyPhotoView extends PhotoView{
publicMyPhotoView(Context context) {
super(context);
}
/**
*
* @param bitmap
*/
public void setImage(Bitmap bitmap) { //mAttacher也是庫裡面的東西,沒引入的話會報錯
super.setImageBitmap(bitmap);
if (null != mAttacher) {
mAttacher.update();
}
}
}
MyViewPager.java
package com.example.test;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class MyViewPager extends ViewPager{
publicMyViewPager(Context context) {
super(context);
//TODO Auto-generated constructor stub
}
publicMyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
publicboolean onInterceptTouchEvent(MotionEvent ev) {
try{
returnsuper.onInterceptTouchEvent(ev);
}catch (IllegalArgumentException e) {
e.printStackTrace();
returnfalse;
}
}
}
重寫的東西很少很簡單,只需要放進去就行了,使用的話要在Activity裡面下功夫,給出的例子只是將圖片寫死了,固定那幾張圖片。如果要動態的從伺服器下載的話,就需要在裡面新增很多的邏輯,並怎麼好弄,不過有例子後面的問題就好解決了,根據自己的需要去改就行了。
MainActivity.java
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Bitmap;
importandroid.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
importandroid.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
public class MainActivity extends Activity{
privateMyViewPager pager;
privateList<Image> images;
privateImageAdapter adapter;
privatestatic int[] sDrawables = {R.drawable.t1, R.drawable.t2, R.drawable.t3,
R.drawable.t4}; //寫死了的圖片資源,自己引入,或者動態從伺服器或者網上下載。
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main); //佈局檔案只需要放入一個MyViewPager就行了,自己在.java裡面已經重寫了
pager= (MyViewPager) findViewById(R.id.my_pager);
images= new ArrayList<Image>(); //Image也是重寫的型別
init();
pager.setAdapter(newImageAdapter(images));
}
privatevoid init(){ //圖片初始化
for(inti = 0; i < sDrawables.length; i++){
BitmapDrawablebd = (BitmapDrawable) getResources().getDrawable(sDrawables[i]);
Bitmapbm = bd.getBitmap();
Imageimage = new Image();
image.setBitmap(bm);
images.add(image);
}
}
publicclass ImageAdapter extends PagerAdapter{ //為圖片設定介面卡
privateList<Image> list;
publicImageAdapter(List<Image> list){
this.list= list;
}
@Override
publicView instantiateItem(ViewGroup container, int position) {
Imageimage = list.get(position); //動態下載的話,我選擇的是BitMap陣列,不習慣用List
MyPhotoViewphotoView = null;
if(null!= image){
photoView= new MyPhotoView(container.getContext());
photoView.setImage(image.getBitmap());
}
container.addView(photoView,LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
returnphotoView;
}
@Override
publicvoid destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
@Override
publicboolean isViewFromObject(View view, Object object) {
returnview == object;
}
@Override
publicint getCount() {
returnimages.size(); //返回圖片總數
}
}
}
記住在自己的工程裡面引入Library庫,否則活報錯。
備註:圖片瀏覽配一個顯示圖片的張數和圖片總數會顯得更加人性化,只需要在Layout裡面新增一個textview然後對MyViewPager新增OnPageChangeListener,就可以動態去改變textview。 希望對學習有幫助,並方便以後使用。7月30號,
相關推薦
andorid---通過Viewpager實現圖片滑動以及縮放
原創--- 本來通過重寫gallary和imageview來實現圖片滑動以及縮放,但是gallary存在一個問題,就是圖片之間好像在邊緣的地方出現了重疊,而且圖片縮放的時候,在大於邊界的情況出
ZK整合jqueryui 實現圖片滑鼠滾輪縮放以及拖拽位置
//@off image是一個zul中 的image元件 image.setWidgetOverride("bind_", "function(){\r\n"+ "this.$supers('bind_', arguments);\r\n
viewpager實現自動滑動以及手勢滑動功能
今天在做專案的時候,有一個viewpgaer展示圖片的頁面,第一反應是去網上查詢,後來看了好多文章,其實也就是那麼兩三篇文章,其他的都是轉載來轉載去的,主要就是運用執行緒來進行無限迴圈進行實現的操作,個人感覺並不需要運用到執行緒,尤其是你寫了死迴圈後,執行緒的回
使用計時器實現圖片的準確縮放
gree tin 實現 idt 放大 height tint onload ati <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
iOS Swift 實現圖片點擊縮放回彈動畫
obj mean awake art 簡單 onf 點擊縮放 fork sde 效果就是下面這個樣子: 思路借鑒的是MZTimerLabel,有想過做一個自定義的ImageView,但那樣的話之前view用必須要改代碼,索性就按照MZTimerLabel這個方式實現,簡
20.QT-Qpixmap實現圖片鼠標縮放,鼠標拖動示例(詳解)
下滑 resize pix slot https qpi map += als #include "widget.h" Widget::Widget(): BigButton("放大",this), LittleButton("縮小",this),
vue中實現圖片全屏縮放預覽,支援移動端
# 安裝 npm install vue-photo-preview --save # 引入 import preview from 'vue-photo-preview' import 'vue-photo-preview/dist/skin.css' Vue.use(pr
Fresco使用PhotoDraweeView 實現圖片的手勢縮放
1.gradle引入Fresco compile 'com.facebook.fresco:fresco:0.11.0+' 2.在application中初始化Fresco Fresco.initialize(this, ImagePipelineConfigFactory
JAVA實現圖片等比縮放,圖片擷取功能--封裝類
import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.
IOS基礎UI之(三)手寫UI和storyboard方式實現圖片移動和縮放
手寫UI是最早進行UI介面佈局的方法,優點是靈活自由,缺點是使程式碼看起來比較長。平時學習的時候可以多嘗試手寫ui,這樣會更深入熟悉控制元件。storyboard開發效率相對比較高。實際開發中看情況而定!! 下面用這兩種方式分別實現圖片移動和縮放。 功能描述:
java實現圖片裁剪、縮放功能
import java.awt.Image; import java.awt.Rectangle; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.Buff
vue實現圖片按比例縮放問題
getImg(src){ var img_url =src var img = new Image() img.src=img_url this.pictureHeight.height = Math.ceil(img.height/img.width *
用javascript實現圖片等比例縮放
js部分: <script type="text/javascript"> $(window).load(function() { ImageAutoResize('div[id=demotu]'); function ImageAutoResize(findstr) {
viewPager+photoView實現網路圖片載入左右滑動+手勢縮放功能+滑動到下一頁其他頁面恢復預設大小
前面兩篇文章,我們講了自定義viewpager+photoView實現本地圖片的載入和收縮縮放。實現本地相簿功能。 如果沒有看的話可以先閱讀以下,因為今天網路載入圖片的功能,實在這個基礎上做的修改,會基於之前的基礎上講解。 1. http://blog.csdn.net
PNG透明圖片疊加(Opencv實現,包括旋轉縮放以及邊界處理)
疊加效果原圖疊加圖片大致實現了一個四通道的PNG向量圖疊加到一個三通道的圖片上,函式如下:bool 疊加(cv::Mat &dst, cv::Mat &src,double scale = 1.0, //整體透明度double size = 1.0,//圖片縮
Android使用ViewPager實現圖片輪播和手勢滑動
ViewPager常用來實現圖片的輪播,比如淘寶首頁,會把一些促銷的商品的圖片和描述資訊來回的播放,這就是典型的使用ViewPager實現的。 ViewPager屬於佈局管理器,允許使用者通過頁面翻轉檢視左右的資料,下面通過一個例項來講解ViewPager實現圖片輪播和手
Android:使用ViewPager實現左右滑動切換圖片 (簡單版)
ViewPager,它是google SDk中自帶的一個附加包的一個類, 可以使檢視滑動。 步驟: 1、引入android-support-v4.jar包,在主佈局里加入 <android.support.v4.view.ViewPager android
Python圖片中的縮放實現,以及多種尺寸icon的生成
在pillow中圖片的縮放有兩種方式,1.使用resize函式,2,使用thumbnail函式 resize函式可以縮小,也可以放大 thumbnail只能縮小,不能放大 所以,如果你只打開一次圖片,要存出多個尺寸的話,要麼,從大到小開始縮放。 要麼,使用resize.建議
Android 通過ViewPager實現點選和滑動切換Fragment標籤頁
如上圖效果,要切換 Fragment 標籤頁,可以通過點選標籤或者滑動標籤頁來實現。 網上應該有封裝好的開源庫可以直接利用,不過這裡介紹一下自己通過 ViewPager 實現該效果。 首先是佈局檔案: <?xml version="1.0" encodi
通過createObjectURL實現圖片預覽
files val 圖片 文件 his 瀏覽器緩存 targe urn void 實現原理:通過createObjectURL 創建一個臨時指向某地址的二進制對象。 過程:點擊觸發隱藏的 input file 的點擊事件,使用createObjectURL讀取 fil