當前位置:首頁 » 安卓系統 » androidsetstyle

androidsetstyle

發布時間: 2022-08-08 21:22:40

㈠ android 怎樣在代碼中給widget設置字體

android給控制項widget設置自定義字體的方式如下:

自定義字體必須放到asset目錄下,需要調用context.getAssets()方法獲取自定義字體的資源,由於android Widget是依賴於其他進程存在,故widget中無法使用字體設置的.setTypeface方法,因此在Widget中使用自定義字體,可以將字體轉換為圖片輸出以後,用views.setImageViewBitmap方法可實現自定義功能,參考代碼:

java">staticBitmapbuildUpdate(Stringtime,Contextcontext){
BitmapmyBitmap=Bitmap.createBitmap(240,80,Bitmap.Config.ARGB_4444);
CanvasmyCanvas=newCanvas(myBitmap);
Paintpaint=newPaint();
Typefacetf=Typeface.createFromAsset(context.getAssets(),"fonts/Clockopia.ttf");
paint.setAntiAlias(true);
paint.setAlpha(110);//取值范圍為0~255,值越小越透明
paint.setSubpixelText(true);
paint.setTypeface(tf);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTextSize(80);
paint.setTextAlign(Align.CENTER);
myCanvas.drawText(time,100,60,paint);
returnmyBitmap;
}


//widget中調用
RemoteViewsmViews=newRemoteViews(context.getPackageName(),R.layout.main);
mViews.setImageViewBitmap(R.id.imageView1,buildUpdate(time,context));

㈡ android 如何重寫imageview 讓圖片有圓角效果

android 自定義圓角ImageView以及鋸齒的處理

看到很多人開發過程中要使用圓角圖片時,解決方法有:


1.重新繪制一張圖片


2.通過布局來配置


3.通過重寫View來實現


其中1,2在這里就不講了,重點講講方法三的實現。



實現一:通過截取畫布一個圓形區域與圖片的相交部分進行繪制,缺點:鋸齒明顯,設置Paint,Canvas抗鋸齒無效。

package com.open.circleimageview.widget;


import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.PaintFlagsDrawFilter;

import android.graphics.Path;

import android.graphics.Rect;

import android.graphics.Region;

import android.util.AttributeSet;

import android.view.View;


public class CircleImageViewA extends View {


public CircleImageViewA(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}


public CircleImageViewA(Context context, AttributeSet attrs) {

super(context, attrs);

}


public CircleImageViewA(Context context) {

super(context);

}


private Bitmap bitmap;

private Rect bitmapRect=new Rect();

private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);

private Paint paint = new Paint();

{

paint.setStyle(Paint.Style.STROKE);

paint.setFlags(Paint.ANTI_ALIAS_FLAG);

paint.setAntiAlias(true);// 設置畫筆的鋸齒效果。 true是去除,大家一看效果就明白了

}

private Path mPath=new Path();

public void setImageBitmap(Bitmap bitmap)

{

this.bitmap=bitmap;

}

@Override

protected void onDraw(Canvas canvas) {


if(null==bitmap)

{

return;

}

bitmapRect.set(0, 0, getWidth(), getHeight());

canvas.save();

canvas.setDrawFilter(pdf);

mPath.reset();

canvas.clipPath(mPath); // makes the clip empty

mPath.addCircle(getWidth()/2, getWidth()/2, getHeight()/2, Path.Direction.CCW);

canvas.clipPath(mPath, Region.Op.REPLACE);

canvas.drawBitmap(bitmap, null, bitmapRect, paint);

canvas.restore();

}

}


實現二:通過PorterDuffXfermode 方式(注意要設置硬體加速,否則部分機子無效),優點:鋸齒基本沒有

package com.open.circleimageview.widget;


import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.PaintFlagsDrawFilter;

import android.graphics.PorterDuff;

import android.graphics.PorterDuffXfermode;

import android.graphics.Rect;

import android.graphics.RectF;

import android.util.AttributeSet;

import android.view.View;


public class CircleImageViewB extends View {


public CircleImageViewB(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}


public CircleImageViewB(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}


public CircleImageViewB(Context context) {

super(context);

init();

}


private Bitmap bitmap;

private Rect bitmapRect=new Rect();

private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);

private Paint paint = new Paint();

{

paint.setStyle(Paint.Style.STROKE);

paint.setFlags(Paint.ANTI_ALIAS_FLAG);

paint.setAntiAlias(true);// 設置畫筆的鋸齒效果。 true是去除,大家一看效果就明白了

}

private Bitmap mDstB=null;

private PorterDuffXfermode xfermode=new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY);

private void init()

{

try {

if(android.os.Build.VERSION.SDK_INT>=11)

{

setLayerType(LAYER_TYPE_SOFTWARE, null);

}

} catch (Exception e) {

e.printStackTrace();

}

}

public void setImageBitmap(Bitmap bitmap)

{

this.bitmap=bitmap;

}


private Bitmap makeDst(int w, int h)

{

Bitmap bm = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(bm);

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

p.setColor(Color.parseColor("#ffffffff"));

c.drawOval(new RectF(0, 0, w, h), p);

return bm;

}

@Override

protected void onDraw(Canvas canvas) {


if(null==bitmap)

{

return;

}

if(null==mDstB)

{

mDstB=makeDst(getWidth(), getHeight());

}


bitmapRect.set(0, 0, getWidth(), getHeight());

canvas.save();

canvas.setDrawFilter(pdf);

canvas.drawBitmap(mDstB, 0, 0, paint);

paint.setXfermode(xfermode);

canvas.drawBitmap(bitmap, null, bitmapRect, paint);

paint.setXfermode(null);

canvas.restore();

}

}


㈢ Android 開發中 對下上兩個圖層的相關操作問題

黑色其實算是canvas板上的。
你想要那種透明可以看到activity的效果是需要在canvas上設置一個bitmap才可以的。
Canvas canvas = new Canvas();
canvas.setBitmap(bm_);

p.setColor(Color.TRANSPARENT);
p.setAntiAlias(true);
p.setStyle(Style.FILL);
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

canvas.save();
Rect r = new Rect(0,0,w*2,h*2);

canvas.drawRect(r, p);
canvas_.drawBitmap(bm_, 0, 0,null);

㈣ android 可以在程序代碼中設置style嗎

可以,當然可以嘍,可以在onCreate的時候就設置,setStyle() 無論換背景、顏色、字體什麼的 首先要得到被換的component, 比如字體,假設他是TextView: 1、得到這個TextView component:TextView tv = (TextView)findViewById(R.id.tv);

㈤ Android開發中,如何給動態生成的Button指定Style樣式

自定義樣式方法,可以直接通過定義xml文件來實現不同的樣式:
只需要修改button_style文件,同樣三種狀態分開定義:
Xml代碼
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:startColor="#0d76e1" android:endColor="#0d76e1"
android:angle="270" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="2dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
</item>

<item android:state_focused="true">
<shape>
<gradient android:startColor="#ffc2b7" android:endColor="#ffc2b7"
android:angle="270" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="2dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
</item>

<item>
<shape>
<gradient android:startColor="#000000" android:endColor="#ffffff"
android:angle="180" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="5dip" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
</item>
</selector>

gradient 主體漸變 startColor開始顏色,endColor結束顏色 ,angle開始漸變的角度(值只能為90的倍數,0時為左到右漸變,90時為下到上漸變,依次逆時針類推)
stroke 邊框 width 邊框寬度,color 邊框顏色
corners 圓角 radius 半徑,0為直角
padding text值的相對位置

㈥ 怎麼用Android畫一個正方形

先來介紹一下畫幾何圖形要用到的,畫布(Canvas)、畫筆(Paint)。
1. 畫一個圓使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐標、radius是半徑、paint是畫筆,就是畫圖的顏色;
2. 在畫圖的時候還要有注意,你所畫的矩形是實心(paint.setStyle(Paint.Style.FILL))還是空心(paint.setStyle(Paint.Style.STROKE);
畫圖的時候還有一點,那就是消除鋸齒:paint.setAntiAlias(true);
3. 還有就是設置一種漸變顏色的矩形:
Shader mShader = new LinearGradient(0,0,100,100, new int[]{Color.RED,Color.GREEn,Color.BLUE,Color.YELLO},null,Shader.TileMode.REPEAT);
ShapeDrawable sd;
//畫一個實心正方形
sd = new ShapeDrawable(new RectShape());
sd.setBounds(20,20,100,100);
sd.draw(canvas);
//一個漸變色的正方形就完成了

4. 正方形:drawRect:canvas.drawRect(left, top, right, bottom, paint)
這里的left、top、right、bottom的值是:
left:是矩形距離左邊的X軸
top:是矩形距離上邊的Y軸
right:是矩形距離右邊的X軸
bottom:是矩形距離下邊的Y軸
5. 長方形:他和正方形是一個原理,這個就不用說了
6. 橢圓形:記住,這里的Rectf是float類型的
RectF re = new Rect(left, top, right, bottom);
canvas.drawOval(re,paint);

好了,說了這么多的的東西,那就讓我們來看一下真正的實例吧!!!
package com.hades.game;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;
public class CanvasActivity extends Activity {
/**
* 畫一個幾何圖形
* hades
* 藍色著衣
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView myView = new MyView(this);
setContentView(myView);
}
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 設置畫布的背景顏色
canvas.drawColor(Color.WHITE);
/**
* 定義矩形為空心
*/
// 定義畫筆1
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
// 消除鋸齒
paint.setAntiAlias(true);
// 設置畫筆的顏色
paint.setColor(Color.RED);
// 設置paint的外框寬度
paint.setStrokeWidth(2);
// 畫一個圓
canvas.drawCircle(40, 30, 20, paint);
// 畫一個正放形
canvas.drawRect(20, 70, 70, 120, paint);
// 畫一個長方形
canvas.drawRect(20, 170, 90, 130, paint);
// 畫一個橢圓
RectF re = new RectF(20, 230, 100, 190);
canvas.drawOval(re, paint);
/**
* 定義矩形為實心
*/
paint.setStyle(Paint.Style.FILL);
// 定義畫筆2
Paint paint2 = new Paint();
// 消除鋸齒
paint2.setAntiAlias(true);
// 設置畫筆的顏色
paint2.setColor(Color.BLUE);
// 畫一個空心圓
canvas.drawCircle(150, 30, 20, paint2);
// 畫一個正方形
canvas.drawRect(185, 70, 130, 120, paint2);
// 畫一個長方形
canvas.drawRect(200, 130, 130, 180, paint2);
// 畫一個橢圓形
RectF re2 = new RectF(200, 230, 130, 190);
canvas.drawOval(re2, paint2);
}
}
}

㈦ android裡面如何填充矩形呢

方案:

在canvas上畫矩形,然後設置畫筆為實心就可以了。

代碼示例:

paint.setStyle(Style.FILL);//實心矩形框
paint.setColor(Color.RED);//顏色為紅色
canvas.drawRect(newRectF(10,10,300,100),paint);//畫一個290*90的紅色實心矩形

㈧ 如何改變在Android中刪除線的顏色

I think this is not possible for simple textview so you have to do the following:-
1.Create a custom TextView by extending View class
2.Declare this custom textview inside XML layout same like we do for TextView.
And at last write an onDraw() method like following.

@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(strikeThroughColor);
paint.setStyle(Paint.Style.FILL);
paint.setStrikeThruText(true);
paint.setStrokeWidth(strikeThroughWidth);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
super.onDraw(canvas);
float width = getWidth();
float heigh = getHeight();
canvas.drawLine(width/10, heigh/10, (width-width/10),(heigh-heigh/10), paint);
}

㈨ android中使用paint怎麼畫虛線

Paint paint = new Paint ( ) ;
paint.setColor ( Color.BLACK ) ;
//設置畫直線格式
paint.setStyle ( Paint.Style.STROKE ) ;

//設置虛線效果
paint.setPathEffect ( new DashPathEffect ( new float [ ] { 3, 2 }, 0 ) ) ;

最後這句是設置虛線效果,里邊的float數組的意思是:先畫長度為3的實線,再間隔長度為2的空白,之後一直重復這個單元。這個數組的長度只要大於等於2就行,你可以設置多個數值,產生不同效果,最後這個0指的是與起始位置的偏移量。

㈩ 如何將J2ME上面的游戲改到Android上面

1. 平台比較

J2me:

開發平台

Android:

操作系統

2. 工程結構比較(源代碼,資源文件夾,圖片,數據)

J2me:

Res:資源文件

Src:源代碼

Android:

Src:源代碼

Res\drawable:圖片

Res\raw:聲音

Res\values:字元串

Assets:數據文件

3. 安裝包比較

J2me:

Jad,jar

Android:

apk

4. 代碼結構比較

J2me:

MIDlet,Canvas

Android:

Activity,View

都採用繼承的方式,都只有一個MIDlet/Activity,一般都只有一個Canvas/View

5. 代碼細節比較

l 全屏設置

J2me:

在Canvas類中調用SetFullScreenMode(Boolean)

Android:

在Activity類中調用

//設定全屏顯示

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE);

2 獲得屏幕尺寸

J2me:

Canvas類的getHeight()和getWidth()方法

Android:

int screenWidth,screenHeight;

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();

3 Display

J2me:

Display dis=Display.getDisplay(MIDlet);

Android:

Display display = windowManager.getDefaultDisplay();

4 畫布類

J2me:

Canvas

Android:

繼承View類,定義構造方法:

public MyView(Context context)

{

super(context);

}

5 屏幕繪制方法

J2me:

Paint(Graphics)

Android:

void onDraw(Canvas g)

6 Graphics

J2me:

Android:

7 Image的創建

J2me:

Image.createImage(path);

Android:

img = BitmapFactory.decodeResource(getResources(),R.drawable.map0);

8 Font的創建,Font使用,字體設置

J2me:

Android:

9 drawImage

J2me:

Android:

public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

多個重載

10 字元串繪制

J2me:

Android:

public native void drawText(String text, float x, float y, Paint paint);

多個重載

11 setClip

J2me:

Android:

public boolean clipRect(float left, float top, float right, float bottom,Region.Op op)

最後一個參數為:Region.Op.REPLACE

12旋轉

J2me:

drawRegion()

drawImage()

Android:

還沒找到好的方法,不過可以先創建一張翻轉後的圖片,再使用,封裝好的代碼如下:

//創建翻轉圖片

public Bitmap createTransImage(Bitmap img,int trans)

{

// Bitmap img;

try

{

// img = BitmapFactory.decodeResource(getResources(),sImg);

int width = img.getWidth();

int height = img.getHeight();

int newWidth = 200;

int newHeight = 200;

// calculate the scale - in this case = 0.4f

float scaleWidth = ((float) newWidth) / width;

float scaleHeight = ((float) newHeight) / height;

// createa matrix for the manipulation

Matrix matrix = new Matrix();

// resize the bit map

matrix.postScale(scaleWidth, scaleHeight);

// rotate the Bitmap

int degree=0;

Bitmap resizedBitmap=null;

int data[];

int buf;

switch(trans)

{

case ROTATE_HOR:

//創建鏡像翻轉

data=new int [img.getWidth()*img.getHeight()];

img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());

//交換數據

for(int i=0;i<img.getHeight();i++)

for(int j=0;j<img.getWidth()/2;j++)

{

buf=data[i*img.getWidth()+j];

data[i*img.getWidth()+j]=data[img.getWidth()*(i+1)-(j+1)];

data[img.getWidth()*(i+1)-(j+1)]=buf;

}

resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),

img.getHeight(), Bitmap.Config.ARGB_4444);;

return resizedBitmap;

case ROTATE_VER:

//創建鏡像翻轉

data=new int [img.getWidth()*img.getHeight()];

img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());

//交換數據

for(int i=0;i<img.getHeight()/2;i++)

for(int j=0;j<img.getWidth();j++)

{

buf=data[i*img.getWidth()+j];

data[i*img.getWidth()+j]=data[(img.getHeight()-i-1)*img.getWidth()+j];

data[(img.getHeight()-i-1)*img.getWidth()+j]=buf;

}

resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),

img.getHeight(), Bitmap.Config.ARGB_4444);;

return resizedBitmap;

case ROTATE_90:

matrix.postRotate(90);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

case ROTATE_180:

matrix.postRotate(180);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

case ROTATE_270:

matrix.postRotate(270);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

}

return resizedBitmap;

}

catch (Exception e)

{

return null;

}

}

13 drawRect

J2me:

Android:

public void drawRect(float left, float top, float right, float bottom,Paint paint)

14 聲音處理

J2me:

Android:

創建:

MediaPlayer coverSound =MediaPlayer.create(Activity,R.raw.back);

coverSound.prepare();

播放:

coverSound.start();

暫停:

coverSound.pause();

聲音設置:

AudioManager vc = (AudioManager)Activity.getSystemService(Context.AUDIO_SERVICE);

vc.adjustVolume(AudioManager.ADJUST_LOWER, 1);

關閉:

coverSound.stop();

coverSound.release();

15 中斷處理

J2me:

Android:

public void onWindowFocusChanged(boolean visibility)

16 填充屏幕

J2me:

Android:

CanvasInstance.drawColor(int color)

l7 按鍵處理

J2me:

Android:

要使按鍵可以被響應,需要在構造函數中調用

this.setFocusable(true);

處理方法:

public boolean onKeyDown(int keyCode, KeyEvent msg)

public boolean onKeyUp(int keyCode, KeyEvent msg)

18 觸摸屏處理

J2me:

Android:

public boolean onTouchEvent(MotionEvent me)

{

if(me.getAction()==MotionEvent.ACTION_DOWN)

。。。。。。

else if(me.getAction()==MotionEvent.ACTION_UP)

。。。。。。

return true;

}

19 資源文件的的存放位置及讀取

J2me:

Android:

圖片:

Res\drawable:

聲音:

Res\raw

數據:

Asserts

InputStream is=ActivityInstance.getAssets().open(path + ".dat");

20 屏幕刷新,

J2me:

repaint()

Android:

postInvalidate();

21 顏色的使用

J2me:

Android:

PaintInstance.setColor(0xAARRGGBB);

22 數據保存和讀取

J2me:

Android:

保存:

SharedPreferences settings = ActivityInstance.getSharedPreferences(String name,int mode);

SharedPreferences.Editor editor = settings.edit();

editor.putBoolean("hasRec", true);

。。。。。

editor.putInt("ex",enemy[i].i_X_abs);

editor.commit();

讀取:

SharedPreferences settings = ActivityInstance.getSharedPreferences (String name,int mode);

this.curFaceDirection=settings.getInt("cd", 0);

23 填充方式

J2me:

Android:

paint.setStyle(Style.FILL);

paint.setStyle(Style.STROKE);

24錨點

J2me:

Android:

setTextAlign(Paint.Align.LEFT);

25 連接處理

J2me:

HttpConnection conn = (HttpConnection) Connector.open("www..com", Connector.READ, true);

conn.setRequestMethod("GET");

conn.setRequestProperty("accept", "**");

String location = conn.getRequestProperty("location");

int resCode = conn.getResponseCode();

InputStream stream = conn.getInputStream();

conn.disconnect();

總結了一下,有以下幾點不同之處:

J2ME中的連接從Connector打開,Android中從URL對象打開

要設置連接是否可讀寫,J2ME中可以直接在Connector.Open時設置,而在Android中必須使用setDoInput(boolean)和setDoOutput(boolean)方法設置

在J2ME中可以在Connector.Open中對連接進行超時設置,在Android中使用setConnectTimeout(int)不僅可以對連接超時進行設置,還能設置超時時間,參數為0時忽略連接超時

在使用這些Api時,一定要注意每個參數的意義,比如j2me中drawRect的後兩個參數為寬度和高度,而在Android中則變成了結束點的坐標,使用時千萬不能想當然的隨意傳參。

對於Override方法的定義,一定別忘了super.的方式來進行回調。

上面基本上把J2ME和Android在2D游戲游戲開發中常用的API做了一個比較,了解這些內容後,基本上是可以比較容易地把ME的游戲游戲平順地遷 移到Android平台。當然,此處只限制為游戲,如果你想把一款J2ME的軟體遷移到Android平台,此方法並不適用,你需要學習android的 控制項的使用

熱點內容
dhcp伺服器地址租期時間怎麼調整 發布:2025-01-18 20:28:02 瀏覽:266
加密區的圖片 發布:2025-01-18 20:22:17 瀏覽:473
key文件加密 發布:2025-01-18 20:12:07 瀏覽:735
etl伺服器怎麼用 發布:2025-01-18 20:08:18 瀏覽:280
硫酸鎂演算法 發布:2025-01-18 19:53:00 瀏覽:669
華為什麼時候做安卓 發布:2025-01-18 19:44:23 瀏覽:712
電腦超凡先鋒選則不了伺服器 發布:2025-01-18 19:23:46 瀏覽:961
wifi賬號wifi賬號密碼怎麼修改 發布:2025-01-18 19:17:07 瀏覽:78
餐飲消毒液如何配置 發布:2025-01-18 19:11:01 瀏覽:591
入侵php 發布:2025-01-18 19:01:09 瀏覽:802