當前位置:首頁 » 安卓系統 » android縮放

android縮放

發布時間: 2022-01-11 03:29:20

Ⅰ Android 編程 如何實現 文字放大效果 例如圖片的放大和縮小的效果

這種功能需要使用print繪制,然後通過多點觸控事件來自行計算用戶是需要放大還是縮小,然後對應的去設置文字大小

Ⅱ 有誰知道怎麼實現android界面整體縮放

android界面實現整體縮放
代碼:
float basevectorX = 0.0f
float basevectorY = 0.0f
//浮點坐標 左上角坐標
float FfrogX = 0.0f;
float FfrogY = 0.0f;
//整形坐標 左上角坐標
int frogX = 0;
int frogY = 0;

Rect rect = new Rect();
FfrogX = FfrogX+basevectorX;
frogX = (int)FfrogX;
FfrogY = FfrogY+basevectorY;
frogY = (int) FfrogY;
rect.left= frogX;
rect.right= ScreenWidth-rect.left-Width; //640
rect.top= frogY; //480
rect.bottom= ScreenHeight-rect.top-Height; //480
((MarginLayoutParams) frogview.getLayoutParams()).setMargins(rect.left, rect.top, rect.right, rect.bottom);
//這個可以放 大縮小,和移動。
CenterX = rect.left + Width/2; //中心點X坐標 用來判斷的 用於2d
CenterY = rect.top + Height/2; //中心點Y坐標 用來判斷的 用於2d

Ⅲ Android 手勢縮放一個布局,布局裡面有控制項,跟隨縮放,求demo

給出思路:
在代碼中獲得要旋轉的布局;
監聽布局的OnTouch事件;
當觸發滑動事件後,創建一個旋轉動畫,將動畫賦予布局;
布局中的控制項注冊自己的監聽器,跟這個旋轉沒有影響。
這個是我想到的,沒試驗,題主可以試試。
有疑問,請追問。望採納!

Ⅳ android 如何實現對view的放大和縮小

圖片放大縮小方法如下:

圖片放大縮小就是使用Matrix類,而這里通過手勢控制,那自然是需要監聽onTouch事件,所以原理簡單來說,就是通過監聽onTouch的各種事件來控制Matrix類了。

java">{
privatefinalstaticStringTAG="MatrixImageView";
;
/**模板Matrix,用以初始化*/
privateMatrixmMatrix=newMatrix();
/**圖片長度*/
privatefloatmImageWidth;
/**圖片高度*/
privatefloatmImageHeight;

publicMatrixImageView(Contextcontext,AttributeSetattrs){
super(context,attrs);
MatrixTouchListenermListener=newMatrixTouchListener();
setOnTouchListener(mListener);
mGestureDetector=newGestureDetector(getContext(),newGestureListener(mListener));
//背景設置為balck
setBackgroundColor(Color.BLACK);
//將縮放類型設置為FIT_CENTER,表示把圖片按比例擴大/縮小到View的寬度,居中顯示
setScaleType(ScaleType.FIT_CENTER);
}

Ⅳ 求一個實現android布局文件整體縮放的實現方法

題主可以先繼承布局類,如另寫一個類繼承LineatLayout ,然後實現onMeasure()方法,在方法裡面獲取布局的寬度和高度,再根據獲取到的寬度和高度 設置控制項內元素的寬高,比如元素Title的高 TitleHeight = measureHeight *0.5 ,意思是占布局高的二分之一,這時就可以整體縮放了。
onmeasure()內獲取寬高的方法:
int measureWidth = measureWidth(widthMeasureSpec);
int measureHeight = measureHeight(heightMeasureSpec);

其中寬度的函數:
private int measureWidth(int widthMeasureSpec) {
int specMode = MeasureSpec.getMode(widthMeasureSpec);
int specSize = MeasureSpec.getSize(widthMeasureSpec);
int result = 500;
if (specMode == MeasureSpec.AT_MOST) {
result = specSize;
} else if (specMode == MeasureSpec.EXACTLY) {
result = specSize;
}
return result;
}

Ⅵ android等比例縮放圖片的方法

itmap icon = null;//原始圖片
int width = icon.getWidth(), height = icon.getHeight();
float scaleRate = 0.8f;//縮小的比例
while(width >= 300 || width >= 300) {
Matrix matrix = new Matrix();
matrix.postScale(width * scaleRate, height * scaleRate);
// 得到新的圖片
Bitmap newIcon = Bitmap.createBitmap(icon, 0, 0, width, height, matrix, true);
icon.recycle();
icon = newIcon;
width = icon.getWidth(), height = icon.getHeight();
}int width = icon.getWidth(), height = icon.getHeight();

if(width > 300 || width > 300) {
float scaleRate = width > height ? 300 / width : 300 / height;
Matrix matrix = new Matrix();
matrix.postScale(width * scaleRate, height * scaleRate);
// 得到新的圖片
Bitmap newIcon = Bitmap.createBitmap(icon, 0, 0, width, height, matrix, true);
icon.recycle();
icon = newIcon;
}

Ⅶ 如何通過手勢實現android view 的 縮放 平移

代碼主要分兩部分,一個activity一個view,代碼如下:

packagecom.example.touch;

importandroid.app.Activity;
importandroid.os.Bundle;

{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
TouchImageViewimg=newTouchImageView(this);
setContentView(img);
}
}



packagecom.example.touch;

importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Canvas;
importandroid.graphics.Matrix;
importandroid.graphics.PointF;
importandroid.util.DisplayMetrics;
importandroid.util.FloatMath;
importandroid.view.MotionEvent;
importandroid.widget.ImageView;

{

floatx_down=0;
floaty_down=0;
PointFstart=newPointF();
PointFmid=newPointF();
floatoldDist=1f;
floatoldRotation=0;
Matrixmatrix=newMatrix();
Matrixmatrix1=newMatrix();
MatrixsavedMatrix=newMatrix();

privatestaticfinalintNONE=0;
privatestaticfinalintDRAG=1;
privatestaticfinalintZOOM=2;
intmode=NONE;

booleanmatrixCheck=false;

intwidthScreen;
intheightScreen;

Bitmapgintama;

publicTouchImageView(){
super(activity);
gintama=BitmapFactory.decodeResource(getResources(),R.drawable.gintama);

DisplayMetricsdm=newDisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
widthScreen=dm.widthPixels;
heightScreen=dm.heightPixels;

matrix=newMatrix();
}

protectedvoidonDraw(Canvascanvas){
canvas.save();
canvas.drawBitmap(gintama,matrix,null);
canvas.restore();
}

publicbooleanonTouchEvent(MotionEventevent){
switch(event.getAction()&MotionEvent.ACTION_MASK){
caseMotionEvent.ACTION_DOWN:
mode=DRAG;
x_down=event.getX();
y_down=event.getY();
savedMatrix.set(matrix);
break;
caseMotionEvent.ACTION_POINTER_DOWN:
mode=ZOOM;
oldDist=spacing(event);
oldRotation=rotation(event);
savedMatrix.set(matrix);
midPoint(mid,event);
break;
caseMotionEvent.ACTION_MOVE:
if(mode==ZOOM){
matrix1.set(savedMatrix);
floatrotation=rotation(event)-oldRotation;
floatnewDist=spacing(event);
floatscale=newDist/oldDist;
matrix1.postScale(scale,scale,mid.x,mid.y);//縮放
matrix1.postRotate(rotation,mid.x,mid.y);//旋轉
matrixCheck=matrixCheck();
if(matrixCheck==false){
matrix.set(matrix1);
invalidate();
}
}elseif(mode==DRAG){
matrix1.set(savedMatrix);
matrix1.postTranslate(event.getX()-x_down,event.getY()
-y_down);//平移
matrixCheck=matrixCheck();
matrixCheck=matrixCheck();
if(matrixCheck==false){
matrix.set(matrix1);
invalidate();
}
}
break;
caseMotionEvent.ACTION_UP:
caseMotionEvent.ACTION_POINTER_UP:
mode=NONE;
break;
}
returntrue;
}

privatebooleanmatrixCheck(){
float[]f=newfloat[9];
matrix1.getValues(f);
//圖片4個頂點的坐標
floatx1=f[0]*0+f[1]*0+f[2];
floaty1=f[3]*0+f[4]*0+f[5];
floatx2=f[0]*gintama.getWidth()+f[1]*0+f[2];
floaty2=f[3]*gintama.getWidth()+f[4]*0+f[5];
floatx3=f[0]*0+f[1]*gintama.getHeight()+f[2];
floaty3=f[3]*0+f[4]*gintama.getHeight()+f[5];
floatx4=f[0]*gintama.getWidth()+f[1]*gintama.getHeight()+f[2];
floaty4=f[3]*gintama.getWidth()+f[4]*gintama.getHeight()+f[5];
//圖片現寬度
doublewidth=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//縮放比率判斷
if(width<widthScreen/3||width>widthScreen*3){
returntrue;
}
//出界判斷
if((x1<widthScreen/3&&x2<widthScreen/3
&&x3<widthScreen/3&&x4<widthScreen/3)
||(x1>widthScreen*2/3&&x2>widthScreen*2/3
&&x3>widthScreen*2/3&&x4>widthScreen*2/3)
||(y1<heightScreen/3&&y2<heightScreen/3
&&y3<heightScreen/3&&y4<heightScreen/3)
||(y1>heightScreen*2/3&&y2>heightScreen*2/3
&&y3>heightScreen*2/3&&y4>heightScreen*2/3)){
returntrue;
}
returnfalse;
}

//觸碰兩點間距離
privatefloatspacing(MotionEventevent){
floatx=event.getX(0)-event.getX(1);
floaty=event.getY(0)-event.getY(1);
returnFloatMath.sqrt(x*x+y*y);
}

//取手勢中心點
privatevoidmidPoint(PointFpoint,MotionEventevent){
floatx=event.getX(0)+event.getX(1);
floaty=event.getY(0)+event.getY(1);
point.set(x/2,y/2);
}

//取旋轉角度
privatefloatrotation(MotionEventevent){
doubledelta_x=(event.getX(0)-event.getX(1));
doubledelta_y=(event.getY(0)-event.getY(1));
doubleradians=Math.atan2(delta_y,delta_x);
return(float)Math.toDegrees(radians);
}

//將移動,縮放以及旋轉後的圖層保存為新圖片
//本例中沒有用到該方法,需要保存圖片的可以參考
publicBitmapCreatNewPhoto(){
Bitmapbitmap=Bitmap.createBitmap(widthScreen,heightScreen,
Config.ARGB_8888);//背景圖片
Canvascanvas=newCanvas(bitmap);//新建畫布
canvas.drawBitmap(gintama,matrix,null);//畫圖片
canvas.save(Canvas.ALL_SAVE_FLAG);//保存畫布
canvas.restore();
returnbitmap;
}

}

Ⅷ Android怎樣通過手勢實現縮放處理

android開發是目前很熱門的課程,我們要了解通過手勢實現的縮放處理 的基礎才可以更好的應用Android系統。import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.MotionEvent;import android.view.View;/*** ...** @author vlinux**/public class MultiTouchTestActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.main);View view = new MultiTouchView(this);setContentView(view);}class MultiTouchView extends View {private float x1;private float y1;private float x2;private float y2;public MultiTouchView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubfloat size = event.getSize();int szi = (int) size;int dxi = szi >> 12;int dyit = ((1 << 12) - 1);int dyi = szi & dyit;DisplayMetrics metrics = getResources().getDisplayMetrics();float dx = metrics.widthPixels * dxi / (float) dyit;float dy = metrics.heightPixels * dyi / (float) dyit;x1 = event.getX();y1 = event.getY();x2 = x1 + dx;y2 = y1 + dy;invalidate();return true;}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);float r = (float) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2)* (y1 - y2)) / 2;r = 50 >= r ? 50 : r;Paint paint = new Paint();paint.setColor(Color.BLUE);canvas.drawCircle(x1, y1, r, paint);}天行健,君子以自強不息。勤奮是上天賜予我們的最大的財富,希望每一個人都能把握住自己的人生,用勤奮來獲取多彩的人生。

Ⅸ android 圖片放大縮小

網上有很多例子!

Ⅹ android webview 怎麼放大縮小

Android:WebView如何設定支持縮放:需要對WebView和WebSettings做一下設定

webview.setVerticalScrollbarOverlay(true); //指定的垂直滾動條有疊加樣式

WebSettings settings = webview.getSettings();
settings.setUseWideViewPort(true);//設定支持viewport
settings.setLoadWithOverviewMode(true);
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);//設定支持縮放

html界面meta標簽
<metaname="viewport"content="height= [pixel_value| "device-height"] ,width= [pixel_value| "device-width"] ,initial-scale=float_value,//初始縮放minimum-scale=float_value,//最小maximum-scale=float_value,//最大user-scalable= ["yes" | "no"]//是否允許用戶對頁面縮放 "/>

例如:<meta name="viewport" content="width=device-width,user-scalable=yes initial-scale=1.0, maximum-scale=2.0">-->設定支持縮放,最大兩倍縮放

熱點內容
派派怎麼改密碼忘了 發布:2024-09-20 06:25:49 瀏覽:778
linux虛擬地址物理地址 發布:2024-09-20 06:23:29 瀏覽:563
大華監控雲存儲 發布:2024-09-20 06:13:24 瀏覽:596
SQL寫序列 發布:2024-09-20 06:02:29 瀏覽:965
裝緩存下載 發布:2024-09-20 05:42:36 瀏覽:72
gon引擎自動回收腳本 發布:2024-09-20 05:39:39 瀏覽:247
好醫生連鎖店密碼多少 發布:2024-09-20 05:09:38 瀏覽:15
魔獸腳本代理 發布:2024-09-20 05:09:35 瀏覽:99
python登陸網頁 發布:2024-09-20 05:08:39 瀏覽:758
安卓qq飛車如何轉蘋果 發布:2024-09-20 04:54:30 瀏覽:178