2015/11/17

Android官方文档学习之路 —Material Design(原质化设计)

通过构建系统化的动效和空间合理化利用,并将两个理念合二为一,构成了实体隐喻。

三维世界(3D world)

Material 环境是一个三维的空间,这意味着每个对象都有 x , y , z 三维坐标属性,z 轴垂直于显示平面,并延伸向用户视角,每个 material 元素在 z 轴上占据一定的位置并且有一个 1dp 厚度的标准。 在网页上,z 轴被用来分层而不是为了视角。3D 空间通过操纵 y 轴进行仿真。

在设计用户界面时的设计原则:

  • 让用户着迷
  • 简化用户的生活
  • 让用户感到惊奇

#Listview 的优化原理

Listview 的优化原理

if(convertView!=null){}

  • 保存已经加载过的布局文件,没加载的继续加载,如果加载过后就复用加载。所以他只加载了第一个页面,往后的都采用复用的形式。这样就不会卡顿了。(解决90的问题)
  • item里面的view是通过二叉树进行查找的,如果查找多了也会变得十分耗时的。这时候就要复用Vi
    ew,把他放在viewHolder容器里。每次都从里面开始找就好。(解决10的问题)

  • 如果把他定义成static的形式,那么当他重复创建时。就只会创建一次。

PopupWindow和对话框的区别

  • PopupWindow可以显示在屏幕的任意地方(对话框显示在中间)
  • 可以设置动画

相对于屏幕的两边、相对于屏幕的中间、多控件位于屏幕的右边

相对于屏幕的两边

<RelativeLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_below="@id/btnLogin"
        >
        <TextView  style="@style/textview_small"
            android:text="注册Meng号"
            android:id="@+id/tvRegister"
            />

           <TextView style="@style/textview_small"
               android:text="忘记密码 "
               android:layout_alignParentRight="true"
               android:id="@+id/tvForgetPassword"

               />

    </RelativeLayout>

相对于屏幕的中间

<LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/ll"
        >
          <ImageView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/qq"
              android:id="@+id/ivQQ"
              />
          <ImageView 
              android:layout_width="wrap_content"
              android:layout_marginLeft="20dp"
              android:layout_height="wrap_content"
              android:src="@drawable/wechat"
              android:id="@+id/ivWechat"
              />
          <ImageView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
               android:layout_marginLeft="20dp"
              android:src="@drawable/weibo"
              android:id="@+id/ivWeibo"
              />
  </LinearLayout>

多控件位于屏幕的右边

<RelativeLayout android:layout_width="match_parent"
       android:layout_height="50dp"

       >
       <LinearLayout android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:orientation="horizontal"
           android:layout_alignParentRight="true"
           >
       <ImageView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:src="@drawable/favour"


           />
        <TextView android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="123456"
                   android:textSize="@dimen/text_size_small"
                   android:layout_marginLeft="10dp"
                   />
       <ImageView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:src="@drawable/criticism1"
           android:layout_marginLeft="10dp"
           android:id="@+id/ivComment"
           />
        <TextView android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="100人评论"

                   android:textSize="@dimen/text_size_small"

                   android:id="@+id/tvComment"
                   android:layout_marginLeft="10dp"
                   />
           <ImageView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
                  android:src="@drawable/transmit1"
             android:layout_marginLeft="10dp"
               />
       </LinearLayout>
   </RelativeLayout>

相对布局的登陆界面

相对布局的登陆界面

<RelativeLayout xmlns: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:background="@drawable/background"

       android:padding="30dp"
    tools:context="com.iwmclub.nutriliteau.activity.LoginActivity" >


    <ImageView 
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:background="@drawable/logo"
        android:layout_centerHorizontal="true"
        android:id="@+id/ivLogo"
        />


    <LinearLayout 
        android:layout_below="@id/ivLogo"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:id="@+id/llName"
        >
        <ImageView android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:src="@drawable/uesr"
            />
        <EditText 
             android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="输入手机号码"
            android:gravity="center_horizontal"
            android:singleLine="true"
            android:inputType="phone"
            android:id="@+id/etName"
            android:background="@null"
            />
    </LinearLayout>

    <View style="@style/view_lines_login_gray"
        android:layout_below="@id/llName"
        android:id="@+id/llLine02"
        />

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
         android:gravity="center_vertical"
         android:layout_below="@id/llLine02"
         android:id="@+id/llPassword"
        >
        <ImageView android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:src="@drawable/password"
            />
        <EditText 
            android:id="@+id/etPassword"
             android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="输入登陆密码"
            android:gravity="center_horizontal"
            android:background="@null"
            android:inputType="textPassword"
            android:singleLine="true"
            />
    </LinearLayout>

     <View style="@style/view_lines_login_gray"
        android:layout_below="@id/llPassword"
        android:id="@+id/viewLine"
        />

    <Button 
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="登陆"
          android:id="@+id/btnLogin"
        android:textColor="@color/white"
        android:gravity="center"
        android:background="@drawable/landing"
        android:layout_below="@id/viewLine"
        />

    <RelativeLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_below="@id/btnLogin"
        >
        <TextView  style="@style/textview_small"
            android:text="注册Meng号"
            android:id="@+id/tvRegister"
            />

           <TextView style="@style/textview_small"
               android:text="忘记密码 "
               android:layout_alignParentRight="true"
               android:id="@+id/tvForgetPassword"

               />

    </RelativeLayout>

       <LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/ll"
        >
          <ImageView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/qq"
              android:id="@+id/ivQQ"
              />
          <ImageView 
              android:layout_width="wrap_content"
              android:layout_marginLeft="20dp"
              android:layout_height="wrap_content"
              android:src="@drawable/wechat"
              android:id="@+id/ivWechat"
              />
          <ImageView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
               android:layout_marginLeft="20dp"
              android:src="@drawable/weibo"
              android:id="@+id/ivWeibo"
              />
  </LinearLayout>


           <LinearLayout android:layout_width="match_parent"
               android:layout_height="50dp"
               android:orientation="horizontal"
               android:layout_above="@id/ll"
               android:gravity="center_horizontal"
               android:id="@+id/llLine"
               >
                <View android:layout_width="100dp"
              android:layout_height="1dp"
              android:layout_centerVertical="true"
              android:background="@color/line_view"
             android:layout_gravity="center_vertical"

              />
          <TextView style="@style/textview_small"
              android:text="第三方登陆"
             android:layout_centerVertical="true"
              android:layout_centerHorizontal="true"
              android:layout_gravity="center_vertical"
              />
          <View android:layout_width="100dp"
              android:layout_height="1dp"

              android:layout_alignParentRight="true"
              android:background="@color/line_view"
             android:layout_gravity="center_vertical"
              />

           </LinearLayout>



</RelativeLayout>

带有男女图标的头像

带有男女图标的头像

    <LinearLayout xmlns: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:orientation="vertical"
            tools:context="com.zszdevelop.layouttest.MainActivity" >

 <FrameLayout android:layout_width="wrap_content"
            android:layout_height="wrap_content"



            >
            <com.zszdevelop.layouttest.CircleImageView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/git01"

            />
        <ImageView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/female"
           android:layout_gravity="right|bottom"
            />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|bottom"
            android:src="@drawable/male" />

        </FrameLayout>

</LinearLayout>

2015/9/27

2015/9/27友盟 问题集

用友盟的分享sdk遇到了这个问题:

java.lang.NoClassDefFoundError:com.umeng.socialize.controller.UMServiceFactory。

产生原因:android ADT版本升级后产生的。

解决办法:①.build path—>order and export中把第三方jar包的位置上调;

②.如果第一种办法不好用,请试一试,右击项目名称—>Build path—>configure build path..

此时会弹出类库设置对话框,点击选项卡“Order and Export”

把Android Private Libraries和Android Dependencies这两个选项勾选上,(貌似第三方类库的顺序也需要调整,之前有一个项目也是编译运行时出现同样的错误,把第三方类库的位置上调,把项目的src和gen两个包的位置下调,上一个项目的同样的错误问题是这样得到解决的)把项目Clean一下,重新编译,问题就迎刃而解了!

2015/9/24

2015/9/24问题集

9.23日错误修改

1、 所有的弹出输入键盘,需要按空白区域收回键盘

InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//====

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
     if(event.getAction() == MotionEvent.ACTION_DOWN){  
         if(getCurrentFocus()!=null && getCurrentFocus().getWindowToken()!=null){  
           manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);  
         }  
      }  
      return super.onTouchEvent(event);  
}

2、 输入手机号的键盘直接以数字键盘显示

android:inputType="phone"

3、 输入框禁止换行

android:singleLine="true"

4、 登录进去后“按返”键回不能再回到登录界面

startActivity(toHomeActivity);
        this.finish();

6、 忘记密码界面崩溃,错误提示

v7包兼容问题,activity不能继承自actionBarActivity

2015/9/21

2015/9/21

Bean的序列化

只要在bean实现Serializable,如果还有子类也要实现一个序列化

public static class DataEntity implements Serializable{}

2015/9/17

2015/9/17问题集

Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别

CharSequece 是个接口String、StringBuilder、StringBuffer 都是它的实现
String 是常量修改它的值实际是创建新的对象
StringBuffer 是变量更改值时是在原对象上添加,属于同步的
StringBuilder 和StringBuffer用法差不多,在非同步情况下使用