Back to project page Thrift-box.
The source code is released under:
GNU General Public License
If you think the Android project Thrift-box listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package ru.sash0k.thriftbox.categories; //w w w .java 2s. c o m import android.annotation.TargetApi; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import ru.sash0k.thriftbox.R; import ru.sash0k.thriftbox.Utils; /** * ???????, ??????????? ???????? ????????? * * @author sash0k */ public class Categories extends LinearLayout { /** * ??????????? ???????? */ // ============================================================================ private static final int[] mImages = {R.drawable.star, R.drawable.trolley, R.drawable.filling, R.drawable.transport, R.drawable.restaurants, R.drawable.culture, R.drawable.shopping, R.drawable.mobile, R.drawable.housing, R.drawable.family, R.drawable.medicine, R.drawable.air}; private final String[] categories; private final Context mContext; // ????????? ???????????? final static int pic_width = 48; final static int pic_height = 48; final static int padding = 4; final static int selection_color = Color.rgb(0xFB, 0xD2, 0xB5); private int getPx(int value) { final float scale = getResources().getDisplayMetrics().density; return (int) ((float) value * scale + 0.5f); } // ============================================================================ private int selected = -1; public int getSelected() { return selected; } public void setSelected(int position) { if (position != selected) { Utils.log("Categories: select " + position); unselect(selected); select(position); selected = position; } } /** * ????????????? ???????? * * @param context */ // ============================================================================ public Categories(Context context) { super(context); mContext = context; categories = context.getResources().getStringArray(R.array.categories); build(); } public Categories(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; categories = context.getResources().getStringArray(R.array.categories); build(); } @TargetApi(Build.VERSION_CODES.HONEYCOMB) public Categories(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mContext = context; categories = context.getResources().getStringArray(R.array.categories); build(); } // ============================================================================ /** * ????? ???????? ????? ???????? */ // ============================================================================ private void build() { for (int i = 0; i < mImages.length; i++) addView(getImageView(i)); setSelected(0); } // ============================================================================ /** * ????????? ???????????? ?? ???????? * * @param position - ????? ???????????? ? ????????? * @return - ImageView */ // ============================================================================ ImageView getImageView(int position) { final ImageView imageView = new ImageView(mContext); imageView.setLayoutParams(new LayoutParams(getPx(pic_width), getPx(pic_height))); //imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); final int px = getPx(padding); imageView.setPadding(px, px, px, px); imageView.setTag(position); imageView.setImageResource(mImages[position]); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //v.setBackgroundColor(selection_color); setSelected((Integer) view.getTag()); } }); imageView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View view) { Toast.makeText(mContext, categories[(Integer)view.getTag()], Toast.LENGTH_SHORT).show(); return false; } }); return imageView; } // ============================================================================ private void unselect(int position) { View v = findViewWithTag(position); if (v != null) v.setBackgroundColor(Color.TRANSPARENT); } // ============================================================================ private void select(int position) { View v = findViewWithTag(position); if (v != null) v.setBackgroundColor(selection_color); } // ============================================================================ }