可以使用這樣的一個(gè)xml布局

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比洪江網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式洪江網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋洪江地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
?xml version="1.0" encoding="utf-8"?
selector xmlns:android=""
// 獲取焦點(diǎn)時(shí)候按鈕的背景狀態(tài)
item android:drawable="@drawable/btn_green_pressed" android:state_enabled="true" android:state_focused="true"/
// 被按下時(shí)候按鈕的背景狀態(tài)
item android:drawable="@drawable/btn_green_pressed" android:state_enabled="true" android:state_pressed="true"/
//正常狀態(tài)下按鈕的狀態(tài)
item android:drawable="@drawable/btn_green_normal"/
/selector
把按鈕的背景設(shè)置為這個(gè)布局引用就行了.試試吧騷年
需要兩張圖(分別是最上端的橫杠,下面五個(gè)掛飾取一個(gè)(包括那根繩子,繩子+木牌應(yīng)該做成一張圖)),一個(gè)背景(目測(cè)是暗紅色的)
用
LinearLayout?xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#5C4033"
tools:context="com.example.baiduwenti.MainActivity"?
FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"?
ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/zzz"?/
LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"?
ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:background="@drawable/zz"?/
ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:background="@drawable/zz"?/
ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:background="@drawable/zz"?/
ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:background="@drawable/zz"?/
ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/zz"?/
/LinearLayout
/FrameLayout
/LinearLayout
這是android中的viewPager中常用的一種效果
例如APP首次啟動(dòng)的歡迎界面,通常都會(huì)帶幾個(gè)這種小點(diǎn),用于告訴用戶,當(dāng)前是第幾個(gè)界面
實(shí)效果如下:
android.support.v4.ViewPager類在?API 4+ Support??支持包中開(kāi)始為我們提供,它可以讓我們有能力左右滑動(dòng)以'頁(yè)'的形式展示數(shù)據(jù)。我們可以通過(guò)繼承??PagerAdapter?來(lái)生成頁(yè)面形式的視圖。介紹具體的使用方式之前先來(lái)看下效果
2.實(shí)現(xiàn)代碼:
首先需要在layout文件中配置ViewPager View
android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"?/
3.Activity的實(shí)現(xiàn)代碼
public?class?MainActivity?extends?Activity?{
ArrayListView?mViewList?=?new?ArrayListView();
LayoutInflater?mLayoutInflater;
LinearLayout?mNumLayout;
Button?mPreSelectedBt;
MyPagerAdapter?mPagerAdapter;
@Override
protected?void?onCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayoutInflater?=?getLayoutInflater();
//可以按照需求進(jìn)行動(dòng)態(tài)創(chuàng)建Layout,這里暫用靜態(tài)的xml?layout
mViewList.add(mLayoutInflater.inflate(R.layout.per_pager1,?null));
mViewList.add(mLayoutInflater.inflate(R.layout.per_pager2,?null));
mViewList.add(mLayoutInflater.inflate(R.layout.per_pager3,?null));
ViewPager?viewPager?=?(ViewPager)?findViewById(R.id.pager);
mPagerAdapter?=?new?MyPagerAdapter();
viewPager.setAdapter(mPagerAdapter);
mNumLayout?=?(LinearLayout)?findViewById(R.id.ll_pager_num);
Bitmap?bitmap?=?BitmapFactory.decodeResource(getResources(),?R.drawable.icon_dot_normal);
for?(int?i?=?0;?i??mViewList.size();?i++)?{
Button?bt?=?new?Button(this);
bt.setLayoutParams(new?ViewGroup.LayoutParams(bitmap.getWidth(),bitmap.getHeight()));
bt.setBackgroundResource(R.drawable.icon_dot_normal);
mNumLayout.addView(bt);
}
viewPager.setOnPageChangeListener(new?OnPageChangeListener()?{
@Override
public?void?onPageSelected(int?position)?{
if(mPreSelectedBt?!=?null){
mPreSelectedBt.setBackgroundResource(R.drawable.icon_dot_normal);
}
Button?currentBt?=?(Button)mNumLayout.getChildAt(position);
currentBt.setBackgroundResource(R.drawable.home_page_dot_select);
mPreSelectedBt?=?currentBt;
//Log.i("INFO",?"current?item:"+position);
}
@Override
public?void?onPageScrolled(int?arg0,?float?arg1,?int?arg2)?{
//?TODO?Auto-generated?method?stub
}
@Override
public?void?onPageScrollStateChanged(int?arg0)?{
//?TODO?Auto-generated?method?stub
}
});
}
class?MyPagerAdapter?extends?PagerAdapter{
@Override
public?int?getCount()?{
return?mViewList.size();
}
@Override
public?Object?instantiateItem(View?container,?int?position)?{
Log.i("INFO",?"instantiate?item:"+position);
((ViewPager)?container).addView(mViewList.get(position),0);
return?mViewList.get(position);
}
@Override
public?void?destroyItem(View?container,?int?position,?Object?object)?{
Log.i("INFO",?"destroy?item:"+position);
((ViewPager)?container).removeView(mViewList.get(position));
}
@Override
public?boolean?isViewFromObject(View?arg0,?Object?arg1)?{
return?arg0?==?arg1;
}
}
}
有關(guān)viewPager + Adapter的更多用法,建議查看使用教程
Android自帶的跑馬燈效果不太好控制,不能控制速度,不能即時(shí)停止和啟動(dòng),而且還受焦點(diǎn)的影響蛋疼不已。由于項(xiàng)目需求需要用的可控制性高的跑馬燈效果,所以自己寫(xiě)了一個(gè)自定義的TextView
注意:在布局文件引用本view時(shí),paddingLeft,paddingRigh都必須為0dp,需要增加這兩個(gè)屬性的,大家可以自行修改代碼。
android:ellipsize="marquee"?android:singleLine="true"?這兩個(gè)屬性也要加上
public?class?MarqueeText?extends?TextView?implements?Runnable?{
private?int?currentScrollX;//?當(dāng)前滾動(dòng)的位置
private?boolean?isStop?=?false;
private?int?textWidth;
private?boolean?isMeasure?=?false;
public?MarqueeText(C
ontext?context)?{
super(context);
//?TODO?Auto-generated?constructor?stub
}
public?MarqueeText(Context?context,?AttributeSet?attrs)?{
super(context,?attrs);
}
public?MarqueeText(Context?context,?AttributeSet?attrs,?int?defStyle)?{
super(context,?attrs,?defStyle);
}
@Override
protected?void?onDraw(Canvas?canvas)?{
//?TODO?Auto-generated?method?stub
super.onDraw(canvas);
if?(!isMeasure)?{//?文字寬度只需獲取一次就可以了
getTextWidth();
isMeasure?=?true;
}
}
/**
*?獲取文字寬度
*/
private?void?getTextWidth()?{
Paint?paint?=?this.getPaint();
String?str?=?this.getText().toString();
textWidth?=?(int)?paint.measureText(str);
}
@Override
public?void?run()?{
currentScrollX?-=?2;//?滾動(dòng)速度
scrollTo(currentScrollX,?0);
if?(isStop)?{
return;
}
if?(getScrollX()?=?-(this.getWidth()))?{
scrollTo(textWidth,?0);
currentScrollX?=?textWidth;
//????????????????????????return;
}
postDelayed(this,?5);
}
//?開(kāi)始滾動(dòng)
public?void?startScroll()?{
isStop?=?false;
this.removeCallbacks(this);
post(this);
}
//?停止?jié)L動(dòng)
public?void?stopScroll()?{
isStop?=?true;
}
//?從頭開(kāi)始滾動(dòng)
public?void?startFor0()?{
currentScrollX?=?0;
startScroll();
}
}布局文件:
LinearLayout?xmlns:android=""
xmlns:tools=""
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"?
Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="start"
android:text="走起"?/
Button????????android:id="@+id/stop"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:onClick="stop"????????android:text="停止"?/????Button????????android:id="@+id/startfor0"????????android:layout_width="wrap_content"????????android:layout_height="wrap_content"????????android:onClick="startFor0"????????android:text="從頭開(kāi)始"?/????simtice.demo.marqueetext.MarqueeText????????android:id="@+id/test"????????android:layout_width="fill_parent"????????android:layout_height="wrap_content"????????android:background="#339320"????????android:ellipsize="marquee"????????android:singleLine="true"????????android:text="這才是真正的文字跑馬燈效果這才是真正的字跑馬燈效果這才是真正的"????????android:textColor="#000000"????????android:textSize="20dp"?????/simtice.demo.marqueetext.MarqueeText/LinearLayoutMainActivitypublic?class?MainActivity?extends?Activity?{????????private?MarqueeText?test;????????@Override????????public?void?onCreate(Bundle?savedInstanceState)?{????????????????super.onCreate(savedInstanceState);????????????????setContentView(R.layout.activity_main);????????????????test?=?(MarqueeText)?this.findViewById(R.id.test);????????}????????public?void?start(View?v)?{????????????????test.startScroll();????????}????????public?void?stop(View?v)?{????????????????test.stopScroll();????????}????????public?void?startFor0(View?v){????????????????test.startFor0();????????}}
implementation'com.github.bumptech.glide:glide:4.7.1'
implementation'jp.wasabeef:glide-transformations:4.0.1'
Glide.with(this).load(url)
.apply(RequestOptions.bitmapTransform(new BlurTransformation(5,2)))
.into(civ);
if(Build.VERSION.SDK_INT = Build.VERSION_CODES.HONEYCOMB){
//View從API Level 11才加入setLayerType方法 //設(shè)置View以軟件渲染模式繪圖
tvPhone.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
}
SpannableString stringBuilder=new SpannableString("文字模糊");
stringBuilder.setSpan(new MaskFilterSpan(new BlurMaskFilter(10f,BlurMaskFilter.Blur.NORMAL)),
0,stringBuilder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tvPhone.setText(stringBuilder);
最后來(lái)張效果圖吧:
思路: 通過(guò) handler 做動(dòng)畫(huà),隔一段時(shí)間在IMAGEVIEW中換一張圖片。
private int[] noa = new int[] { R.drawable.green1, R.drawable.green2,
R.drawable.green3 };
/**
* 動(dòng)畫(huà)線程
*/
private Handler handler = new Handler();
private Runnable task = new Runnable() {
public void run() {
mMark.setImg(noa[noi]);
mMark.invalidate();
if (noi == 2) {
noi = 0;
} else {
noi++;
}
handlerTea.postDelayed(task, 800);
}
};
本文題目:android圖片效果,android圖像
文章出自:http://chinadenli.net/article34/dsijepe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站制作、App開(kāi)發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)