آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

لایو والپیپر

amirhododi  11 سال پیش  11 سال پیش
0 0

با سلام

من کد لایو والپیپر رو نوشتم ولی رو اندروید 4.4.2 به بالا 2 ثانیه بعد قطع میشه

ممنون

اینم لینک

http://stackoverflow.com/questions/27796518/android-live-wallpaper-is-loading-for-one-second-on-kitkat-4-4-4-but-working-fin

publicclassWallpaperServiceClassextendsWallpaperService{staticfinalHandler mHandler =newHandler();privateint position;privateCanvas canvas =null;publicSharedPreferences mPreferences;privateInputStreamis=null;@Overridepublicvoid onCreate(){
    stopService(newIntent(WallpaperServiceClass.this,WallpaperServiceClass.class));
    mPreferences = getSharedPreferences("wallpapersettings", MODE_PRIVATE);new mEngine();super.onCreate();}@OverridepublicEngine onCreateEngine(){returnnew mEngine();}class mEngine extendsEngine{privateMovie mMovie;privateint mMovieDuration;privateRunnable mMovieRun;float mScaleX;float mScaleY;int mWhen;long mStart;

    mEngine(){try{
            loadGif(Integer.valueOf(mPreferences.getString("flakes","0")));}catch(Exception e){
            e.printStackTrace();}}privatevoid loadGif(int position){try{if(position ==0){is= getResources().openRawResource(R.raw.a);}elseif(position ==1){is= getResources().openRawResource(R.raw.b);}elseif(position ==2){is= getResources().openRawResource(R.raw.c);}elseif(position ==3){is= getResources().openRawResource(R.raw.d);}elseif(position ==4){is= getResources().openRawResource(R.raw.e);}if(is!=null){
                mMovie =Movie.decodeStream(is);
                mMovieDuration = mMovie.duration();is.close();}}catch(Exception e){
            e.printStackTrace();}
        mWhen =-1;
        mMovieRun =newRunnable(){publicvoid run(){
                nyan();}};}@Overridepublicvoid onDestroy(){super.onDestroy();
        mHandler.removeCallbacks(mMovieRun);
        android.os.Process.killProcess(android.os.Process.myPid());}@Overridepublicvoid onVisibilityChanged(boolean visible){super.onVisibilityChanged(visible);if(visible){
            nyan();}else{
            mHandler.removeCallbacks(mMovieRun);}}@Overridepublicvoid onSurfaceChanged(SurfaceHolder holder,int format,int width,int height){super.onSurfaceChanged(holder, format, width, height);
        mScaleX = width /(1f* mMovie.width());
        mScaleY = height /(1f* mMovie.height());
        nyan();}@Overridepublicvoid onOffsetsChanged(float xOffset,float yOffset,float xOffsetStep,float yOffsetStep,int xPixelOffset,int yPixelOffset){super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep,
                xPixelOffset, yPixelOffset);
        nyan();}void nyan(){
        tick();SurfaceHolder surfaceHolder = getSurfaceHolder();try{
            canvas = surfaceHolder.lockCanvas();if(canvas !=null){
                nyanNyan(canvas);}}finally{if(canvas !=null){
                surfaceHolder.unlockCanvasAndPost(canvas);}}
        mHandler.removeCallbacks(mMovieRun);if(isVisible()){
            mHandler.postDelayed(mMovieRun,1000L/25L);}if(position !=Integer.valueOf(mPreferences.getString("flakes","0"))){
            position =Integer.valueOf(mPreferences
                    .getString("flakes","0"));

            loadGif(position);}}void tick(){if(mWhen ==-1L){
            mWhen =0;
            mStart =SystemClock.uptimeMillis();}else{long mDiff =SystemClock.uptimeMillis()- mStart;if(mMovieDuration !=0)
                mWhen =(int)(mDiff % mMovieDuration);}}void nyanNyan(Canvas canvas){
        canvas.save();
        canvas.scale(mScaleX, mScaleY);
        mMovie.setTime(mWhen);
        mMovie.draw(canvas,0,0);

        canvas.restore();}}

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .