当前位置:  编程技术>移动开发
本页文章导读:
    ▪proguard 搅混顺序 先混淆jar包 再混淆源码        proguard 混淆顺序 先混淆jar包 再混淆源码 proguard   混淆顺序 : 先混淆jar包 再混淆源码 所以,不能容jar包中引用src文件,jar包只能被src引用 ......
    ▪ 【收拾】通过ViewPager实现Launcher中的屏幕切换效果        【整理】通过ViewPager实现Launcher中的屏幕切换效果 整理自:http://www.cnmsdn.com/html/201109/1316004424ID10075.html             http://my.oschina.net/kzhou/blog/29157   Launcher的屏幕切换效果是Android操作系统.........
    ▪ 开发总是被阻碍在一些很莫名其妙的有关问题下       开发总是被阻碍在一些很莫名其妙的问题上 这大概是因为规则都是人构建的吧,总有不顺利的地方。 这两天搭android环境,以前都没问题的环境,就是死活找不到android target。 结果用sdk man.........

[1]proguard 搅混顺序 先混淆jar包 再混淆源码
    来源: 互联网  发布时间: 2014-02-18
proguard 混淆顺序 先混淆jar包 再混淆源码

proguard   混淆顺序 : 先混淆jar包 再混淆源码

所以,不能容jar包中引用src文件,jar包只能被src引用


    
[2] 【收拾】通过ViewPager实现Launcher中的屏幕切换效果
    来源: 互联网  发布时间: 2014-02-18
【整理】通过ViewPager实现Launcher中的屏幕切换效果

整理自:http://www.cnmsdn.com/html/201109/1316004424ID10075.html

            http://my.oschina.net/kzhou/blog/29157

 

Launcher的屏幕切换效果是Android操作系统的特色之一,具有很好的用户体验。

以前,实现这种效果需要参考Launcher的源代码来实现,既费时也费力。

在2011年3月份的时候,Android发布了一个被称为“compatibility package”的兼容开发包。该兼容开发包主要包含了Android最新平台上的最酷的特性,这样的话,当你在为旧版本的Android设备开发程序的时候,就可以使用这个兼容开发包来使用最新的Android特性,而不用自己重新开发,从而减轻了开发者的开发任务。通过其中的ViewPager类实现Launcher的屏幕切换效果就显得得心应手了。

 

首先,需要下载该兼容开发包。

通过”Android SDK and AVD Manager”可以下载,具体操作过程:
  • 启动 SDK and AVD Manager.如果你使用的是Eclipse,可以通过菜单 Window > Android SDK and AVD Manager;  如果你使用的是Windows操作系统,可以通过sdk目录中的 “SDK Manager.exe"来启动; 如果你使用的是linux系统 可以通过<sdk>/tools 目录中的android脚本来启动.
  • 选择左边的”Available packages”,然后展开右边的” Android Repository”, 然后选择最下面的”Android Compatibility package ” 然后点击右下方的” Install selected”按钮.
  • 等待安装完成后的提示信息.
  • 使用下载工具(例如 迅雷)自己下载安装:
          由于一些众所周知的原因,Google的服务在国*内时不时的不能正常使用, 在下载Andorid开发工具的时候也是如此, 有时候下载了80%了 结果提示下载失败! 如果您经常遇到这种情况或者下载速度很慢, 可以通过其他方式下载.
         最新版本的兼容开发包的下载地址是: https://dl-ssl.google.com/android/repository/compatibility_r03.zip 大小是541696字节, 效验码(sha1)是”49e32c0aca8e52c2e9a398912a68c036583b917f” 下载完后把compatibility_r03.zip 这个文件解压到 <sdk>/extras/android/ 目录下即可. 解压后可以得到一个compatibility目录, 该目录下有各个版本的兼容开发包目录,上面下载的开发包包含2个版本 一个是v4;一个是v13. 每个目录下面分别包含示例代码和开发包的源代码.
    如何使用兼容开发包

    使用兼容开发包和使用第三方jar包一样,直接添加到项目引用的类库中就可以了:

  • 在您的andorid项目跟目录中创建一个名称为”libs"的目录
  • 复制您要使用版本的兼容开发包到 libs/ 目录.支持API Level 4 (Android 1.6)的jar包位于: <sdk>/extras/android/compatibility/v4/android-support-v4.jar.
  • 把该jar包添加到类路径中.如果您使用Eclipse,只需要在Package Explorer中选中”libs”目录下的”android-support-v4.jar” 然后点击右键, 选中 Build Path > Add to Build Path. 添加成功后您会发现该jar包出现到了一个名称为”Referenced Libraries”的节点中.
  • 现在您的app就可以使用兼容开发包了,所有支持的特性都在 android.support 包中 (例如, android.support.v4).

     

     

     

    至此准备环境已经ok
    下边还是通过代码进行说话吧

    准备布局文件
    viewpager_layout.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:orientation="vertical">
    <!-- 此处需要给出全路径 -->
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpagerLayout" android:layout_height="fill_parent" android:layout_width="fill_parent"/>
    </LinearLayout>
     
    layout1.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:orientation="vertical">
        <TextView android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:id="@+id/textView1" android:layout_width="fill_parent" android:text="第一页"></TextView>
        <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText1">
            <requestFocus></requestFocus>
        </EditText>
    </LinearLayout>
     
    layout2.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:orientation="vertical">
        <TextView android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:id="@+id/textView1" android:layout_width="fill_parent" android:text="第二页"></TextView>
        <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText1">
            <requestFocus></requestFocus>
        </EditText>
    </LinearLayout>
     
    layout3.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:orientation="vertical">
        <TextView android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:id="@+id/textView1" android:layout_width="fill_parent" android:text="第三页"></TextView>
        <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText1">
            <requestFocus></requestFocus>
        </EditText>
    </LinearLayout>
     
    主程序
    package a.b;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Parcelable;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.EditText;
    
    public class TestViewPager extends Activity {
    	private ViewPager myViewPager;
    
    	private MyPagerAdapter myAdapter;
    	
    	private LayoutInflater mInflater;
    	private List<View> mListViews;
    	private View layout1 = null;
    	private View layout2 = null;
    	private View layout3 = null;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.viewpager_layout);
    		myAdapter = new MyPagerAdapter();
    		myViewPager = (ViewPager) findViewById(R.id.viewpagerLayout);
    		myViewPager.setAdapter(myAdapter);
            
            mListViews = new ArrayList<View>();
            mInflater = getLayoutInflater();
            layout1 = mInflater.inflate(R.layout.layout1, null);
            layout2 = mInflater.inflate(R.layout.layout2, null);
            layout3 = mInflater.inflate(R.layout.layout3, null);
           
            mListViews.add(layout1);
            mListViews.add(layout2);
            mListViews.add(layout3);
            
            //初始化当前显示的view
            myViewPager.setCurrentItem(1);
            
            //初始化第二个view的信息
            EditText v2EditText = (EditText)layout2.findViewById(R.id.editText1);
            v2EditText.setText("动态设置第二个view的值");
            
            myViewPager.setOnPageChangeListener(new OnPageChangeListener() {
    			
    			@Override
    			public void onPageSelected(int arg0) {
    				Log.d("k", "onPageSelected - " + arg0);
    				//activity从1到2滑动,2被加载后掉用此方法
    				View v = mListViews.get(arg0);
    				EditText editText = (EditText)v.findViewById(R.id.editText1);
    				editText.setText("动态设置#"+arg0+"edittext控件的值");
    			}
    			
    			@Override
    			public void onPageScrolled(int arg0, float arg1, int arg2) {
    				Log.d("k", "onPageScrolled - " + arg0);
    				//从1到2滑动,在1滑动前调用
    			}
    			
    			@Override
    			public void onPageScrollStateChanged(int arg0) {
    				Log.d("k", "onPageScrollStateChanged - " + arg0);
    				//状态有三个0空闲,1是增在滑行中,2目标加载完毕
    				/**
    			     * Indicates that the pager is in an idle, settled state. The current page
    			     * is fully in view and no animation is in progress.
    			     */
    			    //public static final int SCROLL_STATE_IDLE = 0;
    			    /**
    			     * Indicates that the pager is currently being dragged by the user.
    			     */
    			    //public static final int SCROLL_STATE_DRAGGING = 1;
    			    /**
    			     * Indicates that the pager is in the process of settling to a final position.
    			     */
    			    //public static final int SCROLL_STATE_SETTLING = 2;
    
    			}
    		});
            
    	}
    	
        private class MyPagerAdapter extends PagerAdapter{
    
    		@Override
    		public void destroyItem(View arg0, int arg1, Object arg2) {
    			Log.d("k", "destroyItem");
    			((ViewPager) arg0).removeView(mListViews.get(arg1));
    		}
    
    		@Override
    		public void finishUpdate(View arg0) {
    			Log.d("k", "finishUpdate");
    		}
    
    		@Override
    		public int getCount() {
    			Log.d("k", "getCount");
    			return mListViews.size();
    		}
    
    		@Override
    		public Object instantiateItem(View arg0, int arg1) {
    			Log.d("k", "instantiateItem");
    			((ViewPager) arg0).addView(mListViews.get(arg1),0);
    			return mListViews.get(arg1);
    		}
    
    		@Override
    		public boolean isViewFromObject(View arg0, Object arg1) {
    			Log.d("k", "isViewFromObject");
    			return arg0==(arg1);
    		}
    
    		@Override
    		public void restoreState(Parcelable arg0, ClassLoader arg1) {
    			Log.d("k", "restoreState");
    		}
    
    		@Override
    		public Parcelable saveState() {
    			Log.d("k", "saveState");
    			return null;
    		}
    
    		@Override
    		public void startUpdate(View arg0) {
    			Log.d("k", "startUpdate");
    		}
        	
        }
    	
    }
     
    在实机上测试后,非常流畅,这也就是说官方版的左右滑屏控件已经实现
    目前,关于viewpager的文章非常少,本文是通过阅读viewpager源代码分析出的写法
    当然此文章仅是抛砖引玉,而且属于框架式程序,目的就是让读者了解API的基本用法
    希望这篇原创文章对大家有帮助
    欢迎感兴趣的朋友一起讨论
    共同学习,共同进步

        
    [3] 开发总是被阻碍在一些很莫名其妙的有关问题下
        来源: 互联网  发布时间: 2014-02-18
    开发总是被阻碍在一些很莫名其妙的问题上
    这大概是因为规则都是人构建的吧,总有不顺利的地方。

    这两天搭android环境,以前都没问题的环境,就是死活找不到android target。

    结果用sdk manager下载了n个sdk,adt manager用起来也没问题的情况下,eclipse 仍然不认,真是伤心欲绝啊 。

    到现在也不知道原因。

    重启两下Eclipse之后就可以了,很奇怪,难道SDK manager安装时候还有延时? 或者是eclipse的插件有延时?


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3