當前位置:首頁 » 安卓系統 » android切換圖片

android切換圖片

發布時間: 2025-03-26 23:11:25

❶ android怎麼viewpager實現循環切換圖片

Android中的ViewPager則實現了左右滑動的效果,ViewPager類提供了多界面切換的新效果。利用ViewPager實現圖片循環滾動代碼如下:

1、首先是布局文件,使用了一個ViewPager控制項:

java"><spanstyle="padding:0px;margin:0px;font-size:14px;"><RelativeLayoutxmlns: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.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/viewpager"
android:background="#33000000"
android:orientation="vertical"
android:padding="5dip">
<TextView
android:id="@+id/tv_image_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="第一個引導頁面"
android:textColor="@android:color/white"
android:textSize="14sp"/>
<LinearLayout
android:id="@+id/ll_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</RelativeLayout></span>

2、接下來實現一個繼承PagerAdapter的MyAdapter類,實現一個PagerAdapter,代碼如下:

<spanstyle="padding:0px;margin:0px;font-size:14px;">packagecom.example.viewpagertest;
importjava.util.List;
importandroid.support.v4.view.PagerAdapter;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.ImageView;
{
privateList<ImageView>mImageViewList;
publicViewPagerAdapter(List<ImageView>imageViewList){
super();
this.mImageViewList=imageViewList;
}
/**
*該方法將返回所包含的Item總個數。為了實現一種循環滾動的效果,返回了基本整型的最大值,這樣就會創建很多的Item,
*其實這並非是真正的無限循環。
*/
@Override
publicintgetCount(){
returnInteger.MAX_VALUE;
}
/**
*判斷出去的view是否等於進來的view如果為true直接復用
*/
@Override
publicbooleanisViewFromObject(Viewarg0,Objectarg1){
returnarg0==arg1;
}
/**
*銷毀預載入以外的view對象,會把需要銷毀的對象的索引位置傳進來,就是position,
*因為mImageViewList只有五條數據,而position將會取到很大的值,
*所以使用取余數的方法來獲取每一條數據項。
*/
@Override
publicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){
container.removeView(mImageViewList.get(position%mImageViewList.size()));
}
/**
*創建一個view,
*/
@Override
publicObjectinstantiateItem(ViewGroupcontainer,intposition){
container.addView(mImageViewList.get(position%mImageViewList.size()));
returnmImageViewList.get(position%mImageViewList.size());
}
}
</span>

3、最後是主界面部分的代碼:

<spanstyle="padding:0px;margin:0px;font-size:14px;">packagecom.example.viewpagertest;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.os.SystemClock;
importandroid.support.v4.view.ViewPager;
importandroid.support.v4.view.ViewPager.OnPageChangeListener;
importandroid.view.View;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.LinearLayout.LayoutParams;
importandroid.widget.TextView;

{

privateList<ImageView>imageViewList;
privateTextViewtvDescription;
privateLinearLayoutllPoints;
privateString[]imageDescriptions;
=0;
privateViewPagermViewPager;
privatebooleanisLoop=true;
privateHandlerhandler=newHandler(){

@Override
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);

mViewPager.setCurrentItem(mViewPager.getCurrentItem()+1);
}
};

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setView();
initView();
}

publicvoidsetView(){
setContentView(R.layout.activity_splash_viewpager);

//自動切換頁面功能
newThread(newRunnable(){

@Override
publicvoidrun(){
while(isLoop){
SystemClock.sleep(2000);
handler.sendEmptyMessage(0);
}
}
}).start();
}

publicvoidinitView(){
mViewPager=(ViewPager)findViewById(R.id.viewpager);
tvDescription=(TextView)findViewById(R.id.tv_image_description);
llPoints=(LinearLayout)findViewById(R.id.ll_points);

prepareData();

ViewPagerAdapteradapter=newViewPagerAdapter(imageViewList);
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(this);

tvDescription.setText(imageDescriptions[previousSelectPosition]);
llPoints.getChildAt(previousSelectPosition).setEnabled(true);

/**
*2147483647/2=1073741820-1
*設置ViewPager的當前項為一個比較大的數,以便一開始就可以左右循環滑動
*/
intn=Integer.MAX_VALUE/2%imageViewList.size();
intitemPosition=Integer.MAX_VALUE/2-n;

mViewPager.setCurrentItem(itemPosition);
}

privatevoidprepareData(){
imageViewList=newArrayList<ImageView>();
int[]imageResIDs=getImageResIDs();
imageDescriptions=getImageDescription();

ImageViewiv;
Viewview;
for(inti=0;i<imageResIDs.length;i++){
iv=newImageView(this);
iv.setBackgroundResource(imageResIDs[i]);
imageViewList.add(iv);

//添加點view對象
view=newView(this);
view.setBackgroundDrawable(getResources().getDrawable(R.drawable.point_background));
LayoutParamslp=newLayoutParams(5,5);
lp.leftMargin=10;
view.setLayoutParams(lp);
view.setEnabled(false);
llPoints.addView(view);
}
}

privateint[]getImageResIDs(){
returnnewint[]{
R.drawable.bg1,
R.drawable.bg2,
R.drawable.bg3,
R.drawable.pic_01,
R.drawable.pic_02
};
}

privateString[]getImageDescription(){
returnnewString[]{
"第一個引導頁面",
"第二個引導頁面",
"第三個引導頁面",
"第四個引導頁面",
"第五個引導頁面"
};
}
@Override
(intarg0){

}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){

}
@Override
publicvoidonPageSelected(intposition){
//改變圖片的描述信息
tvDescription.setText(imageDescriptions[position%imageViewList.size()]);
//切換選中的點,把前一個點置為normal狀態
llPoints.getChildAt(previousSelectPosition).setEnabled(false);
//把當前選中的position對應的點置為enabled狀態
llPoints.getChildAt(position%imageViewList.size()).setEnabled(true);
previousSelectPosition=position%imageViewList.size();
}
@Override
protectedvoidonDestroy(){
super.onDestroy();
isLoop=false;
}
}
</span>

❷ 如何android代碼控制圖片轉換

可以放置圖片的View控制項是ImageView 那麼這個類得對象有個 setImageResource(R.drawable....)(比如你的圖片放在drawable文件夾裡面,這個文件夾可以自己在res下面新建)方法,可以放置圖片,如果是切換的話你就弄個按鈕觸發事件之類的,點擊之後先清空 對象.clear()
然後再重新放置一個你指定的圖片就好啦 如果再復雜一點的就用ImageSwitcher 這個我給你一個程序你看看吧,一半會兒是講不明白的,但是道理是一樣,就是在ImageSwitcher上面添加ImageView,圖片實際上還是放在ImageView裡面的/* 所有要顯示的圖片資源索引 */
private static final Integer[] imagelist =
{
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
R.drawable.img4,
R.drawable.img5,
R.drawable.img6,
R.drawable.img7,
R.drawable.img8,
};

//創建ImageSwitcher對象
private ImageSwitcher m_Switcher;
//索引
private static int index = 0;

//「下一頁」按鈕ID
private static final int BUTTON_DWON_ID = 0x123456;
//「上一頁」按鈕ID
private static final int BUTTON_UP_ID = 0x123457;
//ImageSwitcher對象的ID
private static final int SWITCHER_ID = 0x123458;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

//創建一個線性布局LinearLayout
LinearLayout main_view = new LinearLayout(this);
//創建ImageSwitcher對象
m_Switcher = new ImageSwitcher(this);
//在線性布局中添加ImageSwitcher視圖
main_view.addView(m_Switcher);
//設置ImageSwitcher對象的ID
m_Switcher.setId(SWITCHER_ID);
//設置ImageSwitcher對象的數據源
m_Switcher.setFactory(this);
m_Switcher.setImageResource(imagelist[index]);

//設置顯示上面創建的線性布局
setContentView(main_view);

//創建「下一張」按鈕
Button next = new Button(this);
next.setId(BUTTON_DWON_ID);
next.setText("下一張");
next.setOnClickListener(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(100, 100);
main_view.addView(next, param);

//創建「上一張」按鈕
Button pre = new Button(this);
pre.setId(BUTTON_UP_ID);
pre.setText("上一張");
pre.setOnClickListener(this);
main_view.addView(pre, param);

}

//事件監聽、處理
public void onClick(View v)
{
switch (v.getId())
{
//下一頁
case BUTTON_DWON_ID:
index++;
if (index >= imagelist.length)
{
index = 0;
}
//ImageSwitcher對象資源索引
m_Switcher.setImageResource(imagelist[index]);
break;
//上一頁
case BUTTON_UP_ID:
index--;
if (index < 0)
{
index = imagelist.length - 1;
}
//ImageSwitcher對象資源索引
m_Switcher.setImageResource(imagelist[index]);
break;
default:
break;
}
}

public View makeView()
{
//將所有圖片通過ImageView來顯示
return new ImageView(this);
}

❸ android 界面中,點擊一張圖片,怎樣使得界面上這張圖片切換為另一張圖片。

即使樓主沒有用layout的xml文件。但還是要聲明實例化一個View去展示畫布,以及在Activity的setContentView(view)方法中傳入。 這樣,樓主是肯定可以得到這個View的對象的。
方法一:直接添加OnclickListener
view.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 在這里切換另一張圖片
}
});
方法二:自定義一個view.繼承android.view.View.並復寫View的onTouchEvent()方法。
@Override
public boolean onTouchEvent(MotionEvent event)
{
//獲取拖動事件的發生位置
float x = event.getX();
float y = event.getY();
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:

break;
case MotionEvent.ACTION_MOVE:

break;
case MotionEvent.ACTION_UP:

break;
}
invalidate();// 申請重繪
return true;
}
@Override
public void onDraw(Canvas canvas)
{
//.....你要繪制的另一張圖片
canvas.drawPath(path, paint);
}

熱點內容
啟智演算法 發布:2025-03-30 00:43:54 瀏覽:411
linuxphplog 發布:2025-03-30 00:42:00 瀏覽:528
爐石傳說金頭像腳本 發布:2025-03-30 00:40:32 瀏覽:879
c語言數據結構試題 發布:2025-03-30 00:40:30 瀏覽:285
emmc編程 發布:2025-03-30 00:33:03 瀏覽:573
如何從安卓手機導數據到iphone上 發布:2025-03-30 00:31:34 瀏覽:559
會員賬戶如何設置密碼 發布:2025-03-30 00:24:18 瀏覽:249
寶馬m系列有哪些挺有配置 發布:2025-03-30 00:16:58 瀏覽:90
演算法掙外快 發布:2025-03-29 23:57:11 瀏覽:326
摩斯密碼如何隱藏 發布:2025-03-29 23:55:40 瀏覽:214