为ImageView设置背景的方法以及区别
2017-06-01 17:46
411 查看
为ImageView设置背景
下面进行测试
布局文件
代码如下
效果图如下
工具类
//-------自动拉伸(变形) //如果在布局文件中写了图片的宽高,当图片小的时候,自动拉伸填充窗口 setBackground(); setBackgroundResource(); setBackgroundResource();
//-------不自动拉伸(不变形) //如果在布局文件中写了图片的宽高,当图片小的时候,不会自动拉伸填充窗口--如果设置了属性 // android:scaleType="fitXY",就会对图片进行拉伸并填充 setImageDrawable(); setImageBitmap(); setImageResource();
下面进行测试
布局文件
<?xml version="1.0" encoding="utf-8"?> <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"> <ImageView android:id="@+id/imageView" android:layout_width="300dp" android:layout_height="300dp" /> <ImageView android:background="@android:color/background_dark" android:id="@+id/imageView2" android:layout_width="300dp" android:layout_height="300dp" /> </LinearLayout>
代码如下
public class MainActivity extends FragmentActivity { public ImageView imageView; public ImageView imageView1; public ImageView imageView2; private String TAG = "MainActivity"; public String path; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView1 = (ImageView) findViewById(R.id.imageView); imageView2 = (ImageView) findViewById(R.id.imageView2); //将mipmap文件夹下的图片保存到本地的SD卡上 //------------------------------------------------------------------------------------------------------------- DrawabletoSD drawabletoSD = new DrawabletoSD(this); drawabletoSD.saveDrawableById(R.mipmap.dog, "dog.jpg", Bitmap.CompressFormat.JPEG); //------------------------------------------------------------------------------------------------------------- //如果在布局文件中写了图片的宽高,当图片小的时候,自动拉伸填充窗口 // imageView1.setBackground(getResources().getDrawable(R.mipmap.dog));//变形 // imageView1.setBackgroundResource(R.mipmap.dog);//变形 imageView1.setBackgroundDrawable(getResources().getDrawable(R.mipmap.dog));////变形 //------------------------------------------------------------------------------------------------------------- //如果在布局文件中写了图片的宽高,当图片小的时候,不会自动拉伸填充窗口--如果设置了属性 // android:scaleType="fitXY",就会对图片进行拉伸并填充 // imageView2.setImageDrawable(getResources().getDrawable(R.mipmap.dog)); //不会变形 //File.separator 遍历系统文件,获取到dog.jpg // File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/path", // name); path = getExternalCacheDir()+ "/path" + "/dog.jpg"; Log.i(TAG, "path=" + path); Bitmap bm = BitmapFactory.decodeFile(path); imageView2.setImageBitmap(bm);//不会变形 // imageView2.setImageResource(R.mipmap.dog);//不会变形 } }
效果图如下
工具类
import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Environment; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; /** * author liuyafei * email 543296994@qq.com * Created */ public class DrawabletoSD { private Activity mactivity; public DrawabletoSD(Activity activity) { this.mactivity = activity; } /** * 存储资源为ID的图片 * * @param id * @param name */ public void saveDrawableById(int id, String name, Bitmap.CompressFormat format) { Drawable drawable = idToDrawable(id); Bitmap bitmap = drawableToBitmap(drawable); saveBitmap(bitmap, name, format); } /** * 将资源ID转化为Drawable * * @param id * @return */ public Drawable idToDrawable(int id) { return mactivity.getResources().getDrawable(id); } /** * 将Drawable转化为Bitmap * * @param drawable * @return */ public Bitmap drawableToBitmap(Drawable drawable) { if (drawable == null) return null; return ((BitmapDrawable) drawable).getBitmap(); } /** * 将Bitmap以指定格式保存到指定路径 * * @param bitmap * @param * @param */ public void saveBitmap(Bitmap bitmap, String name, Bitmap.CompressFormat format) { // 创建一个位于SD卡上的文件 // 判断SD卡存在 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File root=mactivity.getExternalCacheDir(); File dir=new File(root.getAbsolutePath()+"/path"); if (!dir.exists()){ dir.mkdirs(); } File file=new File(dir,name); try { // 打开指定文件输出流 FileOutputStream out = new FileOutputStream(file); // 将位图输出到指定文件 bitmap.compress(format, 100, out); out.close(); } catch (IOException e) { e.printStackTrace(); Toast.makeText(mactivity, "保存失败,请检查sd卡可用空间", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(mactivity, "sd卡不可用", Toast.LENGTH_LONG).show(); } } }
相关文章推荐
- (转载)Recyclerview | Intent与Bundle在传值上的区别 | 设置布局背景为白色的三种方法
- Android开发中ImageLoder加载网络图片时将图片设置为ImageView背景的方法
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- ListView集合中设置标记 setTag();方法带一个参数和两个参数的区别,以及设置标记时ViewHolder中的每一个属性控件都需要设置一次,否则在Item中每一个控件的点击事件中取出设置的标
- 用colorWithPatternImage设置view背景太占内存,替代方法
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- imageview 设置背景图片解析
- android imageView背景透明度的设置
- ImageButton swing 设置Jbutton背景图片的方法
- Linux安装完jdk后集中设置环境变量的方法,以及区别
- UITableView中设置section内行数以及配置cell的方法
- android ImageView 设置背景选择器selector
- Android ImageView设置图片的可见性,设置颜色的不同方法,设置图片指定大小
- 获取android 手机屏幕的大小以及动态设置背景图片的两种方法;
- android中jiava设置ImageView背景图片
- WebView设置透明和设置背景图片的方法
- IOS开发:关于设置UIView的背景为图片的方法以及问题
- Qt控件半透明设置,以及Qt控件去除父控件背景设置的方法总结
- IOS 笔记 - 利用UIImage的stretchableImageWithLeftCapWidth方法给UIButton设置背景