• 安卓学习-资源访问


    安卓学习-资源访问

    1.静态原生的资源,都保存在assets里,如db,mp3等

    2.其他的一般都通过R.访问

    目录 存放资源 说明
    /res/animator 属性动画的XML  颜色切换动画;3D旋转动画
    /res/anim 补件动画的XML  只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性
     /res/color  颜色  
     /res/drawable

     存放各种位图文件和Drawable的XML文件

    如:

    *.png,*.9.png,*.jpg,*.gif

    BitmapDrawable

    NinePatchDrawable

    StateListDrawable

    ShapeDrawable

    AnimationDrawable

    Drawable各类其他子对象

     NinePatchDrawable(*.9.png)

    StateListDrawable根据不同状态,变换背景色

    ShapeDrawable 画图用的

    AnimationDrawable 动画

     /res/layout  存放界面布局文件  
     /res/menu 存放菜单   
     /res/raw

     存放一些原生资源,如声音、视频等

    InputStream in=getResources().openRawResource(R.raw.aaa);

    现在已经不建议放这里了,直接放assets

    然后通过InputStream in=getResources().getAssets().open("aaa.txt");

     这些数据只能读取,不能写入。更重要的是该目录下的文件大小不能超过1M。

     /res/values

     自定各种资源文件

    如:

    arrays.xml

    strings.xml

    colors.xml

    demens.xml

    styles.xml

     
     /res/xml  原生的xml文件可以存放在这里  pull方式
    try {
                XmlResourceParser xml = getResources().getXml(R.xml.bbb);
                xml.next();
                int eventType = xml.getEventType();
                while (eventType != XmlPullParser.END_DOCUMENT) {
                    // 如过到达标记的节点则取出内容
                    if (eventType == XmlPullParser.TEXT) {
                        Log.v("weijj", EncodingUtils.getString(xml.getText().getBytes(), "utf-8"));
                    }
                    xml.next();
                    eventType = xml.getEventType();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    View Code

     dom方式,还是比较喜欢这个

    xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <China>
     <province id="21" name="浙江">
        <city id="2101" name="杭州">
          <county id="210101" name="杭州" weatherCode="101210101"/>
          <county id="210102" name="萧山" weatherCode="101210102"/>
          <county id="210103" name="桐庐" weatherCode="101210103"/>
          <county id="210104" name="淳安" weatherCode="101210104"/>
          <county id="210105" name="建德" weatherCode="101210105"/>
          <county id="210106" name="余杭" weatherCode="101210106"/>
          <county id="210107" name="临安" weatherCode="101210107"/>
          <county id="210108" name="富阳" weatherCode="101210108"/>
        </city>
        <city id="2102" name="湖州">
          <county id="210201" name="湖州" weatherCode="101210201"/>
          <county id="210202" name="长兴" weatherCode="101210202"/>
          <county id="210203" name="安吉" weatherCode="101210203"/>
          <county id="210204" name="德清" weatherCode="101210204"/>
        </city>
        <city id="2103" name="嘉兴">
          <county id="210301" name="嘉兴" weatherCode="101210301"/>
          <county id="210302" name="嘉善" weatherCode="101210302"/>
          <county id="210303" name="海宁" weatherCode="101210303"/>
          <county id="210304" name="桐乡" weatherCode="101210304"/>
          <county id="210305" name="平湖" weatherCode="101210305"/>
          <county id="210306" name="海盐" weatherCode="101210306"/>
        </city>
        <city id="2104" name="宁波">
          <county id="210401" name="宁波" weatherCode="101210401"/>
          <county id="210402" name="慈溪" weatherCode="101210403"/>
          <county id="210403" name="余姚" weatherCode="101210404"/>
          <county id="210404" name="奉化" weatherCode="101210405"/>
          <county id="210405" name="象山" weatherCode="101210406"/>
          <county id="210406" name="宁海" weatherCode="101210408"/>
          <county id="210407" name="北仑" weatherCode="101210410"/>
          <county id="210408" name="鄞州" weatherCode="101210411"/>
          <county id="210409" name="镇海" weatherCode="101210412"/>
        </city>
        <city id="2105" name="绍兴">
          <county id="210501" name="绍兴" weatherCode="101210501"/>
          <county id="210502" name="诸暨" weatherCode="101210502"/>
          <county id="210503" name="上虞" weatherCode="101210503"/>
          <county id="210504" name="新昌" weatherCode="101210504"/>
          <county id="210505" name="嵊州" weatherCode="101210505"/>
        </city>
        <city id="2106" name="台州">
          <county id="210601" name="台州" weatherCode="101210601"/>
          <county id="210602" name="玉环" weatherCode="101210603"/>
          <county id="210603" name="三门" weatherCode="101210604"/>
          <county id="210604" name="天台" weatherCode="101210605"/>
          <county id="210605" name="仙居" weatherCode="101210606"/>
          <county id="210606" name="温岭" weatherCode="101210607"/>
          <county id="210607" name="洪家" weatherCode="101210609"/>
          <county id="210608" name="临海" weatherCode="101210610"/>
          <county id="210609" name="椒江" weatherCode="101210611"/>
          <county id="210610" name="黄岩" weatherCode="101210612"/>
          <county id="210611" name="路桥" weatherCode="101210613"/>
        </city>
        <city id="2107" name="温州">
          <county id="210701" name="温州" weatherCode="101210701"/>
          <county id="210702" name="泰顺" weatherCode="101210702"/>
          <county id="210703" name="文成" weatherCode="101210703"/>
          <county id="210704" name="平阳" weatherCode="101210704"/>
          <county id="210705" name="瑞安" weatherCode="101210705"/>
          <county id="210706" name="洞头" weatherCode="101210706"/>
          <county id="210707" name="乐清" weatherCode="101210707"/>
          <county id="210708" name="永嘉" weatherCode="101210708"/>
          <county id="210709" name="苍南" weatherCode="101210709"/>
        </city>
        <city id="2108" name="丽水">
          <county id="210801" name="丽水" weatherCode="101210801"/>
          <county id="210802" name="遂昌" weatherCode="101210802"/>
          <county id="210803" name="龙泉" weatherCode="101210803"/>
          <county id="210804" name="缙云" weatherCode="101210804"/>
          <county id="210805" name="青田" weatherCode="101210805"/>
          <county id="210806" name="云和" weatherCode="101210806"/>
          <county id="210807" name="庆元" weatherCode="101210807"/>
          <county id="210808" name="松阳" weatherCode="101210808"/>
          <county id="210809" name="景宁" weatherCode="101210809"/>
        </city>
        <city id="2109" name="金华">
          <county id="210901" name="金华" weatherCode="101210901"/>
          <county id="210902" name="浦江" weatherCode="101210902"/>
          <county id="210903" name="兰溪" weatherCode="101210903"/>
          <county id="210904" name="义乌" weatherCode="101210904"/>
          <county id="210905" name="东阳" weatherCode="101210905"/>
          <county id="210906" name="武义" weatherCode="101210906"/>
          <county id="210907" name="永康" weatherCode="101210907"/>
          <county id="210908" name="磐安" weatherCode="101210908"/>
        </city>
        <city id="2110" name="衢州">
          <county id="211001" name="衢州" weatherCode="101211001"/>
          <county id="211002" name="常山" weatherCode="101211002"/>
          <county id="211003" name="开化" weatherCode="101211003"/>
          <county id="211004" name="龙游" weatherCode="101211004"/>
          <county id="211005" name="江山" weatherCode="101211005"/>
          <county id="211006" name="衢江" weatherCode="101211006"/>
        </city>
        <city id="2111" name="舟山">
          <county id="211101" name="舟山" weatherCode="101211101"/>
          <county id="211102" name="嵊泗" weatherCode="101211102"/>
          <county id="211103" name="岱山" weatherCode="101211104"/>
          <county id="211104" name="普陀" weatherCode="101211105"/>
          <county id="211105" name="定海" weatherCode="101211106"/>
        </city>
      </province>
      </China>
      
    View Code

    解析方法

     String str="";
                            InputStream is = getAssets().open("tq.xml");
                            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  //取得DocumentBuilderFactory实例  
                            DocumentBuilder builder = factory.newDocumentBuilder(); //从factory获取DocumentBuilder实例  
                            Document doc = builder.parse(is);   //解析输入流 得到Document实例      
                            Element rootElement = doc.getDocumentElement();  
    
                            NodeList items = rootElement.getElementsByTagName("province");  
                            Element item=(Element)items.item(0);
                            //获得省份
                            str=str+item.getAttribute("name")+"
    ";
                            
                            //城市
                            items=item.getElementsByTagName("city"); 
                            for(int i=0;i<items.getLength();i++){
                                Element itemCity=(Element)items.item(i);
                                str=str+itemCity.getAttribute("name")+":";
                                
                                NodeList itemsXq=itemCity.getElementsByTagName("county"); 
                                for(int j=0;j<itemsXq.getLength();j++){
                                    Element itemXq=(Element)itemsXq.item(j);
                                    str=str+itemXq.getAttribute("name")+",";
                                }
                                str=str+"
    
    ";
                            }
        
                            editText1.setText(str);
                            
    View Code

     

    Drawable资源使用

    1.BitmapDrawable

            Drawable drawable=getResources().getDrawable(R.drawable.ic_launcher);
            ImageView imageView1=(ImageView)findViewById(R.id.imageView1);
            imageView1.setBackground(drawable);

    2.StateListDrawable

     支持的状态

    属性值 含义
    android:state_active 激活状态
    android:state_checkable 可勾选状态
    android:state_checked 已勾选
    android:state_enabled 可用
    android:state_first 开始状态
    android:state_focused 得到焦点状态
    android:state_last 结束状态
    android:state_middle 中间状态
    android:state_pressed 被安装状态
    android:state_selected 被选中状态
    android:state_window_focused 窗口是否已获得焦点

    例子:录入汉字是字体变色

    edt1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:state_focused="true" android:color="#EE2C2C" />
        <item android:state_focused="false" android:color="#0A0A0A" />
    </selector>
    View Code

     

    activity_main.xml

    <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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="18dp"
            android:ems="10"
            android:textColor="@drawable/edt1" >
    
            <requestFocus />
        </EditText>
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/editText1"
            android:layout_below="@+id/editText1"
            android:layout_marginTop="26dp"
            android:ems="10"
            android:textColor="@drawable/edt1" />
    
        <EditText
            android:id="@+id/editText3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/editText2"
            android:layout_below="@+id/editText2"
            android:layout_marginTop="30dp"
            android:ems="10"
            android:textColor="@drawable/edt1" />
    
    </RelativeLayout>
    View Code

    3.LayerDrawable

    包含drawable数组,根据索引,从大到小排列

    例子1:层叠图片

    layer1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
       <item>
           <bitmap android:src="@drawable/a11" android:gravity="left"/>
       </item>
         <item android:top="40dp" android:left="40dp">
           <bitmap android:src="@drawable/a22" android:gravity="left" />
       </item>
         <item android:top="80dp" android:left="80dp">
           <bitmap android:src="@drawable/a33" android:gravity="left"/>
       </item>
    </layer-list>
    View Code

    activity_main.xml

    <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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="24dp"
            android:src="@drawable/layer1" />
    
    </RelativeLayout>
    View Code

     例子2:网上找的,自定义样式

    bg_bar.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--自定义SeekBar的背景定义为:android:progressDrawable="@drawable/bg_bar"-->
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 背景图 -->
        <item android:id="@+android:id/background" android:drawable="@drawable/bar_up" />
        <!-- 第二进度图 -->
        <item android:id="@+android:id/SecondaryProgress" android:drawable="@drawable/bar_up" />
        <!-- 进度度 -->
        <item android:id="@+android:id/progress" android:drawable="@drawable/bar_dn" />
    </layer-list>
    View Code

    thumb_bar.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 自定义SeekBar的滑块定义为:android:thumb="@drawable/thumb_bar" -->
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 按下状态 -->
        <item android:state_pressed="true"
            android:drawable="@drawable/thumb_dn" />
    
        <!-- 焦点状态 -->
        <item android:state_focused="true"
            android:drawable="@drawable/thumb_up" />
        
        <!-- 默认状态 -->
        <item android:drawable="@drawable/thumb_up" />  
        
    </selector> 
    View Code

    activity_main.xml

    <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" >
        
        <TextView
            android:id="@+id/tv_def"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="系统自带" />
        
        <!-- 
            max=100,代表它的取值范围是0-100,共101个值;
            progress=10,代表默认值是10  
        -->
    
        <SeekBar
            android:id="@+id/seekbar_def"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="100"
            android:progress="10" />
        
        <TextView
            android:id="@+id/tv_self"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="自定义的" />
        
        <!-- 
            max=100,代表它的取值范围是0-100,共101个值;
            progress=20,代表默认值是20
            progressDrawable,表示SeekBar的背景图片
            thumbe,表示SeekBar的滑块图片  
        -->
    
        <SeekBar
            android:id="@+id/seekbar_self"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="100"
            android:progress="20"
            android:progressDrawable="@drawable/bg_bar"
            android:thumb="@drawable/thumb_bar" />
        
    </LinearLayout>
    View Code

     用到的一些图片资源

    bar_dn.png

    bar_up.png

    thumb_dn.png

    thumb_up.png

    3.ShapeDrawable

    用于定义一个几何图形

    android:sharp=["rectangle"|"oval"|"line"|"ring"]

    rectangle:矩形

    oval:椭圆形

    line:线条

    ring:环形

    例子1

    shap1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- 填充色 橘黄色 -->
        <solid android:color="#FF7F24"/>
        <!-- 定义四个角的弧度 -->
        <corners android:radius="30dp"  />
        <!--定义描边的宽度和描边的颜色值 -->
         <stroke android:width="2dip"  android:color="#7D26CD"/> 
    </shape>
    View Code

    例子2

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
       <!-- 渐变 -->
       <gradient android:startColor="#FFF5EE" android:endColor="#FF1493" />
    </shape>
    View Code

    例子3

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
       <!-- 渐变 -->
       <gradient android:startColor="#FFF5EE" android:endColor="#FF1493" android:type="sweep" />
    </shape>
    View Code

    4.ClipDrawable 从其他图片上,截图一部分

    可通过调用setLevel来显示截取图片的区域大小,10000表示显示整张图片

    例子

    一个从左到右,从上到下

    clip1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- android:drawable 图片源 
        android:clipOrientation 方向
        android:gravity 对其方式
    -->
    <clip xmlns:android="http://schemas.android.com/apk/res/android" 
        android:drawable="@drawable/pad"
        android:clipOrientation="vertical"
        android:gravity="top">
     </clip>
    View Code

    clip2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- android:drawable 图片源 
        android:clipOrientation 方向
        android:gravity 对其方式
    -->
    <clip xmlns:android="http://schemas.android.com/apk/res/android" 
        android:drawable="@drawable/pad"
        android:clipOrientation="horizontal"
        android:gravity="left">
     </clip>
    View Code

    MainActivity.java

    public class MainActivity extends Activity {
    
        ClipDrawable clip1;
        ClipDrawable clip2;
        ImageView imageView1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            clip2 = (ClipDrawable) getResources().getDrawable(R.drawable.clip2);
    
            imageView1 = (ImageView) findViewById(R.id.imageView1);
    
            Button btn1 = (Button) findViewById(R.id.button1);
            Button btn2 = (Button) findViewById(R.id.button2);
    
            btn1.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    clip1 = (ClipDrawable) getResources().getDrawable(
                            R.drawable.clip1);
                    imageView1.setBackground(clip1);
                    Timer timer = new Timer();
                    timer.schedule(new TimerTask() {
    
                        @Override
                        public void run() {
                            Message msg = new Message();
                            msg.what = 1;
                            handler.sendMessage(msg);
                        }
                    }, 0, 1000);
    
                }
            });
            
            
            btn2.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    clip2 = (ClipDrawable) getResources().getDrawable(
                            R.drawable.clip2);
                    imageView1.setBackground(clip2);
                    Timer timer = new Timer();
                    timer.schedule(new TimerTask() {
    
                        @Override
                        public void run() {
                            Message msg = new Message();
                            msg.what = 1;
                            handler.sendMessage(msg);
                        }
                    }, 0, 1000);
    
                }
            });
        }
    
        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
                    if (clip1 != null) {
                        clip1.setLevel(clip1.getLevel() + 1000);
                    }
                    if (clip2 != null) {
                        clip2.setLevel(clip2.getLevel() + 1000);
                    }
                }
            }
    
        };
    }
    View Code

    activity_main.xml

    <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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="从上到下" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="从左到右" />
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/button1"
            android:src="@drawable/clip1" />
    
    </RelativeLayout>
    View Code

    5.AnimataionDrawable 补间动画

    透明度、缩放、位移、旋转 从开始到结束的变化

    anim1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- linear_interpolator匀速变换  -->
    <!-- accelerate_interpolator加速变换  -->
    <!-- decelerate_interpolator减速变换  -->
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator"
        android:duration="5000">
        <!-- 透明度从0 到100 -->
       <alpha android:fromAlpha="0" android:toAlpha="1"  />
    </set>
    View Code

    anim2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- android:fillAfter保留最后状态  -->
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator"
        android:duration="5000"
        android:fillAfter="true">
        <!--android:pivotX="50%"  android:pivotY="50%" 从中间位置开始动画-->
       <scale android:fromXScale="0" android:toXScale="1" 
               android:fromYScale="0" android:toYScale="1"
               android:pivotX="50%" android:pivotY="50%"
                />
    </set>
    View Code

    anim3.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- android:fillAfter保留最后状态  -->
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator"
        android:duration="5000"
        android:fillAfter="true">
        <translate  android:fromXDelta="0"  android:toXDelta="100"
                    android:fromYDelta="0"  android:toYDelta="100"/>
    </set>
    View Code

    anim4.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- android:fillAfter保留最后状态  -->
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="5000"
        android:fillAfter="true">
        <!-- 从0度到360度旋转 -->
        <rotate android:fromDegrees="0"  android:toDegrees="360"
                android:pivotX="50%"  android:pivotY="50%"
            />
    </set>
    View Code

    MainActivity.java

    public class MainActivity extends Activity implements OnClickListener {
    
        ImageView imageView1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            imageView1 = (ImageView) findViewById(R.id.imageView1);
    
            Button btn1 = (Button) findViewById(R.id.button1);
            Button btn2 = (Button) findViewById(R.id.button2);
            Button btn3 = (Button) findViewById(R.id.button3);
            Button btn4 = (Button) findViewById(R.id.button4);
            btn1.setOnClickListener(this);
            btn2.setOnClickListener(this);
            btn3.setOnClickListener(this);
            btn4.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            if(v==findViewById(R.id.button1)){
                //透明度
                Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim1);
                imageView1.startAnimation(anim1);
            }else if(v==findViewById(R.id.button2)){
                //透明度
                Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim2);
                imageView1.startAnimation(anim1);
            }else if(v==findViewById(R.id.button3)){
                //透明度
                Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim3);
                imageView1.startAnimation(anim1);
            }else if(v==findViewById(R.id.button4)){
                //透明度
                Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim4);
                imageView1.startAnimation(anim1);
            }
            
        }
    }
    View Code

    activity_main.xml

    <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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="透明度" />
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button1"
            android:src="@drawable/pad" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/imageView1"
            android:layout_toRightOf="@+id/button1"
            android:text="缩放" />
    
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/button2"
            android:text="位移" />
    
        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/button3"
            android:text="旋转" />
    
    </RelativeLayout>
    View Code

    6.ProtertyAnimition属性动画

    ainimi1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
        android:propertyName="backgroundColor"
        android:duration="3000"
        android:valueFrom="#FFF5EE"
        android:valueTo="#FF1493"
        android:repeatCount="infinite"
        android:repeatMode="reverse"
        android:valueType="intType"
        />
        
    View Code

    MainActivity.java

    public class MainActivity extends Activity{
    
        ImageView imageView1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            LinearLayout l=(LinearLayout)findViewById(R.id.linearLayout1);
            l.addView(new MyView(this));
        }
    
        public class MyView extends View {
    
            public MyView(Context context) {
                super(context);
                
                ObjectAnimator colorAnim=(ObjectAnimator)AnimatorInflater.loadAnimator(context, R.animator.anim1);
                colorAnim.setEvaluator(new ArgbEvaluator());
                colorAnim.setTarget(this);
                colorAnim.start();
            }
            
        }
        
    }
    View Code

    样式(style)和主题(theme)

    1.样式

    my_style.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:android="http://schemas.android.com/apk/res/android">
        <style name="style1">
            <item name="android:textSize">20sp</item>
            <item name="android:textColor">#FF7F24</item>
        </style>
        
        <style name="style2" parent="style1">
            <item name="android:background">#ee6</item>
            <item name="android:padding">8dp</item>
            <item name="android:textColor">#9ACD32</item>
        </style>
        
        
    </resources>
    View Code

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        style="@style/style1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="${relativePackage}.${activityClass}" >
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            style="@style/style1"
            android:ems="10" >
    
            <requestFocus />
        </EditText>
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/editText1"
            android:layout_marginTop="15dp"
            style="@style/style2"
            android:ems="10" />
    
        <EditText
            android:id="@+id/editText3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/editText2"
            android:layout_marginTop="18dp"
            android:ems="10" />
    
    </RelativeLayout>
    View Code
  • 相关阅读:
    hortonworks
    使用Ambari快速部署Hadoop大数据环境
    js模板引擎
    Scala中的语言特性是如何实现的2
    IOS多线程编程一:概述
    Struts框架
    总体设计
    算法介绍
    社区与关怀
    从C#的Singleton设计模式
  • 原文地址:https://www.cnblogs.com/weijj/p/4195660.html
Copyright © 2020-2023  润新知