反射获取注解的值、反射添加集合数据、fresco设置缓存路径和几种样式

**
import android.app.Application;
import android.os.Environment;
import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        DiskCacheConfig images = DiskCacheConfig.newBuilder(this)
                .setBaseDirectoryName("images")
                .setBaseDirectoryPath(Environment.getExternalStorageDirectory())
                .build();
        ImagePipelineConfig build = ImagePipelineConfig.newBuilder(this)
                .setMainDiskCacheConfig(images)
                .build();
        /*
        //设置磁盘缓存    
        DiskCacheConfig diskCacheConfig =  DiskCacheConfig.newBuilder(this)  
            .setBaseDirectoryName("images")          
            .setBaseDirectoryPath(Environment.getExternalStorageDirectory())     
            .build();         
        //设置磁盘缓存的配置,生成配置文件    
        ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)      
             .setMainDiskCacheConfig(diskCacheConfig)          
             .build();        
         Fresco.initialize(this, config); //不设置默认传一个参数既可    */
        Fresco.initialize(this,build);
    }
}**
**
import com.facebook.drawee.view.SimpleDraweeView;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/*@interface注解: 定义注解接口
@Target注解: 用于约束被描述的注解的使用范围,当被描述的注解超出使用范围则编译失败。如:ElementType.METHOD,ElementType.TYPE;
@Retention 注解:用于约束被定义注解的作用范围,作用范围有三个:
1,、RetentionPolicy.SOURCE:作用范围是源码,作用于Java文件中,当执行javac时去除该注解。
2、RetentionPolicy.CLASS:作用范围是二进制码,就是存在于class文件中,当执行Java时去除该注解。
3、RetentionPolicy.RUNTIME:作用范围为运行时,就是我们可以通过动态获取该注释。
@Documented:用于指定javadoc生成API文档时显示该注释。
@Inherited:用于指定被描述的注释可以被其描述的类的子类继承,默认情况是不能被其子类继承。*/
@Documented
@Retention(RetentionPolicy.RUNTIME)//运行时范围
@Target(ElementType.TYPE)
@Inherited
public @interface ZhuJie {
   public String name() default "张三";
}**




**@ZhuJie(name = "Holle World")
public class User {
    public String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}**
 import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    import com.facebook.drawee.backends.pipeline.Fresco;
    import com.facebook.drawee.controller.AbstractDraweeController;
    import com.facebook.drawee.generic.GenericDraweeHierarchy;
    import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
    import com.facebook.drawee.generic.RoundingParams;
    import com.facebook.drawee.interfaces.DraweeController;
    import com.facebook.drawee.view.SimpleDraweeView;
    import com.facebook.imagepipeline.request.ImageRequest;
    import com.facebook.imagepipeline.request.ImageRequestBuilder;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import butterknife.BindView;
    import butterknife.ButterKnife;
    import butterknife.OnClick;
    import butterknife.Unbinder;
    public class MainActivity extends AppCompatActivity {
        /* Button yuanxing;
         Button yuanjiao;
         Button kuangao;
         Button dongtu;
         SimpleDraweeView simg;
         Button zhijiezhi;
         Button fanshe;*/
        String dtu = "http://imgsa.baidu.com/exp/w=500/sign=6143fa124c34970a4773102fa5cbd1c0/38dbb6fd5266d016c0b4ac159a2bd40735fa3559.jpg";
        String jtu = "http://img.zcool.cn/community/014565554b3814000001bf7232251d.jpg@1280w_1l_2o_100sh.png";
        LinearLayout llFresco;
        @BindView(R.id.yuanxing)
        Button yuanxing;
        @BindView(R.id.yuanjiao)
        Button yuanjiao;
        @BindView(R.id.kuangao)
        Button kuangao;
        @BindView(R.id.dongtu)
        Button dongtu;
        @BindView(R.id.simg)
        SimpleDraweeView simg;
        @BindView(R.id.zhijiezhi)
        Button zhijiezhi;
        @BindView(R.id.fanshe)
        Button fanshe;
        @BindView(R.id.ll_fresco)
        LinearLayout ll_fresco;
        LinearLayout lins;
        SimpleDraweeView simpleDraweeView;
        private Unbinder mBind;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             mBind = ButterKnife.bind(this);
            //  initView();
        }
        @OnClick(R.id.yuanxing)
        public void  yuanxing(){
            Uri parse = Uri.parse(jtu);
            RoundingParams roundingParams = RoundingParams.asCircle();
            GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(getResources());
            GenericDraweeHierarchy build = builder.setRoundingParams(roundingParams).build();
            simg.setHierarchy(build);
            simg.setImageURI(parse);
        }
        @OnClick(R.id.yuanjiao)
        public void  yuanjia(){
            Uri parse2 = Uri.parse(jtu);
            RoundingParams roundingParams2 = RoundingParams.fromCornersRadius(20f);
            GenericDraweeHierarchyBuilder builder2 = new GenericDraweeHierarchyBuilder(getResources());
            GenericDraweeHierarchy build2 = builder2.setRoundingParams(roundingParams2).build();
            simg.setHierarchy(build2);
            simg.setImageURI(parse2);
        }
        @OnClick(R.id.kuangao)
        public void  kuangao(){
        // 图片的地址
                Uri uri = Uri.parse(jtu);
                //创建控件
                //创建Fresco加载图片的控件对象
                simpleDraweeView = new SimpleDraweeView(this); // 设置控件对象的宽高比,必须设置,参数浮点型,大于1,则宽度是高度的几倍.
                simpleDraweeView.setAspectRatio(0.5f);
                //图片请求
                ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri).build();
                //加载图片的控制
                AbstractDraweeController build3 = Fresco.newDraweeControllerBuilder()
                        .setOldController(simpleDraweeView.getController())
                        .setImageRequest(request)
                        .build();
                //加载图片
                simpleDraweeView.setController(build3);
                ll_fresco.addView(simpleDraweeView);
        }
        @OnClick(R.id.dongtu)
        public void  dongtu(){
            Uri parse4 = Uri.parse(dtu);
            DraweeController draweeController = Fresco.newDraweeControllerBuilder()
                    .setUri(parse4)
                    .setAutoPlayAnimations(true)
                    .build();
            simg.setController(draweeController);
        }
        @OnClick(R.id.zhijiezhi)
        public void  zhijiezhi(){
            Class<User> userClass = User.class;
            //通过这个类得到要使用的注解
            ZhuJie annotation = userClass.getAnnotation(ZhuJie.class);
            String name = annotation.name();
            try {
                //实例化这个类,她实际上是使用了没有参数的构造函数,而且他会初始化这个对象如果这个还没有初始化过。(有些静态变量在类初始化的时候要进行初始化)
                User user = userClass.newInstance();
                user.setName(name);
                Toast.makeText(this,user.getName(),Toast.LENGTH_SHORT).show();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        @OnClick(R.id.fanshe)
        public void  fanshe(){
            ArrayList<Integer> arl = new ArrayList<Integer>();
            // 将上面定义的Arraylist 返回Arraylist的class对象
            Class<? extends ArrayList> clazz = arl.getClass();
            // 获取Arraylist 类里面的add方法
            Method method = null;
            try {
                method = clazz.getMethod("add",Object.class);
                // 对arl对象调用由 Method 对象表示的底层方法 ,向集合中添加字符串
                method.invoke(arl, "这是一个字符串");
                //method.invoke(arl, "这是两个字符串");
            } catch (Exception e) {
                e.printStackTrace();
            }
            //使用增强for来循环输出 集合中的数据
            for (Object item : arl) {
                Log.e("lyq",item+"");
            }
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            mBind.unbind();
        }
    }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/yuanxing"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="圆形图"/>
        <Button
            android:id="@+id/yuanjiao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="圆角图:70DP"/>
        <Button
            android:id="@+id/kuangao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="宽高比:1:2"/>
        <Button
            android:id="@+id/dongtu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="加载动图"/>
    </LinearLayout>
<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/simg"
    android:layout_width="200dp"
    android:layout_height="130dp"
    android:layout_gravity="center"/>
    <Button
        android:id="@+id/zhijiezhi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="获取注解的值"/>
    <Button
        android:id="@+id/fanshe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="反射添加集合"/>
    <LinearLayout
        android:id="@+id/ll_fresco"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:orientation="vertical">
    </LinearLayout>

</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值