1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public static void makeTextViewResizable(final TextView tv, final int maxLine, final String expandText, final boolean viewMore) {
        if (tv.getTag() == null) {
            tv.setTag(tv.getText());
        }
        ViewTreeObserver vto = tv.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @SuppressWarnings("deprecation")
            @Override
            public void onGlobalLayout() {
                String text;
                int lineEndIndex;
                ViewTreeObserver obs = tv.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
                if (maxLine == 0) {
                    lineEndIndex = tv.getLayout().getLineEnd(0);
                    //text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText;
                    text = tv.getText().subSequence(0, lineEndIndex - (expandText.length())) + " " + expandText;
                } else if (maxLine > 0 && tv.getLineCount() >= maxLine) {
                    lineEndIndex = tv.getLayout().getLineEnd(maxLine - 1);
                    //text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText;
                    text = tv.getText().subSequence(0, lineEndIndex - (expandText.length())) + " " + expandText;
                } else {
                    lineEndIndex = tv.getLayout().getLineEnd(tv.getLayout().getLineCount() - 1);
                    //text = tv.getText().subSequence(0, lineEndIndex) + " " + expandText;
 
                    text = tv.getText().subSequence(0, lineEndIndex - (expandText.length())) + " " + expandText;
                }
                tv.setText(text);
                tv.setMovementMethod(LinkMovementMethod.getInstance());
                //tv.setText(addClickablePartTextViewResizable(Html.fromHtml(tv.getText().toString()), tv, lineEndIndex, expandText,viewMore), TextView.BufferType.SPANNABLE);
                tv.setText(addClickablePartTextViewResizable(Html.fromHtml(tv.getText().toString()), tv, lineEndIndex, expandText,viewMore));
            }
        });
    }
 
    private static SpannableStringBuilder addClickablePartTextViewResizable(final Spanned strSpanned, final TextView tv, final int maxLine, final String spanableText, final boolean viewMore) {
        String str = strSpanned.toString();
        SpannableStringBuilder ssb = new SpannableStringBuilder(strSpanned);
 
        if (str.contains(spanableText)) {
            ssb.setSpan(new ClickableSpan() {
                @Override
                public void onClick(View widget) {
                    tv.setLayoutParams(tv.getLayoutParams());
                    //tv.setText(tv.getTag().toString(), TextView.BufferType.SPANNABLE);
                    tv.setText(tv.getTag().toString());
                    tv.invalidate();
                    if (viewMore) {
                        makeTextViewResizable(tv, -1"...접기"false);
                    } else {
                        makeTextViewResizable(tv, 2"...더보기"true);
                    }
                }
            }, str.indexOf(spanableText), str.indexOf(spanableText) + spanableText.length(), 0);
 
        }
        return ssb;
    }
 
 
AppInfo.makeTextViewResizable(holder.binding.userContent, 2"...더보기"true);
cs

'Android' 카테고리의 다른 글

안드로이드 나만의 기본 세팅!!  (0) 2020.04.06
adb shell 명령어  (0) 2020.03.29
이미지 슬라이더  (0) 2020.03.29
스피너 값넣기  (0) 2020.03.29
선택 다이얼로그 팝업  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//이미지 슬라이더
String[] arr = {
    "https://s.pstatic.net/static/www/img/2017/sp_main_v170424.png",
    "https://s.pstatic.net/static/www/img/2017/sp_main_v170424.png",
    "https://s.pstatic.net/static/www/img/2017/sp_main_v170424.png",
    "https://s.pstatic.net/static/www/img/2017/sp_main_v170424.png",
    "https://s.pstatic.net/static/www/img/2017/sp_main_v170424.png"
};
 
mBinding.slider.removeAllSliders();
 
for(int i=0;i<arr.length;i++){
    DefaultSliderView dsv = new DefaultSliderView(this);
    dsv.image(arr[i]).setScaleType(BaseSliderView.ScaleType.FitCenterCrop);
    dsv.bundle(new Bundle());
    dsv.getBundle().putString("extra", arr[i]);
    mBinding.slider.addSlider(dsv);
}
 
 
mBinding.slider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
mBinding.slider.setCustomAnimation(new DescriptionAnimation());
mBinding.slider.setDuration(4000);
mBinding.slider.setCurrentPosition(0);
cs

'Android' 카테고리의 다른 글

adb shell 명령어  (0) 2020.03.29
TextView ...더보기  (0) 2020.03.29
스피너 값넣기  (0) 2020.03.29
선택 다이얼로그 팝업  (0) 2020.03.29
LayoutInflater  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
//스피너 값넣기
String[] list01 = {
"구해주세요", "팔아주세요", "공급밸브", "정압기", "테스트박스",
"로케이트박스", "정류기", "배류기", "수취기", "검지공"
};
 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, list01);
mBinding.row02Sp01.setAdapter(adapter);
mBinding.row02Sp01.setSelection(0);
cs

'Android' 카테고리의 다른 글

TextView ...더보기  (0) 2020.03.29
이미지 슬라이더  (0) 2020.03.29
선택 다이얼로그 팝업  (0) 2020.03.29
LayoutInflater  (0) 2020.03.29
안드로이드 Glide 적용 코드  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AlertDialog.Builder builder = new AlertDialog.Builder(IntroActivity.this);
builder.setTitle("앱 업데이트");
builder.setMessage("새로운 버전이 있습니다.\n업데이트 하시겠습니까?");
builder.setPositiveButton("확인"new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        finish();
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("market://details?id=" + getPackageName()));
        startActivity(intent);
    }
});
builder.setNegativeButton("취소"new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        finish();
    }
});
builder.show();
cs

'Android' 카테고리의 다른 글

이미지 슬라이더  (0) 2020.03.29
스피너 값넣기  (0) 2020.03.29
LayoutInflater  (0) 2020.03.29
안드로이드 Glide 적용 코드  (0) 2020.03.29
안드로이드 AsyncThread.java  (0) 2020.03.29
1
2
3
4
//LayoutInflater
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = (View) inflater.inflate(R.layout.room_group_row, null);
TextView hsGroupTitle = (TextView) v.findViewById(R.id.hs_group_title);
cs

'Android' 카테고리의 다른 글

스피너 값넣기  (0) 2020.03.29
선택 다이얼로그 팝업  (0) 2020.03.29
안드로이드 Glide 적용 코드  (0) 2020.03.29
안드로이드 AsyncThread.java  (0) 2020.03.29
안드로이드 AsyncTask 코드  (0) 2020.03.29
1
2
3
4
5
6
Glide.with(getActivity())
                .applyDefaultRequestOptions(RequestOptions.bitmapTransform(new BlurTransformation(1)))
                .load("https://i.ytimg.com/vi/" + AppInfo._TOP100.get(0).getMovieId() + "/maxresdefault.jpg")
                .error(Glide.with(getActivity()).load(R.drawable.app_icon))
                .transition(new DrawableTransitionOptions().crossFade())
                .into(iv_top100);
cs

'Android' 카테고리의 다른 글

선택 다이얼로그 팝업  (0) 2020.03.29
LayoutInflater  (0) 2020.03.29
안드로이드 AsyncThread.java  (0) 2020.03.29
안드로이드 AsyncTask 코드  (0) 2020.03.29
안드로이드 RecyclerAdapter 코드  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
import android.content.Context;
import android.os.AsyncTask;
import android.os.Handler;
 
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
 
public class AsyncThread extends AsyncTask<Void, Void, String> {
 
 
    private String mURL = "";
    private String mResult = "";
    private Handler mHandler;
 
    public AsyncThread(Context context, Handler handler, String param){
        this.mHandler = handler;
        mURL = context.getResources().getString(R.string.url);
        mURL += param;
    }
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
 
 
    @Override
    protected String doInBackground(Void... params) {
 
        try {
            URL url = new URL(mURL);
            Dlog.d(mURL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Accept-Charset""UTF-8"); // Accept-Charset 설정.
            conn.setRequestProperty("Context_Type""application/x-www-form-urlencoded;cahrset=UTF-8");
            conn.setRequestMethod("GET");
 
            if (conn.getResponseCode() != HttpURLConnection.HTTP_OK)
                return null;
 
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String line;
            String str = "";
            while ((line = reader.readLine()) != null){
                str += line;
            }
            return str;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
 
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        try {
            mResult = result;
            mHandler.sendEmptyMessage(0);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
 
    public String getResult(){
        return mResult;
    }
}
 
cs

'Android' 카테고리의 다른 글

LayoutInflater  (0) 2020.03.29
안드로이드 Glide 적용 코드  (0) 2020.03.29
안드로이드 AsyncTask 코드  (0) 2020.03.29
안드로이드 RecyclerAdapter 코드  (0) 2020.03.29
안드로이드 기본 Flagment 코드  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        try {
            if (msg != null) {
 
                if(mAsyncThread.getResult() != null) {
 
                    JSONArray array = new JSONArray(mAsyncThread.getResult());
 
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject obj = array.getJSONObject(i);
 
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            mAsyncThread = null;
            super.handleMessage(msg);
        }
    }
};
 
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("LAT""");
String param = "";
try {
    param = URLMaker.hashToUrl(hashMap);
}catch (Exception e){
    e.printStackTrace();
}
mAsyncThread = new AsyncThread(getActivity(), handler, "/get_hp/?" + param);
mAsyncThread.execute();
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mList = new ArrayList<>();
recycler_view.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
mRecyclerAdapter = new RecyclerAdapter();
recycler_view.setAdapter(mRecyclerAdapter);
recycler_view.setItemAnimator(new DefaultItemAnimator());
 
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
    public RecyclerAdapter() {
 
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.bld_row, parent, false);
        return new ViewHolder(view);
    }
 
    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        holder.bldName.setText(mList.get(position));
    }
 
    @Override
    public int getItemCount() {
        return mList.size();
    }
 
    public class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.bld_name) TextView bldName;
 
        public ViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
 
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Main extends Fragment {
    private Unbinder unbinder;
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_main, container, false);
        unbinder = ButterKnife.bind(this, view);
        return view;
    }
 
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }
 
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
 
 
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class SampleActivity extends AppCompatActivity {
     private AsyncThread mAsyncThread;
 
     @BindView(R.id.root)
     LinearLayout root;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
         //팝업창 만들때!!
         //extends Activity
         //android:theme="@android:style/Theme.Translucent"
         supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
 
         setContentView(R.layout.activity_room_list);
         ButterKnife.bind(this);
 
         //매니페스트에서 세로 고정하면 에러남.. 여기서 해줌
         try {
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         } catch (Exception e) {
             e.printStackTrace();
         }
         //
 
         initView(root);
 
     }
 
     private void initView(View view) {
         SetViewScale setvs = new SetViewScale(this);
 
         if (view instanceof ViewGroup) {
             ViewGroup group = (ViewGroup) view;
             for (int i=0; i<group.getChildCount(); i++) {
                 View childView = group.getChildAt(i);
                 initView(childView);
             }
         } else {
             if (view.getLayoutParams().width > 0) {
                 setvs.setViewScale(view, view.getLayoutParams().width, view.getLayoutParams().height);
             }
         }
     }
 
     @Override
     public void onBackPressed() {
         finish();
         overridePendingTransition(00);
 
     }
 
     @OnClick(R.id.btn_back)
         public void back() {
             onBackPressed();
         }
}
cs

'Android' 카테고리의 다른 글

안드로이드 AsyncTask 코드  (0) 2020.03.29
안드로이드 RecyclerAdapter 코드  (0) 2020.03.29
안드로이드 기본 Flagment 코드  (0) 2020.03.29
안드로이드 기본 레이아웃 설정  (0) 2020.03.29
build.gradle(Module: app) 세팅  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/root"
    android:orientation="vertical"
    android:background="#EFEFEF"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
            android:background="@color/colorPrimaryDark"
            android:layout_width="match_parent"
            android:layout_height="60dp">
            <LinearLayout
                android:id="@+id/btn_back"
                android:gravity="center"
                android:layout_width="60dp"
                android:layout_height="60dp">
                <ImageView
                    android:src="@drawable/arrow_left"
                    android:layout_width="24px"
                    android:layout_height="40px" />
            </LinearLayout>
 
            <TextView
                android:text="로그인"
                style="@style/title"
                android:textColor="#FFF"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RelativeLayout>
 
</LinearLayout>
cs

'Android' 카테고리의 다른 글

안드로이드 AsyncTask 코드  (0) 2020.03.29
안드로이드 RecyclerAdapter 코드  (0) 2020.03.29
안드로이드 기본 Flagment 코드  (0) 2020.03.29
안드로이드 기본 엑티비티 코드  (0) 2020.03.29
build.gradle(Module: app) 세팅  (0) 2020.03.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//dexOptions 추가 : OutOfMemoryError
dexOptions {
jumboMode true
javaMaxHeapSize "4g"
}
 
dataBinding {
enabled = true
}
 
//이미지 캐싱 로드
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'jp.wasabeef:glide-transformations:2.0.0'
 
//스와이프 새로고침
implementation 'com.github.orangegangsters:swipy:1.2.2@aar'
 
//퍼미션체크
implementation 'com.github.ParkSangGwon:TedPermission:v1.0.11'
 
//이미지슬라이더
implementation 'com.daimajia.slider:library:1.1.5@aar'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.nineoldandroids:library:2.4.0'
 
//사진
implementation 'com.github.bumptech.glide:glide:3.7.0'
 
//아바타
implementation 'jp.wasabeef:glide-transformations:2.0.0'
 
//파일 업로드
implementation 'com.commonsware.cwac:provider:0.5.0'
 
//이미지 크롭
implementation 'com.yalantis:ucrop:2.2.0'
cs

+ Recent posts