當前位置:首頁 » 安卓系統 » android動態載入圖片

android動態載入圖片

發布時間: 2022-10-23 10:24:12

① android動態載入view一個一個刷新怎麼實現

先看一下結構圖

可以看到ViewSwitcher和ViewFlipper都是繼承自ViewAnimator。


下面通過一個Demo了解一下ViewFlipper的用法

main.xml

Html代碼

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="htt p:/ /schemas.andro id.co m/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<ViewFlipper

android:id="@+id/viewFlipper"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<include

android:id="@+id/layout01"

layout="@layout/layout01" />

<include

android:id="@+id/layout02"

layout="@layout/layout02" />

</ViewFlipper>

</LinearLayout>


layout01.xml

Html代碼

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="htt p:/ /schem as.andro id.c om/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center"

android:text="一個TextView"

android:textSize="40dip" />

</LinearLayout>


layout02.xml

Html代碼

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="htt p://schema s.andro id.c om/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center"

android:orientation="vertical" >

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/ic_launcher" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="一個TextView + 一個ImageView"

android:textSize="20dip" />

</LinearLayout>

</LinearLayout>


ViewFlipperDemoActivity.java

Java代碼

package com.tianjf;

import android.app.Activity;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.view.animation.AnimationUtils;

import android.widget.ViewFlipper;

public class ViewFlipperDemoActivity extends Activity implements

OnTouchListener {

private ViewFlipper viewFlipper;

// 左右滑動時手指按下的X坐標

private float touchDownX;

// 左右滑動時手指松開的X坐標

private float touchUpX;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);

viewFlipper.setOnTouchListener(this);

}


}

float XFrom = e1.getX();

float XTo = e2.getX();

float YFrom = e1.getY();

float YTo = e2.getY();

// 左右滑動的X軸幅度大於100,並且X軸方向的速度大於100

if (Math.abs(XFrom - XTo) > 100.0f && Math.abs(speedX) > 100.0f) {

// X軸幅度大於Y軸的幅度

if (Math.abs(XFrom - XTo) >= Math.abs(YFrom - YTo)) {

if (XFrom > XTo) {

// 下一個

mOnFlingListener.flingToNext();

} else {

// 上一個

mOnFlingListener.flingToPrevious();

}

}

} else {

return false;

}

return true;

}

public interface OnFlingListener {

void flingToNext();

void flingToPrevious();

}

}


MyViewFlipper.java

Java代碼

package com.tianjf;

import com.tianjf.MyGestureListener.OnFlingListener;

import android.content.Context;

import android.util.AttributeSet;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.view.View;

import android.widget.ViewFlipper;

public class MyViewFlipper extends ViewFlipper implements OnFlingListener {

private GestureDetector mGestureDetector = null;

private OnViewFlipperListener mOnViewFlipperListener = null;

public MyViewFlipper(Context context) {

super(context);

}

public MyViewFlipper(Context context, AttributeSet attrs) {

super(context, attrs);

}

public void setOnViewFlipperListener(OnViewFlipperListener mOnViewFlipperListener) {

this.mOnViewFlipperListener = mOnViewFlipperListener;

MyGestureListener myGestureListener = new MyGestureListener();

myGestureListener.setOnFlingListener(this);

mGestureDetector = new GestureDetector(myGestureListener);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

if (null != mGestureDetector) {

return mGestureDetector.onTouchEvent(ev);

} else {

return super.onInterceptTouchEvent(ev);

}

}

@Override

public void flingToNext() {

if (null != mOnViewFlipperListener) {

int childCnt = getChildCount();

if (childCnt == 2) {

removeViewAt(1);

}

addView(mOnViewFlipperListener.getNextView(), 0);

if (0 != childCnt) {

setInAnimation(getContext(), R.anim.left_slip_in);

setOutAnimation(getContext(), R.anim.left_slip_out);

setDisplayedChild(0);

}

}

}

@Override

public void flingToPrevious() {

if (null != mOnViewFlipperListener) {

int childCnt = getChildCount();

if (childCnt == 2) {

removeViewAt(1);

}

addView(mOnViewFlipperListener.getPreviousView(), 0);

if (0 != childCnt) {

setInAnimation(getContext(), R.anim.right_slip_in);

setOutAnimation(getContext(), R.anim.right_slip_out);

setDisplayedChild(0);

}

}

}

public interface OnViewFlipperListener {

View getNextView();

View getPreviousView();

}

}


ViewFlipperDemoActivity.java

Java代碼

package com.tianjf;

import com.tianjf.MyViewFlipper.OnViewFlipperListener;

import android.app.Activity;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.ScrollView;

import android.widget.TextView;

public class ViewFlipperDemoActivity extends Activity implements OnViewFlipperListener {

private MyViewFlipper myViewFlipper;

private int currentNumber;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

currentNumber = 1;

myViewFlipper = (MyViewFlipper) findViewById(R.id.myViewFlipper);

myViewFlipper.setOnViewFlipperListener(this);

myViewFlipper.addView(creatView(currentNumber));

}

@Override

public View getNextView() {

currentNumber = currentNumber == 10 ? 1 : currentNumber + 1;

return creatView(currentNumber);

}

@Override

public View getPreviousView() {

currentNumber = currentNumber == 1 ? 10 : currentNumber - 1;

return creatView(currentNumber);

}

private View creatView(int currentNumber) {

LayoutInflater layoutInflater = LayoutInflater.from(this);

ScrollView resultView = (ScrollView) layoutInflater.inflate(R.layout.flipper_view, null);

((TextView) resultView.findViewById(R.id.textView)).setText(currentNumber + "");

return resultView;

}

}


好了,代碼上完了,開始講解!

ViewFilpper的showPrevious()方法和showNext()方法是用來顯示已經在布局文件中定義好了的View,現在我們沒有在布局文件中為ViewFlipper添加View,那麼showPrevious()方法和showNext()方法就不能用了。但是我們怎麼實現滑動來切換View呢?用什麼方法呢?

這時候,我們就要自定義一個MyViewFlipper來監聽滑動事件,並做切換視圖的處理。

你可以讓MyViewFlipper實現OnTouchListener介面,然後實現onTouch方法,然後根據MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP的坐標判斷是不是滑動事件,就像ImageSwitcher中講解的那樣(htt p://bl og.csd n.n et/tianjf0514/article/details/7556487)

除了自己判斷是不是滑動事件,那麼Android有沒有直接提供哪個方法作為滑動事件的回調函數呢?答案是:提供了。OnGestureListener中的onFling方法就是滑動事件的回調函數。這時候你也許會毫不猶豫的讓MyViewFlipper實現OnGestureListener介面,並復寫onFling方法。這樣做當然可以,不過實現OnGestureListener介面不僅僅要復寫onFling方法,還要復寫其他的方法(onDown()、onShowPress()、onSingleTapUp()、onScroll()、onLongPress()),但是這些回調函數我們不需要,這就造成了垃圾代碼。

為了避免垃圾代碼,Android提供了一個類SimpleOnGestureListener已經實現了OnGestureListener介面和OnDoubleTapListener介面,並復寫了所有方法。那麼我們只要新建一個自己的MyGestureListener.java來繼承SimpleOnGestureListener,並有選擇性的復寫需要的方法(我們在此只復寫onFling方法)。

這時,我們就自定義了一個手勢類,並且這個手勢類會監聽滑動事件來做一些處理。但是我們怎麼利用這個手勢類呢?怎麼利用到MyViewFlipper類中去呢?

關於onFling方法,有一點要注意:不是每個View都能有onFling回調函數,一開始,我的flipper_view.xml布局文件最外層是一個LinearLayout,死活都走不到onFling方法,後來在外層又套了一個ScrollView,就能正常走到OnFling方法裡面了。

可以看到flingToNext方法和flingToPrevious方法裡面會判斷childCnt,如果為2,就removeViewAt(1);,然後再addView(mOnViewFlipperListener.getNextView(), 0);。這就要回顧一下ImageSwitcher的原理,ViewFlipper的原理和ImageSwitcher一樣,有且僅有2個子View,滑動時候就在這兩個子View上來回切換。index為0的就是當前看到的,index為1的就是看不見的。上面代碼的意思就是:當滑動時,必然要新添加一個View,那麼子View的個數有可能大於2,隨意要先判斷一下如果childCnt == 2,那麼就把index == 1的那個View(即看不見的View)給Remove調,然後把新添加的View添加到index == 0處。這樣可以減少內存消耗。

② android 便簽中插入圖片是怎麼實現的

安卓手機要想實現在便簽中插入圖片,可選擇使用敬業簽,敬業簽支持插入圖片,在新建便簽內容時,支持一次性插入10張圖片。

③ android中怎麼使用glide載入動態圖

由於前段時間項目需要,需要在一個頁面上載入根據不同的按鈕載入不同的布局頁面,當時想到用 tabhot 。不過美工提供的界面圖完全用不上tabhot ,所以想到了動態載入的方法來解決這一需求。在這里我整理了一下,寫了一個 DEMO 希望大家以後少走點...

④ android 存在資料庫中的動態圖片,如何讀取出來,顯示在ImageView中

實現的功能為從伺服器獲取圖片數據,在布局頁面上顯示。由於圖片的個數是不確定的,因此採用在布局頁面中定義多個ImageView來顯示圖片是不合理的。
(一)首先定義布局

android:id="@+id/id_layout_movie"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
(二)載入圖片顯示時獲取到布局文件
RelativeLayout rl_Movie = (RelativeLayout) findViewById(R.id.id_layout_movie);
(三)依次循環伺服器獲取的圖片數據,一張一張設置圖片顯示的位置
//newWidth為圖片顯示的寬度,newHeight為圖片顯示的高度
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams( newWidth, newHeight);
設置lp1.leftMargin和lp1.topMargin的值
(四)最後設置rl_Movie.addView(iv, lp1)將圖片加入布局文件中

⑤ android listView動態載入本地圖片(拍照後載入上去)

調用android自身的相機,在onActivityResult回調函數里寫載入圖片方法

⑥ android中怎麼實現動態設置背景圖片的功能,我在網上搜到的只能設置到當前的頁面,並不能實現設置到全部

當關閉重新運行,它又會自動跳回原始的背景圖片。

在開發過程中,由於使用模擬器測試了程序,在首次運行後會將res文件夾下的圖片資源文件(如drawable-hdpi、drawable-ldpi和drawable-mdpi)拷貝到bin文件夾下。在替換資源圖片後,eclipse並不清楚是否有圖片改變,所以會使用原來bin下的res文件夾中的資源文件進行打包,而圖片用的還是第一次eclipse所拷貝進去的文件,所以當運行程序後會發現替換資源圖片在程序中沒起作用。

解決辦法:每次運行前,清理項目


動態設置背景圖片代碼

privateinti=0;//全局變數定義,初始化

//list數組接收到從文件中讀取到的數據

List<String>list=readTxt.getDierguanResource();

//changeBack這個函數用來動態設置背景圖片

publicvoidchangeBack(intbackground){

main=(LinearLayout)findViewById(R.id.shizi);

Stringa=list.get(background);

//獲取到的背景圖片名as(圖片存到res/drawable文件下)

Stringas=a.split("")[1];

//動態獲取圖片getResources().getIdentifier(as,"drawable",getPackageName())

intresID=getResources().getIdentifier(as,"drawable",getPackageName());

//設置頁面背景setBackgroundResource()

main.setBackgroundResource(resID);

}

if(i>=0&&i<list.size()){


changeBack(i);

}

⑦ androidviewpager動態載入數據怎麼做

ViewmView=getLayoutInflater().inflate(R.layout.view,null);mVIewPager.setAdapter(adapter);適配器把兩個View裝進去,然後通過每個子View的findViewById方法找到子View的子控制項TextViewmTextView=mView1.findViewById(R.id.textView);mTextView.setText(".");

⑧ Android怎麼在listview中的item動態添加控制項。比如我不清楚究竟有幾張圖片需要解析數據後才知道

自定義adapter, getView裡面動態載入布局,先得確認你的圖片是怎麼擺放的,如,LinearLayout,
每個item裡面有個空的LinearLayout,
在getview, 每次獲取到viewholder後,viewholder.linearlayout.removeAllViews();
之後根據,解析過來的數據,往linearlayout.addview 就可以了

⑨ android 如何在imageView中顯示Bitmap動態圖片,

bitmap格式本身就不是動態的。
如果要顯示動態的bitmap的話可以使用定時器,定時改變imageview顯示的圖片。

imageview 設置圖片的時,只能使用bitmap以及drewable兩種資源,不能載入gif圖片。

熱點內容
win7用戶名密碼是什麼 發布:2025-01-31 10:57:38 瀏覽:394
網址埠訪問 發布:2025-01-31 10:49:30 瀏覽:512
javaweb代碼 發布:2025-01-31 10:37:54 瀏覽:259
sqlserver合並 發布:2025-01-31 10:22:27 瀏覽:712
大理伺服器地址 發布:2025-01-31 10:10:52 瀏覽:972
流上傳文件 發布:2025-01-31 10:09:27 瀏覽:40
滿贈演算法 發布:2025-01-31 09:54:27 瀏覽:709
濱州視頻拍攝腳本 發布:2025-01-31 09:48:25 瀏覽:418
光遇出現伺服器已滿是什麼回事 發布:2025-01-31 09:35:29 瀏覽:356
AndroidWindows7 發布:2025-01-31 09:32:17 瀏覽:260