Код активити:
Код: Выделить всё
public class VerboseMediaArhitechture extends Activity {
public static int[] DataImg;
public static int[] DataText;
ImageView picture;
TextView description;
ImageButton hide;
Bitmap bg;
static ImageView leftImage;
static ImageView rightImage;
static boolean hideShow=true;
Gallery gallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setDataImage();
setContentView(R.layout.verbose_media_arhitechture);
picture=(ImageView) findViewById(R.id.MediaPicture);
gallery=(Gallery) findViewById(R.id.MediagGallery);
description=(TextView) findViewById(R.id.mediaImageDescription);
hide=(ImageButton) findViewById(R.id.mediaHideBt);
leftImage=(ImageView) findViewById(R.id.leftImage);
rightImage=(ImageView) findViewById(R.id.rightImage);
leftImage.setImageBitmap(BitmapFactory.decodeResource(MainActivity.resourcesApp, R.drawable.pattern));
gallery.setAdapter(new GalleryAdapter(this));
picture.setImageBitmap(GalleryAdapter.decodeSampledBitmapFromResource(MainActivity.resourcesApp,DataImg[0], MainActivity.WidthSreenSize, MainActivity.HightSreenSize));
gallery.setSelection(6);
hide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(hideShow){
description.setText("");
description.setBackgroundDrawable(null);
applyBlur(hide,picture);
hide.setImageResource(R.drawable.button_show);
hideShow=false;
applyBlur(rightImage,leftImage);
}
else{
applyBlur(description,picture);
description.setText("Привет мир!!");
hide.setImageResource(R.drawable.button_hide);
hide.setBackgroundDrawable(null);
hideShow=true;
}
}
});
gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,int position, long id) {
try{
if(hideShow){
applyBlur(description,picture);
}
else{
applyBlur(hide,picture);
}
picture.setImageBitmap(GalleryAdapter.decodeSampledBitmapFromResource(MainActivity.resourcesApp, DataImg[position], MainActivity.WidthSreenSize, MainActivity.HightSreenSize));
}
catch(Exception e){
e.printStackTrace();
}
}
});
applyBlur(description,picture);
leftImage.post(setBlur);
}
public void applyBlur(final View view,final View image) {
image.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
image.getViewTreeObserver().removeOnPreDrawListener(this);
image.buildDrawingCache();
Bitmap bmp = image.getDrawingCache();
view.setBackgroundDrawable(new BitmapDrawable(MainActivity.resourcesApp, blur(bmp, view)));
bmp.recycle();
return true;
}
});
//if(view.getBackground()!=null){
// leftImage.setImageDrawable(rightImage.getBackground());
// }
}
private Bitmap blur(Bitmap bkg, View view) {
float scaleFactor = 8;
float radius = 20;
Bitmap overlay = Bitmap.createBitmap((int) (view.getMeasuredWidth()),
(int) (view.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft()+15, -view.getTop());
canvas.drawBitmap(bkg, 0, 0, null);
overlay = FastBlur.doBlur(overlay, (int)radius, true);
return overlay;
}
Runnable setBlur= new Runnable() {
@Override
public void run() {
applyBlur(rightImage,leftImage);
}};
private void setDataImage(){
Intent intent = getIntent();
int index = intent.getIntExtra(MediaActivity.EXTRA_MESSAGE, 1);
switch(index){
case 1:
DataImg = new int [25];
DataText= new int [DataImg.length];
DataImg[0]=R.drawable.arhitektura_01;
DataImg[1]=R.drawable.arhitektura_02;
DataImg[2]=R.drawable.arhitektura_03;
DataImg[3]=R.drawable.arhitektura_04;
DataImg[4]=R.drawable.arhitektura_05;
DataImg[5]=R.drawable.arhitektura_06;
DataImg[6]=R.drawable.arhitektura_07;
DataImg[7]=R.drawable.arhitektura_17;
DataImg[8]=R.drawable.arhitektura_18;
DataImg[9]=R.drawable.arhitektura_19;
DataImg[10]=R.drawable.arhitektura_20;
DataImg[11]=R.drawable.arhitektura_21;
DataImg[12]=R.drawable.arhitektura_22;
DataImg[13]=R.drawable.arhitektura_23;
DataImg[14]=R.drawable.arhitektura_26;
DataImg[15]=R.drawable.arhitektura_27;
DataImg[16]=R.drawable.arhitektura_28;
DataImg[17]=R.drawable.arhitektura_31;
DataImg[18]=R.drawable.arhitektura_32;
DataImg[19]=R.drawable.arhitektura_35;
DataImg[20]=R.drawable.arhitektura_36;
DataImg[21]=R.drawable.arhitektura_37;
DataImg[22]=R.drawable.arhitektura_38;
DataImg[23]=R.drawable.arhitektura_42;
DataImg[24]=R.drawable.arhitektura_45;
break;
case 2:
DataImg = new int [8];
DataText= new int [DataImg.length];
DataImg[0]=R.drawable.interjeri_09;
DataImg[1]=R.drawable.interjeri_10;
DataImg[2]=R.drawable.interjeri_11 ;
DataImg[3]=R.drawable.interjeri_12;
DataImg[4]=R.drawable.interjeri_13;
DataImg[5]=R.drawable.interjeri_14;
DataImg[6]=R.drawable.interjeri_15;
DataImg[7]=R.drawable.interjeri_16;
break;
case 3:
DataImg = new int [21];
DataText= new int [DataImg.length];
DataImg[0]=R.drawable.inftrastruktura_08;
DataImg[1]=R.drawable.inftrastruktura_24;
DataImg[2]=R.drawable.inftrastruktura_25;
DataImg[3]=R.drawable.inftrastruktura_29;
DataImg[4]=R.drawable.inftrastruktura_30;
DataImg[5]=R.drawable.inftrastruktura_33;
DataImg[6]=R.drawable.inftrastruktura_34;
DataImg[7]=R.drawable.inftrastruktura_39;
DataImg[8]=R.drawable.inftrastruktura_40;
DataImg[9]=R.drawable.inftrastruktura_41;
DataImg[10]=R.drawable.inftrastruktura_43;
DataImg[11]=R.drawable.inftrastruktura_44;
DataImg[12]=R.drawable.inftrastruktura_46;
DataImg[13]=R.drawable.inftrastruktura_47;
DataImg[14]=R.drawable.inftrastruktura_48;
DataImg[15]=R.drawable.inftrastruktura_49;
DataImg[16]=R.drawable.inftrastruktura_50;
DataImg[17]=R.drawable.inftrastruktura_51;
DataImg[18]=R.drawable.inftrastruktura_52;
DataImg[19]=R.drawable.inftrastruktura_53;
DataImg[20]=R.drawable.inftrastruktura_54;
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Код: Выделить всё
package ru.donstroy.parusamobile.media;
public class GalleryAdapter extends BaseAdapter{
private int mGalleryItemBackground;
private Context mContext;
private final int[] mImage=VerboseMediaArhitechture.DataImg;
public GalleryAdapter(Context сontext) {
mContext = сontext;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mImage.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mImage[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return mImage[position];
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView view = new ImageView(mContext);
view.setImageBitmap(decodeSampledBitmapFromResource(MainActivity.resourcesApp, mImage[position],MainActivity.HightSreenSize/8,MainActivity.HightSreenSize/8););
//view.setImageResource(mImage[position]);
//view.setPadding(20,0, 20, 0);
view.setLayoutParams(new Gallery.LayoutParams(MainActivity.WidthSreenSize/3, LayoutParams.WRAP_CONTENT));
view.setScaleType(ImageView.ScaleType.FIT_XY);
view.setBackgroundResource(mGalleryItemBackground);
return view;
}
public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height / 2;
final int halfWidth = width / 2;
// Calculate the largest inSampleSize value that is a power of 2 and keeps both
// height and width larger than the requested height and width.
while ((halfHeight / inSampleSize) > reqHeight
&& (halfWidth / inSampleSize) > reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
}