編輯:關於android開發
public class MyView extends View {
private String mtext;
private int msrc;
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
int resourceId = 0;
int textId = attrs.getAttributeResourceValue(null, "Text",0);
int srcId = attrs.getAttributeResourceValue(null, "Src", 0);
mtext = context.getResources().getText(textId).toString();
msrc = srcId;
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.RED);
InputStream is = getResources().openRawResource(msrc);
Bitmap mBitmap = BitmapFactory.decodeStream(is);
int bh = mBitmap.getHeight();
int bw = mBitmap.getWidth();
canvas.drawBitmap(mBitmap, 0,0, paint);
//canvas.drawCircle(40, 90, 15, paint);
canvas.drawText(mtext, bw/2, 30, paint);
}
}
布局文件:
屬性Text, Src在自定義View類的構造方法中讀取。
2)通過XML為View注冊屬性。與Android提供的標准屬性寫法一樣。 案例: 實現一個帶文字說明的ImageView (ImageView+TextView組合,文字說明,可在布局文件中設置位置)public class MyImageView extends LinearLayout {
public MyImageView(Context context) {
super(context);
}
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
int resourceId = -1;
TypedArray typedArray = context.obtainStyledAttributes(attrs,
R.styleable.MyImageView);
ImageView iv = new ImageView(context);
TextView tv = new TextView(context);
int N = typedArray.getIndexCount();
for (int i = 0; i < N; i++) {
int attr = typedArray.getIndex(i);
switch (attr) {
case R.styleable.MyImageView_Oriental:
resourceId = typedArray.getInt(
R.styleable.MyImageView_Oriental, 0);
this.setOrientation(resourceId == 1 ? LinearLayout.HORIZONTAL
: LinearLayout.VERTICAL);
break;
case R.styleable.MyImageView_Text:
resourceId = typedArray.getResourceId(
R.styleable.MyImageView_Text, 0);
tv.setText(resourceId > 0 ? typedArray.getResources().getText(
resourceId) : typedArray
.getString(R.styleable.MyImageView_Text));
break;
case R.styleable.MyImageView_Src:
resourceId = typedArray.getResourceId(
R.styleable.MyImageView_Src, 0);
iv.setImageResource(resourceId > 0 ?resourceId:R.drawable.ic_launcher);
break;
}
}
addView(iv);
addView(tv);
typedArray.recycle();
}
}
attrs.xml進行屬性聲明, 文件放在values目錄下
MainActivity的布局文件:先定義命名空間xmlns:uview="http://schemas.android.com/apk/res/com.example.myimageview2" (com.example.myimageview2為你 在manifest中定義的包名) 然後可以像使用系統的屬性一樣使用:uview:Oriental="Vertical"
四、控件繪制 onDraw() 五、
六:自定義View的方法
onFinishInflate() 回調方法,當應用從XML加載該組件並用它構建界面之後調用的方法 onMeasure() 檢測View組件及其子組件的大小 onLayout() 當該組件需要分配其子組件的位置、大小時 onSizeChange() 當該組件的大小被改變時 onDraw() 當組件將要繪制它的內容時 onKeyDown 當按下某個鍵盤時 onKeyUp 當松開某個鍵盤時 onTrackballEvent 當發生軌跡球事件時 onTouchEvent 當發生觸屏事件時 onWindowFocusChanged(boolean) 當該組件得到、失去焦點時 onAtrrachedToWindow() 當把該組件放入到某個窗口時 onDetachedFromWindow() 當把該組件從某個窗口上分離時觸發的方法 onWindowVisibilityChanged(int): 當包含該組件的窗口的可見性發生改變時觸發的方法
Android開發學習—— Fragment,androidfragment
Android開發學習—— Fragment,androidfragment#Fragment* 用途:在一個Activity裡切換界面,切換界面時只切換Fragment
【轉】Android Studio下加入百度地圖的使用 (一)——環境搭建,androidstudio
【轉】Android Studio下加入百度地圖的使用 (一)——環境搭建,androidstudio 最近有學 生要做畢業設計,會使用到定位及地圖信息的功能,特此研究
Android提高21篇之二十一:MediaPlayer播放網絡視頻
上次講解了MediaPlayer播放網絡音頻,介紹了MediaPlayer關於網絡音頻的緩沖和進度
cocos的Director、Scence、Layer(一)---摘自於官方文檔,cocosscence
cocos的Director、Scence、Layer(一)---摘自於官方文檔,cocosscence基本結構圖(重要) Director: 有那些作用?