精华内容
下载资源
问答
  • 根据webView中维护的页面浏览历史,允许用户向前后浏览页面。 使用后退键进行网页后退: /** * 按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处 理则整个WebView返回退出 */...
    • 页面浏览
      1. 根据webView中维护的页面浏览历史,允许用户向前向后浏览页面。

    使用后退键进行网页后退:

    /**

     * 按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处 理则整个WebView返回退出

     */

        @Override

        public boolean onKeyDown(int keyCode, KeyEvent event)

        {

            // Check if the key event was the Back button and if there's history

            if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack())

            {

                // 返回键退回,返回上一个页面

                myWebView.goBack();

                return true;

            }

            // If it wasn't the Back key or there's no web page history, bubble up

            // to the default

            // system behavior (probably exit the activity)

    // 退出H5界面

            return super.onKeyDown(keyCode, event);

        }

      1.  
      2.  

     

    • 拍照或者从文件选择照片
      1. 申请动态权限

    private static final int ACTION_REQUEST_PERMISSIONS = 0x001;

    /**

         * 所需的所有权限信息

         */

        private static final String[] NEEDED_PERMISSIONS = new String[]{

                Manifest.permission.CAMERA,

                Manifest.permission.WRITE_EXTERNAL_STORAGE,

                Manifest.permission.READ_EXTERNAL_STORAGE

    };

     

    //界面可见的时候申请

    @Override

        public void initView() {

            if (!checkPermissions(NEEDED_PERMISSIONS)) {

                ActivityCompat.requestPermissions(this, NEEDED_PERMISSIONS, ACTION_REQUEST_PERMISSIONS);

            } else {

      //存在权限的操作

                ....

            }

     

        }

     

    /**

     * 检查权限

     *

     * @param neededPermissions

     * @return

     */

     private boolean checkPermissions(String[] neededPermissions) {

        if (neededPermissions == null || neededPermissions.length == 0) {

            return true;

        }

        boolean allGranted = true;

        for (String neededPermission : neededPermissions) {

            allGranted &= ContextCompat.checkSelfPermission(this, neededPermission) == PackageManager.PERMISSION_GRANTED;

        }

        return allGranted;

    }

     

    //申请权限返回

    @Override

        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

            super.onRequestPermissionsResult(requestCode, permissions, grantResults);

            if (requestCode == ACTION_REQUEST_PERMISSIONS) {

                boolean isAllGranted = true;

                for (int grantResult : grantResults) {

                    isAllGranted &= (grantResult == PackageManager.PERMISSION_GRANTED);

                }

                if (isAllGranted) {

                    weakHandler = new WeakHandler(this);

                    weakHandler.sendEmptyMessageDelayed(1, 3000);

                } else {

                    Toast.makeText(this, "权限被拒绝!", Toast.LENGTH_SHORT).show();

                }

            }

        }

      1. android Q对于文件读写引入了新特性,在这个版本中,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE均受到了限制,无法再像之前的版本直接获取到文件。如果希望恢复之前的权限逻辑,可以在manifest文件中设置:

    android:requestLegacyExternalStorage="true"

      1. 常量,Android版本兼容

    //5.0以下使用

    private ValueCallback<Uri> uploadMessage;

    // 5.0及以上使用

    private ValueCallback<Uri[]> uploadMessageAboveL;

    //拍照图片路径

    private String cameraFielPath;

    private final static int FILE_CAMERA_RESULT_CODE = 0x129;

    WebView.setWebChromeClient(new WebChromeClient() {

        // For Android < 3.0

        public void openFileChooser(ValueCallback<Uri> valueCallback) {

             uploadMessage = valueCallback;

             takeCameraPhoto();

        }

     

        // For Android  >= 3.0

        public void openFileChooser(ValueCallback valueCallback, String acceptType) {

             uploadMessage = valueCallback;

             takeCameraPhoto();

        }

     

        //For Android  >= 4.1

        public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {

              uploadMessage = valueCallback;

              takeCameraPhoto();

        }

     

        // For Android >= 5.0

        @Override

        public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {

              uploadMessageAboveL = filePathCallback;

              takeCameraPhoto();

              return true;

         }

    });

     

    //调用拍照或文件中选择

    private void takeCameraPhoto() {

       //拍照图片保存位置

       File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");

       if (!imageStorageDir.exists()) {

            imageStorageDir.mkdirs();

       }

       cameraFielPath = imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg";

       File file = new File(cameraFielPath);

       //需要显示应用的意图列表,这个list的顺序和选择菜单上的图标顺序是相关的,请注意。

       final List<Intent> cameraIntents = new ArrayList<Intent>();

       final Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

       final PackageManager packageManager = getPackageManager();

       //获取手机里所有注册相机接收意图的应用程序,放到意图列表里(无他相机,美颜相机等第三方相机)

       final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);

       for (ResolveInfo res : listCam) {

            final String packageName = res.activityInfo.packageName;

            final Intent i = new Intent(captureIntent);

            i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));

            i.setPackage(packageName);

            i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));

            cameraIntents.add(i);

       }

       //相册选择器

       Intent i = new Intent(Intent.ACTION_GET_CONTENT);

       i.addCategory(Intent.CATEGORY_OPENABLE);

       i.setType("image/*");

       //intent选择器

       Intent chooserIntent = Intent.createChooser(i, "选择模式");

       chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));

       this.startActivityForResult(chooserIntent, FILE_CAMERA_RESULT_CODE);

      }

     

    //返回数据监听

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

       super.onActivityResult(requestCode, resultCode, data);

        //没有返回值时的处理

        if (resultCode != RESULT_OK) {

                //需要回调onReceiveValue方法防止下次无法响应js方法

                if (uploadMessageAboveL != null) {

                    uploadMessageAboveL.onReceiveValue(null);

                    uploadMessageAboveL = null;

                }

                if (uploadMessage != null) {

                    uploadMessage.onReceiveValue(null);

                    uploadMessage = null;

                }

                return;

            }

     

            Uri result = null;

            if (requestCode == FILE_CAMERA_RESULT_CODE) {

                if (null != data && null != data.getData()) {

                    result = data.getData();

                }

                if (result == null) {

                    result = Uri.fromFile(new File(cameraFielPath));

                }

                //5.0以上设备的数据处理

                if (uploadMessageAboveL != null) {

                    uploadMessageAboveL.onReceiveValue(new Uri[]{result});

                    uploadMessageAboveL = null;

                } else if (uploadMessage != null) {

                    //5.0以下设备的数据处理

                    uploadMessage.onReceiveValue(result);

                    uploadMessage = null;

                }

            }

        }

     

    • 避免内存泄漏,安全
      1. 建议不要在xml布局文件中getApplicationgContext()定义Webview控件 ,而是在需要的时候在Activity中直接创建,并且Context上下文对象推荐使用

    LinearLayout.LayoutParams params =

    new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

    webView = new WebView(getApplicationContext());

    webView.setLayoutParams(params);

    mLayout.addView(webView);

      1. 在Activity销毁(WebView)时,先让WebView加载null内容,然后移除WebView,再销毁WebView,最后把WebView设置为null。

    @Override

    protected void onDestroy() {

        if (webView != null) {

            webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);

            webView.clearHistory();

     ((ViewGroup) webView.getParent()).removeView(mWebView);

            webView.destroy();

            webView = null;

        }

        super.onDestroy();

    }

    展开全文
  • 代码提示:将下面的代码复制到〈BODY〉与〈/BODY〉中. 可以将代码直接复制到需要的位置以定位图片的位置。...--将SRC后的图片改为你的后的图片名--> <ahref=""onClick="parent.history.back();return...
    代码提示:将下面的代码复制到〈BODY〉与〈/BODY〉中. 可以将代码直接复制到需要的位置以定位图片的位置。
      方法是:在视图编缉状态下将鼠标移到所需位置 点击,然后切换到HTML编缉状态,将代码粘贴到光标所在位置。
    <!-- 将SRC后的图片改为你的向后的图片名-->
    <href ="" onClick="parent.history.back(); return false;" onMouseOver="self.status='后退' ;return true;"><img src="../image/193.gif" border=0 ></a> 
    <!-- 将SRC后的图片改为你的向前的图片名-->                  
    <href ="" onClick="parent.history.forward(); return false;" onMouseOver="self.status='前进'; return true;"><img src="../image/194.gif" border=0 ></a> 

    转载于:https://www.cnblogs.com/cnyyl/archive/2007/09/10/888041.html

    展开全文
  • 作为微软重头开发的项目之一,Photosynth能够将大量的相关图片结合成一张巨幅全景图片,合成完后,用户可以像本人在现场一般,可以右、前进后退的360度还原最真实的现场效果。对于这一技术,微软不仅充满希望...

    先从微软Photosynth的历史了解起……

    微软早在06年就公布了新一代图片+3D空间技术——Photosynth,作为微软重头开发的项目之一,Photosynth能够将大量的相关图片结合成一张巨幅全景图片,合成完后,用户可以像本人在现场一般,可以向左向右、前进后退的360度还原最真实的现场效果。对于这一技术,微软不仅充满希望甚至还认为其够掀起一场3D图片浏览的革命。
    经过一年多的准备,Photosynth在07年首次投入商用,到08年微软Live实验室推出了Photosynth的应用程序,同时photosynth.com网址也正式上线,向用户提供Photosynth的应用和制作好的全景作品上传。而在09年底,微软又做出了一项重要的决定,将photosynth整合到Bing地图中,鼓励用户在bing地图上发布其拍摄的photosynth全景照片。微软的这一决定在当时被认为是把谷歌所做的事向前推进了一步。
    真正玩过photosynth的朋友都知道,photosynth确实很酷,photosynth网站上提供了大量网友的作品,比如一张埃菲尔铁塔的全景图片,通过点击向左或向右按键进行浏览,那感觉就像真的从埃菲尔铁塔下走过一样,你甚至还能进行仰视,震撼的感觉油然而生。当然,图片若是仔细看还是有些不顺畅,一些细小的人物和景物会衔接不上,但总的来说已经很神奇了!
    但不得不说的是,虽然photosynth技术很不错,但由于bing地图始终不温不热,再加上微软的策略和推广问题,photosynth的用户数表现并不理想!或许微软正在为photosynth、bing地图寻找新的推广途径,直到今日我们在App Store中发现了photosynth的身影!

    微软早在06年就公布了新一代图片+3D空间技术——Photosynth,作为微软重头开发的项目之一,Photosynth能够将大量的相关图片结合成一张巨幅全景图片,合成完后用户可以像本人在现场一般,可以向左向右、前进后退的360度还原最真实的现场效果。对于这一技术,微软不仅充满希望甚至还认为其够掀起一场3D图片浏览的革命。

    经过一年多的准备,Photosynth在07年首次投入商用,到08年微软Live实验室推出了Photosynth的应用程序,同时photosynth.com网址也正式上线,向用户提供Photosynth的应用和制作好的全景作品上传。而在09年底,微软又做出了一项重要的决定,将photosynth整合到Bing地图中,鼓励用户在Bing地图上发布其拍摄的photosynth全景照片。微软的这一决定在当时被认为是把谷歌所做的事向前推进了一步。

    photosynth拼接出的全景图(缩放之后效果)

    真正玩过photosynth的朋友都知道,photosynth确实很酷,photosynth网站上提供了大量网友的作品,比如一张埃菲尔铁塔的全景图片,通过点击向左或向右按键进行浏览,那感觉就像真的从埃菲尔铁塔下走过一样,你甚至还能进行仰视,震撼的感觉油然而生。当然,图片若是仔细看还是有些不顺畅,一些细小的人物和景物会衔接不上,但总的来说已经很神奇了!

    上张图片向左移动后的效果

    但不得不说的是,虽然photosynth技术很不错,但由于bing地图始终不温不热,再加上微软的策略和推广问题,photosynth的用户数表现并不理想!或许微软正在为photosynth、bing地图寻找新的推广途径,直到今日我们在App Store中发现了photosynth的身影!

    说到了App Store,就终于进入了今天的正题了!笔者前面介绍了很多photosynth不仅是考虑到很多人还不了解photosynth是什么,同时也是考虑到这款应用对于微软的策略及意义。当笔者在App Store中发现这款全景应用的时候确实比较惊喜,因为这并不是一个简单的拍摄全景的小工具,而是一个窗口,通往3D全景世界的小窗口。不得不感叹微软的动作真的是比较缓慢,就像WP7的推出一样!但不管怎么样,photosynth在iPhone上的出现还是非常令人期待的,那微软是否能让用户通过这一款小客户端去感知背后3D全景的微妙呢?下面我们就一起去了解下吧!

    微软photosynth全方位体验

    点击下载iOS版photosynth全景拍摄应用

    当初次体验photosynth的时候,我们最大的感觉就是太像WP7的界面了,无论是整体的界面风格还是白、蓝的字体,大有从iOS平台上宣传Windows Phone 7界面的意味。不过这不是photosynth应用的最大特点,photosynth最大特点是能够将iPhone拍摄出的图组拼接成全景图,这里将的拼接可不是简单的两张、三张图的拼接,我们甚至可以完成众多图组360度的拼接。

    photosynth界面

    photosynth界面下方的三枚按键分别为图片、拍摄和设置按键,首次拍摄全景图软件会做出一些提示,由于软件都是英文提示,我们还是有必要做一些提示,实际上软件还是相当容易操作的。将摄像头对好物体后我们随意点击屏幕便可开始拍照了,拍好第一张图片之后,这张图会在左面显示出来,我们可以将其作为参考然后向左或者向右移动手机,保持两张图片有一定的重合,停顿时软件会依靠图像跟踪技术自动进行第二张的拍摄,以此类推。

    photosynth

    点击屏幕开始拍摄,绿色框内为拍摄框

    操作几次后我们便能熟悉使用photosynth了,photosynth同时支持手机的竖向和横向、上下的拍摄。有时我们会因为移动的距离太大,以至于让两张图片无法拼接到一起,那么软件会用不同颜色的拍摄框做出提示。绿色的拍摄框表示软件可以自行拍摄,也就是状态正确;黄色的框表示“手动拍摄”,这是因为软件觉得你现在捕捉的镜头与上一张图衔接不上,如果位置确实准确无误的话,那你手动点击一下屏幕就可以完成拍摄了;红色的对话框出现则表示无法拍摄,你需要在变换一下位置试试。

    photosynth

    保证景物有一定的重合,然后缓慢像左右、上下移动

    photosynth

    黄色框表示需要手动点击拍摄,红色框表示无法完成拍摄

    拍摄完图片后,软件会自动对这组图片进行整合,然后我们可以随意在手机上观看整合后的全景效果。在经过两天的试用后,笔者发现photosynth确实特别强大,特别是在拍摄景物时。比如笔者在中关村某地点进行拍摄,转了360度拍摄10几张照片后看到的是photosynth的组合堪称完美,甚至惊叹!在手机上看图片的效果还不是十分明显,在PC的photosynth网站上这种3D感会非常强。另外笔者还对办公室等小环境等做了张数不同的全景测试,发现photosynth对小范围环境的捕捉和拼接也非常不错,只不过周围要是有例如线条类壁纸出现的话,在细节上会有一些“错位”。

    photosynth

    photosynth开始对拍摄的图片进行拼接,速度很快

    电脑上面看到的全景图显示为一整张

    photosynth的分享与微软的真正目的

    对于拍摄好的照片我们可以在photosynth提供的相册和手机相册中进行观看,滑动手指随心所欲。另外,我们还可以通过三种方式将全景图片与其他人分享。photosynth设置了3种分享功能:Facebook、Photosynth.net和Bing地图。当看到这里时,估计就已经有很多朋友发现了微软的小算盘了!Facebook自然与我们无缘,但却是微软的重要合作伙伴;国内用户倒可以用Windows Live ID注册Photosynth.net网站,然后将照片上传,再通过该网站提供的工具更好地欣赏自己的作品(PC上观看只能看到一个长串的平面图,无法达到环绕式立体感),同时你也会有兴趣去欣赏全世界用户和玩家上传的全景照片,然后你才会发现Photosynth的奥妙。(在这里笔者奉送上在中关村拍摄的全景照片链接,大家可以前往围观【点击这里】)

    三种分享方式,都要与Windows Live进行结合

    上传照片之后通过Photosynth.net网站观看的效果

    或者你也可以将你喜欢的地点制成非常酷的全景图发布到Bing地图上,这也是微软的意图所在。实际上我们每次拍摄全景照片时,GPS功能也会启动记录下位置,当我们选择将图片发送到Bing地图上后,我们只要给图片起个名字,增加个缩微图就能够直接发布了,图片发布后其他用户能够在Bing地图上看到这张图,也能够搜索到!但在发布到地图之前也要用Windows Live ID注册,然后照片同时也会上传到Photosynth.net网站。

    可以将照片发布到Bing地图上,发布前可以进行图片的编辑

    总结:做应用的角度来看,photosynth却是提供了非常不错的全景拼接功能,这种全景范围更广,甚至达到360度,观看者能够获得与拍摄者一致的现场感,而不是其他小应用简单将两张图片拼接在一起,非常值得大家体验!

    而从微软的角度来看,Photosynth.net和加入Photosynth的Bing地图分在08年和09年就已推出,但限于推广的原因,以及PC端Photosynth用起来十分麻烦(用户要用数码相机拍摄大量的照片,然后在用Photosynth客户端进行整合,在上传到网站或Bing地图),因此这两个项目几年过去均未体现明显效果。或许微软一直在寻找更好的推广方式。

    用数码相机拍出照片拼接全景图的过程

    和数码相机相比,智能手机无疑更具优势,用户随身携带、随手拍摄、随时上传,一旦发现Photosynth的乐趣,在这个移动社交网络盛行的时代主动性自然会更高。而至于微软为何要在苹果iOS上首先推出Photosynth而不是在WP7,其实也很容易猜测到,微软清楚目前各大操作系统的用户数,了解iOS用户更爱拍照更乐于介绍新鲜事物,因此重视iOS似乎确实是正确的选择……

    不管怎样,Photosynth确实是个非常不错的应用,推荐iOS用户下载体验!

    展开全文
  • android引导页面

    2015-10-16 17:04:55
    效果图:引导页中的点一般不要留在图片中,要不屏幕适配不好做,这...4、滑动到最后的时候sp中保存 5、对于在引导页面中后退键的处理,结束引导页面,跳转到主界面 目录结构:1、WelcomActivity中代码:package com

    效果图:引导页中的点一般不要留在图片中,要不屏幕适配不好做,这个点可以自己画,也可以是单独的图片。

    这里写图片描述


    1、判断sp中的值,是否是第一次进入
    2、对viewpager进行监听
    3、当滑动到当前页面的时候,动态设置小圆点的显示图片
    4、滑动到最后的时候向sp中保存
    5、对于在引导页面中后退键的处理,结束引导页面,跳转到主界面
    目录结构:

    这里写图片描述

    1、WelcomActivity中代码:

    package com.example.viewpagerdemo;
    
    import utils.Constant;
    import utils.SPUtils;
    import android.annotation.SuppressLint;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.ActionBarActivity;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    
    public class WelcomeActivity extends ActionBarActivity implements View.OnClickListener{public WelcomeActivity() {
        // TODO Auto-generated constructor stub
    }
        private static final String TAG = "WelcomeActivity";
        private SectionsPagerAdapter mSectionsPagerAdapter;
        private ViewPager mViewPager;
        //移动到当前三个点时的显示图标;
        private ImageView mPosition1, mPosition2, mPosition3;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_welcome);
    
            getSupportActionBar().hide();
            mSectionsPagerAdapter = new SectionsPagerAdapter(
                    getSupportFragmentManager(), this);
            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setAdapter(mSectionsPagerAdapter);
            initViewPagerListener();
            mPosition1 = (ImageView) findViewById(R.id.welcome1);
            mPosition2 = (ImageView) findViewById(R.id.welcome2);
            mPosition3 = (ImageView) findViewById(R.id.welcome3);
    
        }
        private void initViewPagerListener() {
    
            mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    setCurrentPagePosition(position+1);
                }
            });
        }
        //后退键的处理;
        @Override
        public void onBackPressed() {
            super.onBackPressed();
            closeActivity();
        }
        //后退键的处理,点击返回则结束引导页面,直接进入主页面;
        @Override
        public void onClick(View v) {   
            closeActivity();
        }
        //向sp中保存数据;
        private void closeActivity() {
            SPUtils.put(this, Constant.IS_FIRST, false);
            finish();
        }
        //根据显示的不同位置的图片时,显示不同的点;
        public void setCurrentPagePosition(int position) {
            Log.d(TAG, "position : " + position);
            mPosition1.setImageResource(R.drawable.welcome_pass);
            mPosition2.setImageResource(R.drawable.welcome_pass);
            mPosition3.setImageResource(R.drawable.welcome_pass);
            switch(position) {
            case 1:
                mPosition1.setImageResource(R.drawable.welcome_current);
                break;
            case 2:
                mPosition2.setImageResource(R.drawable.welcome_current);
                break;
            case 3:
                mPosition3.setImageResource(R.drawable.welcome_current);
                break;
            }
        }
        public class SectionsPagerAdapter extends FragmentPagerAdapter {
    
            private View.OnClickListener mListener;
    
            public SectionsPagerAdapter(FragmentManager fm, View.OnClickListener listener) {
                super(fm);
                mListener = listener;
            }
    
            @Override
            public Fragment getItem(int position) {
                // getItem is called to instantiate the fragment for the given page.
                // Return a PlaceholderFragment (defined as a static inner class
                // below).
                return PlaceholderFragment.newInstance(position + 1, mListener);
            }
    
            @Override
            public int getCount() {
                // Show 3 total pages.
                return 3;
            }
    
        }
    
        /**
         * A placeholder fragment containing a simple view.
         */
        @SuppressLint("ValidFragment")
        public static class PlaceholderFragment extends Fragment {
            /**
             * The fragment argument representing the section number for this
             * fragment.
             */
            private static final String ARG_SECTION_NUMBER = "section_number";
    
            private int mSelection = 0;
    
            private OnClickListener mListener;
    
            /**
             * Returns a new instance of this fragment for the given section number.
             * @param listener 
             * @param mPositionListener 
             */
            public static PlaceholderFragment newInstance(int sectionNumber, OnClickListener listener) {
    
                PlaceholderFragment fragment = new PlaceholderFragment(sectionNumber, listener);
                Bundle args = new Bundle();
                args.putInt(ARG_SECTION_NUMBER, sectionNumber);
                fragment.setArguments(args);
                return fragment;
            }
    
            @SuppressLint("ValidFragment")
            public PlaceholderFragment(int sectionNumber, OnClickListener listener) {
                mSelection = sectionNumber;
                mListener = listener;
            }
    
            public PlaceholderFragment() {}
    
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                Log.d(TAG, "mSelection " + mSelection);
                View rootView = inflater.inflate(R.layout.fragment_welcome,
                        container, false);
                ImageView imageView = (ImageView) rootView
                        .findViewById(R.id.section_label);
    
                ImageView start = (ImageView) rootView.findViewById(R.id.welcome_start);
                start.setOnClickListener(mListener);
                switch(mSelection) {
                case 1:
                    imageView.setBackgroundResource(R.drawable.welcome_1);
                    break;
                case 2:
                    imageView.setBackgroundResource(R.drawable.welcome_2);
                    break;
                case 3:
                    imageView.setBackgroundResource(R.drawable.welcome_3);
                    start.setVisibility(View.VISIBLE);
                    break;
                }
    
                return rootView;
            }
        }
    
    }
    

    2、MainActivity中代码:

    public class MainActivity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //如果是每一次的话则进入欢迎页面;
            if(SPUtils.getIsFisrst(this)==true){
                startActivity(new Intent(this,WelcomeActivity.class));
            }
        }
    }

    Demo下载地址:http://download.csdn.net/detail/androidxiaogang/9187197

    展开全文
  • 前端旋转木马效果

    千次阅读 2018-06-15 15:24:48
    主要逻辑:静态界面:中部是图片,左右分别是前进和后退按钮,下面是不同的页码。 功能分析:不操作时,界面会自动某个防线滚动;点击左右上下按钮会切换,直接点击下面的页码会直接跳到对应界面中。 技术难点:...
  • 为自制插入的flash,鼠标移至各项内容,相应内容右移动并放大,单击伴随“嘟”的响声,弹出相应链接子网页,单击后退,返回主页。 4.精品推荐栏: 位于主页右下角,主要展示精品设计图,单击连接到相应的大图。 ...
  • pr使用技巧

    2020-12-22 21:54:22
    pr使用技巧1.源面板常用功能2.... ————后退(右前进)一帧 space ————播放暂停键 , ————插入素材 Ctrl Shift E ————导出当前帧的图片 ctrl K ————快速裁剪 2.轨道
  • 实训-利用HTML和CSS制作一个网页界面

    千次阅读 多人点赞 2020-09-29 18:48:24
    项目介绍 ... 这个网页相对来说还是比较有练习意义的,包含导航栏,轮播图,大量的浮动和弹性布局以及一些细小却...一个轮播图,有图片计数器和前进后退控制器。接下来有四个大部分,四部分均有一个标题及说明,再接具体
  • 简单使用“W”“S”“A”“D”按键来控制物体“前进”“后退”“左转”“右转”。因为之前这个练习的项目文件已经不见了,暂时提供不了图片,需要的话后期补上。----------------------概念:使用脚本获取组件...
  • 可以做到前进,后退,左移,右移,左转,右转,上仰,下俯. 这个室内漫游程序的贴图效果不是很好,主要是因为图片没有很好的设计,我也懒得去弄.不过所有该有的功能总算是有了. 试着按方向键,你会看到三维场景的变化.其中...
  • 数据链路层-- 第二篇

    2020-12-30 20:24:02
    1、后退N帧协议(GBN): 接收方给发送方 发送一个窗口公告,只有等这个窗口内的数据全部发送等到确认,才能后移动一个窗口的数据 GBN中发送方必须响应的三件事 1、上层的调用 上层需要发送数据的时候,发送方先...
  • 前进后退按钮 按钮定制打开窗口 按钮打开全屏窗口 自由打开各种窗口 按钮回到默认首页 各种用途的按钮 频道方式打开窗口 按钮特殊效果 浏览器全屏显示 死机程序 跳出说明窗口 关不掉的跳出框 循环的...
  • 在线flash播放器

    2013-06-10 13:17:13
    9、增强了滚动文字广告的功能,新的滚动文字广告在原来的基础上增加了可以选择左/右滚动,向上/下滚动 10、强化了视频地址调用方式中的xml调用方式,经过强化过的xml方式,可以只列出多段视频地址,播放器...
  • 2020-7-26 更新支持 Android iOS 平台向前或者是后退浏览历史功能 请查看本文章第四小节 2020-8-12 修复在iphone8早JS调用Flutter失效问题版本1.1.1 本篇文章讲述的内容可以用来加载 Html 页面,以实现 ...
  • 例如图片,单位 ms</li></ul> </li></ul> <p>MIP SF 发送一些统计数据,观察 MIP 页面的性能。在页面加载完成,以上 4 个值都收集完毕后发送。 <h3>mipscroll <ul><li>类型:MIP1 已有...
  •  ↑ 查看(V) \ 滚屏 \ 向上翻屏 ↓ 查看(V) \ 滚屏 \ 下翻屏 ← 工具(T) \ 更多工具(M) \ 后退,不可退时关网页 → 查看(V) \ 转到(O) \ 前进(F) ↑↓ 查看(V) \ 刷新(R)↑← 查看(V)...
  • 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错原因 1.9 当前网页调用其他网页 1.10 倒计时载入页面 1.11 定义网页的关键字 ...
  • ajax实战配套源代码

    2008-10-24 11:17:58
    当浏览图片时,自动服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 源码结构说明 1.AlbumShow文件夹下为源文件 2.AlbumShow.war...
  • 当浏览图片时,自动服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 源码结构说明 1.AlbumShow文件夹下为源文件 2.AlbumShow.war...
  • 当浏览图片时,自动服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 源码结构说明 1.AlbumShow文件夹下为源文件 2.AlbumShow.war...
  • 当浏览图片时,自动服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 源码结构说明 1.AlbumShow文件夹下为源文件 2....
  • 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错原因 1.9 当前网页调用其他网页 1.10 倒计时载入页面 1.11 定义网页的关键字 ...
  • AJAX 源码范例

    2007-07-04 09:52:35
    当浏览图片时,自动服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 源码结构说明 1.AlbumShow文件夹下为源文件 2....
  • 征服Ajax

    2007-06-08 18:54:48
    当浏览图片时,自动服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 源码结构说明 1.AlbumShow文件夹下为源文件 2....
  • 阅读工具 开卷有益

    2012-03-31 14:07:03
    增加:类IE的阅读页面导航,采用左右滑动手势进行前进后退(能自动跟踪CHM的每个链接跳转) 5. 增加:全方向(4个方向)旋转功能,阅读界面与设置界面均能旋转,M8支持全方向自动重力旋屏 6. 增加:快捷设置中加入...
  • 网际畅游 MyIE 3.0 源代码

    热门讨论 2004-10-11 09:11:06
    左: 后退 右: 前进 先上再下: 刷新 右左右 或 先下再右: 关闭窗口 窗口管理: 激活新窗口:当你选择了激活新窗口, 每当新建一个窗口它就会成为当前的活动窗口。 否则新窗口将不会被激活。 当你在浏览...
  • dreamweaver的各种组件

    2008-06-26 16:55:56
    History Go 2.0 这个Behavior的作用是在网页中增加一个“History Go”的javascri pt,从而可以实现类似于浏览器中的“前进”和“后退”按钮的功能。 Print 3.0 在网页中加入一个打印目标页面的功能,能够呼出打印...
  • 工程硕士学位论文 ...研究生姓名: 唐帅 导师姓名: 罗军舟 教授 苏生 教授 申请学位类别 工 程 硕 士 学位授予单位 东 南 大 学 工程领域名称 软 件 工 程 论文答辩日期 ...学位授予日期 答辩委员会主席 评阅人 ...
  • 思路是右移动的时候clone最后一个到第一个位置,重新获取li,设置li[0]marginLeft为负,慢慢右移动,图片也慢慢改变样式...移动完毕后删除clone的节点,重新绑定节点事件 左移同理 1.报错没有,问题是调用...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

向后退图片