android圓形view-九游会j9娱乐平台
① android 如何判斷一個view重繪或載入完成
1、view重繪時回調(即監聽函數,當view重繪完成自動動用,需要向view的觀察者添加監聽器)。格式:
view.getviewtreeobserver().addondrawlistener(new ondrawlistener() {
@override
public void ondraw() {
// todo auto-generated method stub
}
});
2、view載入完成時回調(當view載入完成自動動用,需要向view的觀察者添加監聽器)。格式:
view.getviewtreeobserver().addongloballayoutlistener(new ongloballayoutlistener() {
@override
public void ongloballayout() {
// todo auto-generated method stub
}
});
(1)android圓形view擴展閱讀:
兩種方式刷新:
1、主線程可以直接調用invalidate()方法刷新
2、子線程可以直接調用postinvalidate()方法刷新。
api的描述 : invalidatethe whole view. if the view is visible, ondraw(canvas) will be called at somepoint in the future. this must be called from a ui thread. to call from anon-ui thread, call postinvalidate().。
api的描述譯文:當invalidate()被調用的時候,view的ondraw()就會被調用,invalidate()必須是在ui線程中被調用,如果在新線程中更新視圖的就調用postinvalidate()。
② android-editview文本編輯控制項詳解
editview 是android開發當中運用到最多的控制項之一,主要用戶界面上的輸入框。
view --> textview --> editview 。
1.設置提示文本:
2.設置hint提示文字顏色:
3.設置輸入文本後的文字顏色:
4.設置輸入文本後的字體大小:
5.設置輸入文本後的字體樣式,bold(加粗),italic(傾斜),normal(默認是正常字體)。
6.設置被選中字體的顏色.默認為 theme 主題中的 「coloraccent」的顏色。
7.設置被游標的顏色.默認為 theme 主題中的 「coloraccent」的顏色。
8.設置文本的水平縮放系數。
9.設置hint提示文本的字體.normal(默認)\monospace\sans\serif。
10.設置edittext背景."@null"設置背景為透明.當我們設置背景後,edittext的下劃線就會消失。
11.設置文本的顏色,字體,大小和樣式。
12.設置只接收指定的文本內容,適合只能輸出特定內容的需求。
13.設置文本的類型,用於幫助輸入法顯示合適的鍵盤類型。
14.設置edittext最多接受的文本的個數:
15.設置edittext顯示的行數,設置兩行就顯示兩行,即使第二行沒有數據。
16.設置行間距的倍數. 如設置成1.5倍。
17.設置右下角ime動作與編輯框相關的動作,如actiondone右下角將顯示一個「完成」,而不設置默認是一個回車符號.
③ android 如何讓自定view的顯示超出view的定義大小
在ontouchevent裡面能獲得當前點擊位置的坐標,根據位置的變化,以原點為基礎,通過scrollby來設置view的顯示位置。
自定義layout實現放入其中的組件可以動態改變位置和大小。
自定義customlayout.java
package com.wxq.layout;
import android.content.context;
import android.util.attributeset;
import android.view.viewgroup;
//import android.widget.absolutelayout;
public class customlayout extends viewgroup {
public customlayout(context context) {
super(context);
// todo auto-generated constructor stub
}
public customlayout(context context, attributeset attrs, int defstyle) {
super(context, attrs, defstyle);
// todo auto-generated constructor stub
}
public customlayout(context context, attributeset attrs) {
super(context, attrs);
// todo auto-generated constructor stub
}
@override
protected void onlayout(boolean changed, int l, int t, int r, int b) {
// todo auto-generated method stub
}
}
main.xml:
android:layout_height="fill_parent"
android:orientation="vertical" >
3.其中只有自己的布局,其他的view要自己手動添加。
主程序:
textview mtextview;
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
layoutinflater inflater = getlayoutinflater();
linearlayout linearlayout = (linearlayout) inflater.inflate(r.layout.main, null);
mtextview = new textview(this);
mtextview.settext("wxq say hello!");
mtextview.settextcolor(color.white);
mtextview.setbackgroundcolor(color.red);
viewgroup.layoutparams layoutparams = new viewgroup.layoutparams(100, 100);
customlayout clayout = (customlayout) linearlayout.findviewbyid(r.id.clayout);
clayout.setbackgroundcolor(color.blue);
clayout.addview(mtextview,layoutparams);
mtextview.layout(20, 20, 150 20, 150 20);
log.d("wxq", "mtextview = " mtextview ",and parent is:" mtextview.getparent());
mtextview.post(new runnable() {
@override
public void run() {
// todo auto-generated method stub
log.d("wxq", "textw = " mtextview.getmeasuredwidth() ",h = " mtextview.getmeasuredheight());
}
});
setcontentview(linearlayout);
}
實現的效果如下:
④ android glide 怎麼設置只有一個圓角
附錄1簡單介紹了android開源的圖片載入框架。在實際的開發中,雖然glide解決了快速載入圖片的問題,但還有一個問題懸而未決:比如用戶的頭像,往往用戶的頭像是從伺服器端讀出的一個普通矩形圖片,但是現在的設計一般要求在app端的用戶頭像顯示成圓形頭像,那麼此時雖然glide可以載入,但載入出來的是一個矩形,如果要glide在載入過程中就把矩形圖轉換成圓形的,則需要在glide之上引入一個開源項目:glide-transformations
glide-transformations在github上的項目主頁是:https://github.com/wasabeef/glide-transformations
寫一個例子說明。
[java] view plain
package zhangphil.app;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.widget.imageview;
import com.bumptech.glide.glide;
import jp.wasabeef.glide.transformations.blurtransformation;
import jp.wasabeef.glide.transformations.cropcircletransformation;
import jp.wasabeef.glide.transformations.roundedcornerstransformation;
public class mainactivity extends appcompatactivity {
//我csdn博客頭像
string url = "http://avatar.csdn.net/9/7/a/1_zhangphil.jpg";
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
//原圖,是我博客的頭像
imageview image1 = (imageview) findviewbyid(r.id.image1);
glide.with(this).load(url).crossfade(1000).into(image1);
//原圖 -> 圓圖
imageview image2 = (imageview) findviewbyid(r.id.image2);
glide.with(this).load(url).bitmaptransform(new cropcircletransformation(this)).crossfade(1000).into(image2);
//原圖的毛玻璃、高斯模糊效果
imageview image3 = (imageview) findviewbyid(r.id.image3);
glide.with(this).load(url).bitmaptransform(new blurtransformation(this, 25)).crossfade(1000).into(image3);
//原圖基礎上復合變換成圓圖 毛玻璃(高斯模糊)
imageview image4 = (imageview) findviewbyid(r.id.image4);
glide.with(this).load(url).bitmaptransform(new blurtransformation(this, 25), new cropcircletransformation(this)).crossfade(1000).into(image4);
//原圖處理成圓角,如果是四周都是圓角則是roundedcornerstransformation.cornertype.all
imageview image5 = (imageview) findviewbyid(r.id.image5);
glide.with(this).load(url).bitmaptransform(new roundedcornerstransformation(this, 30, 0, roundedcornerstransformation.cornertype.bottom)).crossfade(1000).into(image5);
}
}
布局則比較簡單,是一個垂直方向的線性布局布局了5個imageview,不再贅述。
代碼運行結果。
附錄:
1,《android圖片載入與緩存開源框架:android glide》鏈接:http://blog.csdn.net/zhangphil/article/details/45535693
⑤ android開發圖形類主要有哪些
canvas類:
canvas類代表畫布,通過該類使用的方法,可以繪制各種圖形(如矩形、圓形、線形)通常情況下,在android中繪制圖形需要先創建繼承自view的類的視圖,並且在該類中重寫其ondraw(canvas canvas)方法,然後在繪制的activity中添加該視圖。
view:組件,理解為畫布
drawable:所有可見對象的描述,理解為:素材類;
bitmap:圖片類;
canvas:畫筆;
paint:畫筆樣式與顏色、特效的集合;
對於android ui開發自繪控制項和游戲製作而言掌握好繪圖基礎是必不可少的有關opengl es相關。