導航:首頁 > 操作系統 > android圖片放大預覽

android圖片放大預覽

發布時間:2022-08-23 14:41:38

android如何實現圖片預覽

main.xml

先定義一個GridView,然後再定義一個ImageSwitcher

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal">

<GridView

android:id="@+id/gridView1"

android:layout_height="fill_parent"

android:layout_width="300px"

android:layout_marginTop="6px"

android:horizontalSpacing="3px"

android:verticalSpacing="3px"

android:numColumns="4"/>

<ImageSwitcher

android:id="@+id/imageSwicher1"

android:padding="20px"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

></ImageSwitcher>

</LinearLayout>

MainActivity代碼如下

{

privateint[]imageId=newint[]{R.drawable.w1,R.drawable.w2,

R.drawable.w3,R.drawable.w4,R.drawable.w5,R.drawable.w6};

;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

//TODOAuto-generatedmethodstub

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwicher1);

imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,

android.R.anim.fade_in));//設置淡入動畫

imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,

android.R.anim.fade_out));//設置談出動畫

imageSwitcher.setFactory(newViewFactory(){

@Override

publicViewmakeView(){

//TODOAuto-generatedmethodstub

ImageViewimageView=newImageView(MainActivity.this);//實例化一個ImageView類的對象

imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//設置保持縱橫比居中縮放圖像

imageView.setLayoutParams(newImageSwitcher.LayoutParams(//主要要是用ImageSwitcher的LayoutParams

LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

returnimageView;

}

});

imageSwitcher.setImageResource(imageId[0]);

GridViewgridView=(GridView)findViewById(R.id.gridView1);

BaseAdapteradapter=newBaseAdapter(){

/*

*獲得數量

*

*@seeandroid.widget.Adapter#getCount()

*/

@Override

publicintgetCount(){

//TODOAuto-generatedmethodstub

returnimageId.length;

}

@Override

publicObjectgetItem(intposition){

//TODOAuto-generatedmethodstub

returnposition;

}

/**

*獲得當前選項

*/

@Override

publiclonggetItemId(intposition){

//TODOAuto-generatedmethodstub

returnposition;

}

@Override

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

//TODOAuto-generatedmethodstub

ImageViewimageView;

if(convertView==null){

imageView=newImageView(MainActivity.this);

/**設置圖像的寬度和高度**/

imageView.setAdjustViewBounds(true);

imageView.setMaxWidth(150);

imageView.setMaxHeight(113);

imageView.setPadding(5,5,5,5);

}else{

imageView=(ImageView)convertView;

}

imageView.setImageResource(imageId[position]);

returnimageView;

}

};

gridView.setAdapter(adapter);

gridView.setOnItemClickListener(newOnItemClickListener(){

@Override

publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,

longarg3){

//TODOAuto-generatedmethodstub

imageSwitcher.setImageResource(imageId[arg2]);//顯示選中的圖片

}

});

}

}

② android 如何實現圖片放大剛開始顯示正常的圖片,最後要停在放大後的圖片。

ANDROID有一個放大鏡的圖標,你點擊加就放大,點擊減就縮小,或者用兩只手滑大滑小。

③ Android 放大圖片問題

只要系統版本支持多點觸控,就可以這樣操作 不支持多點的是不能這樣放大圖片的

④ android 圖片放大預覽怎麼做

那就彈出一個dialog,設置dialog.setContentView(imageView);當然也可以自定義dialog的布局

⑤ 求大神指點如何修改該android程序使其實現多張圖片可放大縮小滑動瀏覽!!這程序只能實現一張圖片的放大

看了你的代碼,一張圖還好,圖多了內存溢出是遲早的事。
還有沒看到你的自定義控制項的實現,是繼承View還是繼承ImageView?
如果繼承ImageView就是誤入歧途了。

左右滑動現在一般是用ViewPager 配合 PagerAdapter
或者Fragement,建議先熟下V4包里的控制項

還有縮放,建議不要縮放View大小,而是重寫onDraw方法,通過計算Matrix來縮放。
至於什麼道理,涉及內容比較多,可以自己思考下

⑥ 您好,android里如何把圖片放大超過屏幕大小和拖動呢就像相冊里一樣。我試過很多辦法都不行。

是要編寫一個這樣的功能么,android提供的API裡面一般圖片都是Bitmap,可以通過Canvas.drawBItMap的方法在View進行圖片的繪制,在方法中需要進行傳入一個類型為Matrix的參數,設置Martrix的一些參數就可以進行圖片的放大的繪制,這只是顯示,也就是MVC中的View層,然後通過提供的一些觸摸函數的重寫並實現自己需要的一些功能,如拖動,實際上就是改變BitMap繪制的位置。關於觸摸的處理和圖片的繪制可以在網上進行一些教程的搜索,我就不羅列了,最終就是需要通過控制函數來改變圖片的繪制方式,這也許就是你所需要的功能。

⑦ Android實現點擊圖片之後,圖片變大,超過屏幕的大小,我們可以滑動看圖片的各個部分

放大後 滑動時計算 圖片的邊是否在屏幕外,如果在屏幕外就可移動
比如 向上滑動,是想看圖片下面的部分,此時計算圖片的底邊是否在屏幕外,如果是,就可以向上移動圖片。
其他方向同上

⑧ Android中如何實現圖片的放大功能(手機相冊里的那種效果)

你是要代碼實現還是操作?
要代碼我有源代碼。要是操作上的問題那就是我理解錯你問題了。
/* import相關class */
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class EX04_23 extends Activity
{
/* 相關變數聲明 */
private ImageView mImageView;
private Button mButton01;
private Button mButton02;
private RelativeLayout layout1;
private Bitmap bmp;
private int id=0;
private int displayWidth;
private int displayHeight;
private float scaleWidth=1;
private float scaleHeight=1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/* 載入main.xml Layout */
setContentView(R.layout.main);

/* 取得屏幕解析度大小 */
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
displayWidth=dm.widthPixels;
/* 屏幕高度須扣除下方Button高度 */
displayHeight=dm.heightPixels-80;
/* 初始化相關變數 */
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.ex04_23);
mImageView = (ImageView)findViewById(R.id.myImageView);
layout1 = (RelativeLayout)findViewById(R.id.layout1);
mButton01 = (Button)findViewById(R.id.myButton1);
mButton02 = (Button)findViewById(R.id.myButton2);

/* 縮小按鈕onClickListener */
mButton01.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
small();
}
});

/* 放大按鈕onClickListener */
mButton02.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
big();
}
});
}

/* 圖片縮小的method */
private void small()
{
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
/* 設定圖片縮小的比例 */
double scale=0.8;
/* 計算出這次要縮小的比例 */
scaleWidth=(float) (scaleWidth*scale);
scaleHeight=(float) (scaleHeight*scale);

/* 生成reSize後的Bitmap對象 */
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,bmpHeight,matrix,true);

if(id==0)
{
/* 如果是第一次按,就移除原來設定的ImageView */
layout1.removeView(mImageView);
}
else
{
/* 如果不是第一次按,就移除上次放大縮小所生成的ImageView */
layout1.removeView((ImageView)findViewById(id));
}
/* 產生新的ImageView,放入reSize的Bitmap對象,再放入Layout中 */
id++;
ImageView imageView = new ImageView(EX04_23.this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);

/* 因為圖片放到最大時放大按鈕會disable,所以在縮小時把他重設為enable */
mButton02.setEnabled(true);
}

/* 圖片放大的method */
private void big()
{
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
/* 設定圖片放大的比例 */
double scale=1.25;
/* 計算這次要放大的比例 */
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);

/* 產生reSize後的Bitmap對象 */
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,bmpHeight,matrix,true);

if(id==0)
{
/* 如果是第一次按,就移除原來設定的ImageView */
layout1.removeView(mImageView);
}
else
{
/* 如果不是第一次按,就移除上次放大縮小所生成的ImageView */
layout1.removeView((ImageView)findViewById(id));
}
/* 產生新的ImageView,放入reSize的Bitmap對象,再放入Layout中 */
id++;
ImageView imageView = new ImageView(EX04_23.this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);

/* 如果再放大會超過屏幕大小,就把Button disable */
if(scaleWidth*scale*bmpWidth>displayWidth||scaleHeight*scale*bmpHeight>displayHeight)
{
mButton02.setEnabled(false);
}
}
}

⑨ android畫一張圖片,縮放顯示並且放大不失真

這個問題涉及圖片呈現的一整套方案。歸納而言這個問題是:給定任意尺寸的圖片如何在任意尺寸解析度的機器上顯示?並且能夠保持圖片原來的清晰度。一般採用如下方案來解決這個問題:
1、首先給原圖片創建一塊內存緩存副本。如果不創建緩存的話,那麼任何一次圖片的剪切、縮放等操作都將丟失圖片信息,使得保持原有圖片的滋味那是不可能的。當然對於一般的程序而言,這個操作只需要調用簡單的API即可完成。例如Android,只需要創建一個對應圖片的Bitmap對象即可。
2、如果想要在設備顯示的初始化狀態圖片即為滿屏,那麼必須調用相關API動態獲得設備的解析度。然後按設備解析度的大小對圖片進行剪切並顯示到設備上。
注意:在獲得圖片解析度後,如果解析度大於圖片,那不用說,直接顯示圖片就好。但是如果小於圖片,此時有多種選擇。可以將圖片縮放至屏幕解析度(圖片縱橫比可能失真)也可以選擇剪切圖片的一部分顯示到屏幕上。
3、對圖片進行縮放或者移動
我們在圖片第一次顯示的時候無論是選擇縮放還是剪切,都要記錄下圖片被縮放的比例或者剪輯的范圍。這樣在用戶再次移動或者縮放的時候,根據之前的縮放比例和移動坐標,計算當前應該移動的位置和縮放比例。並且根據計算結果對緩存的圖片進行剪輯並顯示到屏幕上。
其實整個過程可以概括為如下流程:
——>圖片的初始縮放比例和顯示起點坐標——>用戶觸發縮放或者移動操作——>計算新的圖片縮放比例和顯示起點坐標——>根據新的縮放比例和顯示起點坐標剪輯緩存圖片並繪制到屏幕上......

閱讀全文

與android圖片放大預覽相關的資料

熱點內容
怎麼在文件夾查找一堆文件 瀏覽:536
核酸報告用什麼app 瀏覽:785
u8怎麼ping通伺服器地址 瀏覽:990
安卓什麼手機支持背部輕敲調出健康碼 瀏覽:860
程序員抽獎排行 瀏覽:728
扭蛋人生安卓如何下載 瀏覽:722
什麼app文檔資源多好 瀏覽:921
黑馬程序員APP 瀏覽:146
掌閱小說是哪個app 瀏覽:45
如何把u盤的軟體安裝到安卓機 瀏覽:998
php跑在什麼伺服器 瀏覽:122
編譯器怎麼跳轉到下一行 瀏覽:450
嵌入式py編譯器 瀏覽:324
rplayer下載安卓哪個文件夾 瀏覽:298
安卓手機里的電子狗怎麼用 瀏覽:748
pythonspyder入門 瀏覽:764
趣質貓app是什麼 瀏覽:60
皮帶壓縮機經常吸不上 瀏覽:205
西部隨行版怎樣加密 瀏覽:996
釘釘上如何壓縮圖片 瀏覽:924