導航:首頁 > 操作系統 > androidview居中顯示

androidview居中顯示

發布時間:2022-08-21 14:01:46

android怎樣使自定義的view里的bitmap圖片居中

幾個重要知識點:

1、布局文件中android:scaleType="matrix" 設置圖片動態縮放

2、matrix.postTranslate(dx,dy); 平移圖片 matrix.postScale(sx,sy,p.x,p.y); 縮放圖片

3、兩點的中點、距離計算方式,限制縮放范圍函數,在指定區域內移動圖片方法

示例


{
privatestaticfinalintNONE=0;
privatestaticfinalintDRAG=1;
privatestaticfinalintZOOM=2;

privateintmode=NONE;
privatefloatoldDist;
privateMatrixmatrix=newMatrix();
privateMatrixsavedMatrix=newMatrix();
privatePointFstart=newPointF();
privatePointFmid=newPointF();

ImageViewview;
Bitmapbitmap;
DisplayMetricsdm;
floatminScaleR=0.1f;//最少縮放比例
staticfinalfloatMAX_SCALE=4f;//最大縮放比例
floatdist=1f;

@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view=(ImageView)findViewById(R.id.image_view);
bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.test);

dm=newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);//獲取解析度


matrix.setScale(minScaleR,minScaleR);//開始先縮小
matrix.postTranslate(120,120);//圖片的位置相對於imageview的左上角往右往下各偏移120個像素
view.setImageMatrix(matrix);

view.setOnTouchListener(newOnTouchListener()
{
@Override
publicbooleanonTouch(Viewv,MotionEventevent)
{
ImageViewview=(ImageView)v;
switch(event.getAction()&MotionEvent.ACTION_MASK)
{
caseMotionEvent.ACTION_DOWN://單點
Toast.makeText(Main.this,bitmap.getWidth()+"*"+bitmap.getHeight(),Toast.LENGTH_LONG).show();
savedMatrix.set(matrix);
start.set(event.getX(),event.getY());
mode=DRAG;
break;
caseMotionEvent.ACTION_UP://單點彈起
caseMotionEvent.ACTION_POINTER_UP://多點彈起
mode=NONE;
break;
caseMotionEvent.ACTION_POINTER_DOWN://多點
oldDist=spacing(event);
if(oldDist>10f)
{
savedMatrix.set(matrix);
midPoint(mid,event);
mode=ZOOM;
}
break;
caseMotionEvent.ACTION_MOVE://按下且在拖動
if(mode==DRAG)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX()-start.x,event.getY()-start.y);//xy方向都可以拖動
//matrix.postTranslate(event.getX()-start.x,0);//只在x軸方向拖動即左右拖動上下不動
//matrix.postTranslate(0,event.getY()-start.y);//只在y軸方向拖動即上下拖動左右不動
}
elseif(mode==ZOOM)
{
floatnewDist=spacing(event);
if(newDist>10f)
{
matrix.set(savedMatrix);
floatscale=newDist/oldDist;
matrix.postScale(scale,scale,mid.x,mid.y);
}
}
break;
}

view.setImageMatrix(matrix);

CheckScale();//限制縮放范圍
center();//居中控制

returntrue;
}


//兩點的距離
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);
}
});
}

//限制最大最小縮放比例
protectedvoidCheckScale()
{
floatp[]=newfloat[9];
matrix.getValues(p);
if(mode==ZOOM)
{
if(p[0]<minScaleR)
{
matrix.setScale(minScaleR,minScaleR);
}
if(p[0]>MAX_SCALE)
{
matrix.set(savedMatrix);
}
}
}

//自動居中左右及上下都居中
protectedvoidcenter()
{
center(true,true);
}

privatevoidcenter(booleanhorizontal,booleanvertical)
{
Matrixm=newMatrix();
m.set(matrix);
RectFrect=newRectF(0,0,bitmap.getWidth(),bitmap.getHeight());
m.mapRect(rect);
floatheight=rect.height();
floatwidth=rect.width();
floatdeltaX=0,deltaY=0;
if(vertical)
{
//intscreenHeight=dm.heightPixels;//手機屏幕解析度的高度
intscreenHeight=400;
if(height<screenHeight)
{
deltaY=(screenHeight-height)/2-rect.top;
}elseif(rect.top>0)
{
deltaY=-rect.top;
}elseif(rect.bottom<screenHeight)
{
deltaY=view.getHeight()-rect.bottom;
}
}

if(horizontal)
{
//intscreenWidth=dm.widthPixels;//手機屏幕解析度的寬度
intscreenWidth=400;
if(width<screenWidth)
{
deltaX=(screenWidth-width)/2-rect.left;
}elseif(rect.left>0)
{
deltaX=-rect.left;
}elseif(rect.right<screenWidth)
{
deltaX=screenWidth-rect.right;
}
}
matrix.postTranslate(deltaX,deltaY);
}
}
[html]viewplain
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="200dip"
android:layout_height="200dip"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="matrix"
android:src="@drawable/test"
android:id="@+id/image_view">
</ImageView>
</RelativeLayout>

② 安卓的textview怎麼居中

android編程中textview居中的方法有2中方式

【主要方式】

  1. layout下的布局文件內居中。

  2. 代碼動態設置textview居中。



【主要原理】

調用android sdk提供的api方法進行設置textview 居中顯示。

【詳細實現方式】

  1. layou下的布局居中

    如下圖所示:

    java">TextView.setGravity(Gravity.CENTER);設置文字內容居中
    //設置控制項布局居中
    RelativeLayout.LayoutParamslayoutParams=newRelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);mTextView.setLayoutParams(layoutParams);

【最後】

推薦使用在layout下面進行設置,容易進行開發,調試。

③ Android中如何讓控制項居中

方法一:設置父布局的屬性,但是framelayout是沒有居中效果的

線性布局linearlayout和相對布局relativelayout比較常用


下面是兩個textview在LinearLayout線性布局下的效果

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text1"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text2"/>

</LinearLayout>


④ android textview 怎麼設置某一區域內的文字居中顯示

讓android的Textview控制項文字居中顯示,需要在xml布局文件中對控制項進行設置。
在對應布局文件中,找到該控制項。
在gravity屬性中設置,android:gravity="center"

⑤ android開發中textview的文本怎麼居中

Android開發使TextView文本居中的辦法:
在布局文件中,設置TextView的屬性android:grivate="center"。

⑥ android怎麼讓textview字體居中

android:gravity="center"是設置文字在TextView當中居中,android:layout_gravity="center"是設置在父控制項當中居中,你試試這樣子,按鈕寬度是warp content textview寬度是fill content 然後權重是1 兩個控制項高度一致應該就可以了。 textview後面再放一個相同的button 設置為不可見。

閱讀全文

與androidview居中顯示相關的資料

熱點內容
金庸小說全集下載 瀏覽:792
美國電影主角和老師偷情 瀏覽:132
成人兩性微電影 瀏覽:408
台灣三級的絕版老電影 瀏覽:161
電影雙男主肉 瀏覽:986
重生之北美建國 瀏覽:129
每天工作4小時的程序員 瀏覽:462
香港學生犯罪電影 瀏覽:869
0855aa 瀏覽:506
哪裡買小電影軟體 瀏覽:857
無法連接伺服器上不了怎麼處理 瀏覽:250
android怎樣讀 瀏覽:617
螺紋底經演算法 瀏覽:783
西門子plc編程官網 瀏覽:612
寶寶吃進口燕窩溯源碼 瀏覽:320
重生國民黨殘軍稱王小說 瀏覽:532
鐵路停時演算法 瀏覽:699
姜恩惠主演的電影 瀏覽:987
保存密碼刪除文件夾 瀏覽:321
島國電影app 瀏覽:547